如何在R语言中筛选并排序多列重复的data.frame行?
筛选并排序R语言data.frame中完全重复的行
原始数据
file = read.table(text = "sex age num M 32 5 F 31 2 M 91 2 M 30 1 M 23 1 F 19 1 F 31 2 F 21 2 M 32 5 F 65 3 M 24 5", header = T, sep = "")
需求
筛选出sex、age、num三列取值完全重复的所有行,并按重复组排序,得到如下结果:
result = read.table(text = "sex age num M 32 5 M 32 5 F 31 2 F 31 2", header = T, sep = "")
解决方案(使用dplyr)
通过分组筛选直接保留所有重复组的行,无需单独组合distinct或duplicated:
library(dplyr) result <- file %>% group_by(sex, age, num) %>% filter(n() >= 2) %>% # 保留包含至少2行的重复组 arrange(sex, age, num) %>% # 按重复组排序 ungroup() # 输出结果 print(result)
代码说明
group_by(sex, age, num):将三列取值完全一致的行归为同一组filter(n() >= 2):筛选出存在重复的组(行数≥2),保留组内全部行arrange(sex, age, num):按分组列排序,确保同一重复组的行连续排列ungroup():取消分组,还原为普通data.frame结构
内容的提问来源于stack exchange,提问作者Parseltongue
相关产品推荐
相关产品推荐

