如何在R中对tibble列表做两类汇总并分表写入对应Excel
处理tibble列表并导出统计结果到Excel
所需R包
需要加载以下包完成任务:
dplyr:用于数据统计计算purrr:用于批量遍历处理列表openxlsx:用于生成和写入Excel文件
步骤1:准备数据(示例)
如果已有现成的tibble列表,可跳过此步骤。以下是创建示例列表的代码:
library(dplyr) library(purrr) library(openxlsx) # 构建包含两个tibble的示例列表 tibble_list <- list( tibble1 = tibble(colA = c("A", "B", "A", "C"), colC = c("X", "X", "Y", "Y")), tibble2 = tibble(colA = c("B", "B", "A"), colC = c("Z", "X", "Z")) )
步骤2:定义统计函数
编写函数对单个tibble的colA和colC分别统计各类项的总数:
summarize_tibble <- function(tb) { # 统计colA的类别频数 colA_summary <- tb %>% count(colA, name = "total") %>% rename(category = colA) %>% mutate(type = "colA") # 统计colC的类别频数 colC_summary <- tb %>% count(colC, name = "total") %>% rename(category = colC) %>% mutate(type = "colC") # 返回两个汇总结果的列表 list(colA_summary = colA_summary, colC_summary = colC_summary) }
步骤3:批量处理tibble列表
使用map函数遍历整个列表,批量生成统计结果:
# 对列表中每个tibble执行统计 results_list <- map(tibble_list, summarize_tibble)
步骤4:导出到Excel文件
使用walk2函数将每个tibble的统计结果写入对应名称的Excel工作簿,每个汇总结果作为独立工作表:
# 遍历结果列表,生成对应Excel文件 walk2(names(results_list), results_list, function(tb_name, tb_results) { # 创建新工作簿 wb <- createWorkbook() # 添加colA统计工作表并写入数据 addWorksheet(wb, sheetName = "colA_summary") writeData(wb, sheet = "colA_summary", x = tb_results$colA_summary) # 添加colC统计工作表并写入数据 addWorksheet(wb, sheetName = "colC_summary") writeData(wb, sheet = "colC_summary", x = tb_results$colC_summary) # 保存工作簿,文件名与tibble名称一致 saveWorkbook(wb, file = paste0(tb_name, ".xlsx"), overwrite = TRUE) })
说明
- 执行完代码后,当前工作目录下会生成与列表中每个tibble同名的Excel文件
- 每个Excel文件包含两个工作表:
colA_summary(colA各类项的统计结果)和colC_summary(colC各类项的统计结果)
内容的提问来源于stack exchange,提问作者ksweet
相关产品推荐
相关产品推荐

