如何在R语言中统计向量中所有重复值的总数量?
统计向量中所有重复元素的总数
针对你的需求,这里有几种直接的解决方案:
方法一:基于table的基础R方法
先通过table()获取每个元素的出现频数,筛选出频数大于1的项,再对这些频数求和,就能得到所有重复元素的总数:
x <- c(1, 1, 4, 5, 4, 6, 1, 1) tab <- table(x) sum(tab[tab > 1]) #> [1] 6
方法二:使用dplyr的 tidyverse 风格
如果你习惯tidyverse的语法,可以通过分组计数后筛选统计行数:
library(dplyr) x %>% tibble(value = .) %>% group_by(value) %>% filter(n() > 1) %>% nrow() #> [1] 6
方法三:逻辑匹配法
先找出所有出现多次的数值,再统计原向量中属于这些数值的元素总数:
repeat_vals <- names(table(x)[table(x) > 1]) sum(x %in% repeat_vals) #> [1] 6
补充说明你之前的错误原因:
sum(duplicated(x)):统计的是元素重复出现的次数(即每个元素除第一次出现外的重复次数),例子里1重复3次、4重复1次,3+1=4,所以得到4。sum(table(x)-1):和上面逻辑类似,是每个重复数值的“额外出现次数”总和,同样得到4。nrow(...):统计的是存在重复的数值的个数,例子里只有1和4两个数值重复,所以得到2。
内容的提问来源于stack exchange,提问作者Quinten
相关产品推荐
相关产品推荐

