在R中如何删除data.frame中与前一行指定列值重复的行
R 删除x列与前一行取值重复的相邻行
基础R实现
直接通过判断相邻值差值筛选行:
# 构造保留行的逻辑向量,第一行默认保留,后续行x值与前一行不同则保留 keep_rows <- c(TRUE, diff(df$x) != 0) res <- df[keep_rows, ]
输出结果和你要求的预期完全一致:
row x y 1 1 1 left 2 2 2 left 3 3 3 right 5 5 4 right 6 6 2 right
dplyr 实现
用lag()函数调取前一行x值对比筛选,语法更直观:
library(dplyr) res <- df %>% # 第一行直接保留,其余行对比前一行x值 filter(row_number() == 1 | x != lag(x))
你可以根据自己的使用习惯选择任意一种方案。
内容的提问来源于stack exchange,提问作者mbabb4
相关产品推荐
相关产品推荐

