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

如何无需重复代码实现多列无交集的group_by分组统计?

解决dplyr中重复分组汇总的问题

要避免重复编写分组汇总代码,可以借助purrr包的遍历函数,一次性处理多个分组变量:

方法一:使用purrr::map遍历分组变量

library(dplyr)
library(purrr)

# 定义需要分组的变量名
group_cols <- c("cyl", "am")

# 遍历每个分组变量执行汇总
map(group_cols, ~ {
  mtcars %>%
    group_by(.data[[.]]) %>%
    summarise(mean_disp = mean(disp))
})

运行后会返回一个列表,其中两个元素分别对应按cyl和am分组的汇总结果,和你期望的输出一致:

  • 第一个元素是按cyl分组的tibble:
    # A tibble: 3 × 2
        cyl mean_disp
      <dbl>     <dbl>
    1     4      105.
    2     6      183.
    3     8      353.
    
  • 第二个元素是按am分组的tibble:
    # A tibble: 2 × 2
         am mean_disp
       <dbl>     <dbl>
    1     0      290.
    2     1      144.
    

补充说明

  • .data[[.]]是dplyr中引用字符串格式变量的标准方式,确保遍历过程中能正确识别分组列。
  • 如果希望直接打印每个结果而非返回列表,可以把map换成walk,它会直接输出每个分组的汇总结果:
    walk(group_cols, ~ {
      print(mtcars %>%
              group_by(.data[[.]]) %>%
              summarise(mean_disp = mean(disp)))
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:40:31