R语言如何统计dataframe中完全重复行的出现次数
解决方案
你当前使用的duplicated(df)只能筛选出重复出现的行,无法直接统计每类重复行的出现次数,以下是3种适配你70万行级数据量的可行方案:
1. 基础R实现(无需安装额外包)
# 按所有列分组统计每行出现次数 duplicates <- aggregate(. ~ ., data = df, FUN = length) # 重命名计数列为times colnames(duplicates)[ncol(duplicates)] <- "times" # 过滤仅保留出现次数≥2的重复行 duplicates <- duplicates[duplicates$times >= 2, ]
2. dplyr实现(代码更易读)
library(dplyr) duplicates <- df %>% # 按全部列分组 group_by(across(everything())) %>% # 统计每组出现次数 summarise(times = n(), .groups = "drop") %>% # 筛选仅保留重复行 filter(times >= 2)
3. data.table实现(大数据量下性能最优)
对于你近70万行的数据集,该方案运行速度最快:
library(data.table) # 将数据框转为data.table格式 setDT(df) # 按所有列分组计数,过滤重复行 duplicates <- df[, .(times = .N), by = names(df)][times >= 2]
以上三种方案跑你给出的示例数据,都能得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Jane Miller
相关产品推荐
相关产品推荐

