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

标签 r dataframe dplyr

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

开始于

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/

相关文章:

r - 获取数据框中列的每个项目的频率和第一次出现

r - dplyr 同时过滤多列上的多个数字

r - 将列值与第一行进行比较并保留 R 中的原始值

r - R中一个变量与所有其他变量的相关性

python - 如何使用 pandas 根据唯一天数删除记录?

python - Pandas 在 groupby 层次结构上应用样式

python - 填充空行

按R中的多列排名

R 精确选择基于 %in%

在 R 中按月检索客户的独特比例