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

在R中基于数据框列表按District生成含多子表的XLSX文件

实现按District拆分生成多工作表Excel文件(R + openxlsx)

完全可以实现这个需求,核心思路是先提取所有唯一的District,再逐个循环生成对应Excel文件,每个文件中分别处理one和two两个工作表的数据(无对应数据时生成空表)。

示例代码

# 加载依赖包
library(openxlsx)

# 构造模拟的list_data数据框列表(模拟你的真实数据结构)
list_data <- list(
  one = data.frame(
    District = c("A", "A", "B"),
    Value1 = c(10, 20, 30)
  ),
  two = data.frame(
    District = c("B", "C", "C"),
    Value2 = c(40, 50, 60)
  )
)

# 提取所有唯一的District(合并两个数据框的District列)
all_districts <- unique(c(list_data$one$District, list_data$two$District))

# 循环每个District生成Excel文件
for (dist in all_districts) {
  # 筛选当前District在one中的数据,无数据则生成空数据框(保留原结构)
  sheet_one <- if (dist %in% list_data$one$District) {
    subset(list_data$one, District == dist)
  } else {
    # 生成和one结构一致的空数据框
    list_data$one[0, ]
  }
  
  # 筛选当前District在two中的数据,无数据则生成空数据框(保留原结构)
  sheet_two <- if (dist %in% list_data$two$District) {
    subset(list_data$two, District == dist)
  } else {
    list_data$two[0, ]
  }
  
  # 构造要写入的工作表列表
  sheets_to_write <- list(one = sheet_one, two = sheet_two)
  
  # 写入Excel文件,文件名以District命名
  write.xlsx(sheets_to_write, file = paste0(dist, ".xlsx"), rowNames = FALSE)
}

预期效果

  • 生成A.xlsx:包含one工作表(有District A的2条数据)和two工作表(空表,保留原数据列名)
  • 生成B.xlsx:包含one工作表(District B的1条数据)和two工作表(District B的1条数据)
  • 生成C.xlsx:包含one工作表(空表)和two工作表(District C的2条数据)

(注:可直接打开生成的Excel文件查看对应效果,每个文件的两个工作表结构与上述描述一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:02