如何计算R语言数据框中不同变量值组合的出现频次
R统计数据框指定列唯一组合的出现次数
你不需要先调用distinct()再手动统计,直接使用dplyr包的count()函数即可一步得到所有唯一组合和对应的出现次数,适配万级甚至更高量级的组合场景:
library(dplyr) # 你的测试参考数据 n=1000000 X = rbinom(size=1,n,p=0.3) U = rbinom(size=1,n,p=0.5) Y = rbinom(size=1,n,p=0.1) dat <- data.frame(X, Y, U) # 统计X、U两列的所有唯一组合的出现次数 count_res <- dat %>% count(X, U, name = "出现次数")
参数说明
- 你可以将
X, U替换为任意需要统计的列组合,支持多列分组 name参数可自定义统计次数字段的列名- 如果不需要结果按分组列排序,可添加参数
sort = FALSE提升运行效率
其他可选实现方案
- base R原生实现:
# 输出为表格格式 table(interaction(dat$X, dat$U)) # 输出为数据框格式 as.data.frame(table(dat[,c("X", "U")]))
- 适合同时做其他分组统计的写法:
count_res <- dat %>% group_by(X, U) %>% summarise(出现次数 = n(), .groups = "drop")
- 超大数据量下推荐使用data.table,性能更高:
library(data.table) setDT(dat) count_res <- dat[, .(出现次数 = .N), by = .(X, U)]
内容的提问来源于stack exchange,提问作者gecko
相关产品推荐
相关产品推荐

