You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于第三列值统计对第二列汇总的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:06