如何统计数据集中两列组合后重复的行数?(R语言)
检查两列组合的重复项并统计数量(R语言)
你当前的代码存在两处关键错误,导致结果不可信:
- 用单引号包裹了表达式,这让
duplicated()处理的是一个字符串文本,而不是你数据里的两列组合 &&是用于单个逻辑值的判断运算符,处理向量应该用&,但这里根本不需要逻辑运算,直接传入两列组成的数据集即可
以下是正确的实现方法,按需选择:
基础R实现
统计所有重复出现的行数(即除第一次出现外,后续重复的次数总和)
sum(duplicated(Vehicles_Sub[, c("accident_index", "vehicles_reference")]))
统计有多少种不同的重复组合(即出现次数≥2的组合数)
# 先生成组合的频次表,再统计频次>1的组合数量 sum(table(Vehicles_Sub[, c("accident_index", "vehicles_reference")]) > 1)
tidyverse/dplyr实现(更直观,适合后续分析)
如果你习惯使用tidyverse生态的工具:
library(dplyr) # 查看所有重复组合及其出现次数、重复次数 Vehicles_Sub %>% count(accident_index, vehicles_reference, name = "出现总次数") %>% filter(出现总次数 > 1) %>% mutate(重复次数 = 出现总次数 - 1) # 直接统计所有重复行的总数(和基础R的sum(duplicated(...))结果一致) Vehicles_Sub %>% add_count(accident_index, vehicles_reference) %>% filter(n > 1) %>% nrow()
说明:
- 第一种基础R方法返回的是重复行的总数量(比如某组合出现3次,会被计入2次重复)
- 如果只想知道有多少组不同的ID组合存在重复,用
sum(table(...)) >1的方式
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

