如何保留R数据框中rn列重复出现次数大于1的对应记录
问题原因
你原来的代码存在两个核心错误:
rowSums(!is.na(mydf[-1]))统计的是每行除第一列外非缺失值的个数,完全不是rn列每个值的出现频次,逻辑不符合你的需求- 第二行筛选时操作的对象是
df,但你创建的数据集叫mydf,对象名不一致会直接报错
正确实现方法
方法1:基础R实现
# 统计每个rn值的出现频次 rn_freq <- table(mydf$rn) # 筛选出出现次数大于1的rn对应的所有记录 mydf2 <- mydf[mydf$rn %in% names(rn_freq[rn_freq > 1]), ]
运行后保留的记录对应的rn为AAAA(出现4次)、CDSD(出现2次)、RRR(出现2次),共8条结果,符合预期。
方法2:dplyr包实现(语法更简洁)
library(dplyr) mydf2 <- mydf %>% group_by(rn) %>% filter(n() > 1) %>% ungroup()
内容的提问来源于stack exchange,提问作者nik
相关产品推荐
相关产品推荐

