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

如何用R的dplyr和writexl按分组导出数据至多Sheet Excel

用writexl按分组导出数据到Excel多工作表

核心逻辑:writexl::write_xlsx()支持传入命名列表,列表的每个元素对应一个工作表,列表名称就是工作表的名称。只需将分组后的数据集整理成这种结构,即可一键导出,无需手动处理每个分组。

步骤与代码示例

1. 基础实现(针对mtcars数据集)

library(dplyr)
library(writexl)

# 按cyl分组拆分数据,得到包含3个数据框的列表
cyl_groups <- mtcars %>% 
  group_split(cyl, .keep = TRUE)

# 给列表元素命名为对应的cyl值(转为字符格式,符合Excel工作表命名要求)
names(cyl_groups) <- as.character(c(4, 6, 8))

# 导出到指定Excel文件
write_xlsx(cyl_groups, path = "mtcars分组数据.xlsx")

2. 通用版适配大型数据集

如果你的数据集分组超过20个,建议用更灵活的方式自动获取分组名称,避免手动输入:

# 替换为你的实际数据集和分组变量
your_data <- mtcars
group_col <- "cyl"

# 自动拆分并命名分组列表
grouped_data_list <- your_data %>%
  group_split(.data[[group_col]], .keep = TRUE) %>%
  setNames(as.character(unique(your_data[[group_col]])))

# 导出
write_xlsx(grouped_data_list, path = "分组数据汇总.xlsx")

关键说明

  • group_split(.keep = TRUE)会保留分组变量cyl,如果不需要可以去掉.keep = TRUE参数;
  • 列表名称必须是字符格式,所以用as.character()转换分组值,确保Excel能识别为合法的工作表名称;
  • 无论分组数量多少,该逻辑都能自动生成对应工作表,完全避免手动分配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:31:34