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

如何用map类函数实现按cyl与mtcars_list各变量分组汇总?

按cyl与变量列表逐一组合分组计算均值的实现方案

你可以借助purrr包的map()函数(属于tidyverse生态),遍历变量列表中的每个元素,将其与固定分组变量cyl组合,完成分组汇总。以下是具体实现:

完整代码示例

library(tidyverse)

# 定义变量列表、固定分组变量、待汇总变量
mtcars_list <- c("vs","am","gear","carb")
fixed_group <- "cyl"
summarise_var <- "disp"

# 遍历变量列表,生成所有组合的汇总结果
final_result <- mtcars_list %>%
  map_dfr(function(current_var) {
    mtcars %>%
      # 将字符型变量名转换为dplyr可识别的符号,实现动态分组
      group_by(!!sym(fixed_group), !!sym(current_var)) %>%
      # 计算disp的均值,同时清除分组状态
      summarise(mean_disp = mean(!!sym(summarise_var)), .groups = "drop") %>%
      # 可选:添加列标记当前是与哪个变量组合的分组
      mutate(combined_with = current_var)
  })

# 查看结果
print(final_result)

代码说明

  • map_dfr():遍历mtcars_list的同时,自动将所有子结果合并为一个数据框(替代map()+bind_rows()的组合,更简洁)
  • !!sym():把字符型的变量名转换成dplyr语法能识别的符号变量,实现动态分组的需求
  • .groups = "drop":确保汇总后清除分组状态,返回普通数据框,避免后续操作的潜在问题
  • combined_with列:可选字段,用于区分每条结果是cyl与哪个变量的组合,不需要可直接删除该行

运行后就能得到所有cyl与mtcars_list中变量组合的disp均值,比如cyl=6且vs=0、cyl=4且vs=1等所有场景的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:17:06