基于第三列值统计对第二列汇总的R语言dplyr实现问题
解决分组统计Age和year组合计数的问题
你的需求是按Age和year的组合分组,统计每组的记录数量,但原代码使用n_distinct(year)是错误的——这个函数用来统计每组内year的唯一值个数,而非每组的总记录数。
正确方法1:使用group_by() + summarise(n())
library(dplyr) df %>% group_by(Age, year) %>% summarise(count = n(), .groups = "drop")
这里的n()会返回当前分组的行数,也就是该Age+year组合的记录数量;.groups = "drop"用来取消分组结构,得到整洁的结果数据框。
更简洁的方法2:直接使用count()函数
dplyr提供了count()函数,可以一步完成分组+计数的操作:
library(dplyr) df %>% count(Age, year, name = "count")
name参数用来指定计数列的列名,默认是n,可以改成你需要的名称。
输出结果
两种方法都会得到符合期望的结构化结果:
Age year count 1 60 1990 2 2 75 2000 2 3 75 2030 1
如果需要和示例里的无表头格式一致,可再用write.table()输出:
result <- df %>% count(Age, year, name = "count") write.table(result, col.names = FALSE, row.names = FALSE, sep = " ")
执行后会输出:
60 1990 2 75 2000 2 75 2030 1
内容的提问来源于stack exchange,提问作者Kousalya Devi
相关产品推荐
相关产品推荐

