gpt4 book ai didi

r - 根据前一行中多个变量的值对行进行条件过滤

转载 作者:行者123 更新时间:2023-12-04 12:11:05 24 4
gpt4 key购买 nike

我正在尝试对数据框进行子集化,以仅保留两个变量的值与先前保留的行的值不同的行。

开始于

df<-structure(list(x = c("ARM018", "ARM018", "ARM018", "ARM021", 
"ARM021"), y = c("ARF014", "ARF027", "ARF028",
"ARF014", "ARF020")), class = "data.frame", row.names = c(NA,
-5L))

df

我想得到

df_wanted <-structure(list(x = c("ARM018", "ARM021"), y = c("ARF014", 
"ARF020")), class = "data.frame", row.names = c(NA, -2L))

df_wanted

因为 x 和 y 的值在两行中不同

我曾假设 dplyr 包中的 lag 函数可以提供帮助并且以下代码将返回 df_wanted 但它确实返回了预期的结果

library(dplyr)

df_attempt<-df %>%
filter(lag(x)!=x & lag(y)!=y)


有没有使用滞后函数解决这个问题的方法?

最佳答案

dplyr:cumsumdplyr:lag 的组合可以达到目的:

library(dplyr)
df %>% mutate_all(as.character) %>%
filter(cumsum(x != x[1] & y != y[1]) !=
lag(cumsum(x != x[1] & y != y[1]), default = -1))

x y
1 ARM018 ARF014
2 ARM021 ARF020

关于r - 根据前一行中多个变量的值对行进行条件过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55680057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com