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

在R语言中获取分组计数的汇总统计信息的方法

解决分组计数的汇总统计问题

你要的是对分组后的计数结果做汇总统计,核心问题是之前的分组状态没取消,且mutate不适合做聚合类汇总(它是给每行新增数据),下面给几种简单实现方法:

方法1:取消分组后用summarize聚合

先按pid分组计数,取消分组后对计数列n做各类统计:

library(tidyverse)

df = tibble(pid = c(1,2,2,3,3,3,4,4,4,4), y = rnorm(10))

df %>% 
  group_by(pid) %>% 
  count(pid) %>% 
  ungroup() %>%  # 必须取消分组,否则会按原pid分组统计(无意义)
  summarize(
    最小计数 = min(n),
    最大计数 = max(n),
    平均计数 = mean(n),
    中位数计数 = median(n),
    分组总数 = n()
  )

运行后会得到一行汇总结果,包含你需要的各类统计值。

方法2:更简洁的直接计数+汇总

count(pid)本身已经是按pid分组后的计数结果,不需要额外group_by,可以简化成:

df %>% 
  count(pid) %>% 
  summarize(
    min_n = min(n),
    max_n = max(n),
    mean_n = round(mean(n), 2),
    total_groups = n()
  )

方法3:直接生成标准summary输出

如果想要R原生的summary结果(包含四分位数等),可以直接提取计数列后调用summary:

df %>% count(pid) %>% pull(n) %>% summary()

输出会是类似这样的标准统计结果:

Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       2       2       3       4 

为什么之前的mutate会报错?

mutate的作用是给原数据的每一行新增列,而summary(n)返回的是长度为6的结果(min、1st Qu.、median、mean、3rd Qu.、max),和原数据的4行维度不匹配,所以会抛出错误。而summarize是把数据聚合为一行(或按指定分组聚合),刚好适合这类汇总需求。

内容的提问来源于stack exchange,提问作者aarsmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:27