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

在R语言中如何高效获取分组计数与总体计数的合并结果?

精简实现班级与整体性别分布统计

你可以通过dplyr的代码块结合bind_rows一步完成需求,无需创建独立的中间对象再合并,代码更紧凑高效:

精简代码

library(dplyr)

# 示例数据集
test_data <- tibble(id = c(1, 1, 2, 2, 2, 3, 3, 3),
                    class = c("h", "h", "m", "h", "s", "m", "h", "h"),
                    gender = c("m", "m", "f", "f", "f", "m", "m", "m"))

# 一步生成包含班级分组与整体统计的结果
gender_stats <- test_data %>%
  distinct(id, class, gender) %>%
  {
    # 班级维度的性别计数
    class_counts <- group_by(., class) %>% count(gender) %>% ungroup()
    # 整体维度的性别计数
    overall_counts <- distinct(., id, gender) %>% count(gender) %>% mutate(class = "overall")
    # 合并两类统计结果
    bind_rows(class_counts, overall_counts)
  }

gender_stats

代码说明

  • 先用distinct(id, class, gender)去重,保证每个学生在对应班级的性别记录只统计一次
  • 利用{}代码块在管道流内同时处理两个统计分支,避免生成全局中间变量
  • 用bind_rows替代原代码的full_join,因为两类统计结果结构完全一致,合并效率更高

输出结果

# A tibble: 6 × 3
  class   gender     n
  <chr>   <chr>  <int>
1 h       m          2
2 m       f          1
3 m       m          1
4 s       f          1
5 overall m          2
6 overall f          1

内容的提问来源于stack exchange,提问作者J.Sabree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:25:24