【问题标题】:How to create a loop with openxslx and R?如何使用 openxslx 和 R 创建一个循环?
【发布时间】:2021-03-14 21:24:49
【问题描述】:

我有两个数据框。一个是原始数据,另一个是聚合数据。

我的两个数据框是 iris 数据集(iris 和 iris_summary)的变体

iris$ID <- 1:150

iris_summary <- iris %>% 
  group_by(Species) %>% 
  summarize(
    "Count of Species" = n(),
    "Average Sepal.Length" = mean(Sepal.Length),
    "Average Sepal.Width" = mean(Sepal.Width),
    "Average Petal.Length" = mean(Petal.Length),
    "Average Petal.Width" = mean(Petal.Width)
    )

现在我有一个 Excel 工作簿,我想将它加载到我的环境中,该工作簿具有预设格式和 4 张工作表。

表 1:说明 表 2:汇总表 表 3:原始数据 表 4:联系信息

我需要为每个“物种”(setosa、veriscolor 和 virginica)创建 3 个单独的 excel 文件。

在表 2 中:我需要包含每个物种的汇总统计数据。 这是汇总表中“setosa”统计数据的示例

在表 3 中:我只需要包含“setosa”的原始数据。

表 1 和表 4 可以单独放置。

一个看起来像什么的循环?我需要一个 excel 文件 - 对 Iris 数据集中的所有 3 个物种使用这个格式化的工作簿。我的实际数据有大约 30 个分类变量(与 iris 数据集中的 3 个“物种”相比),手动复制和粘贴它们需要几个小时。

已尝试更新代码

wb <- loadWorkbook("Sample Workbook.xlsx")

for (i in iris$Species){
  print(i)
  FilterData <- iris %>% filter(Species == i) 
  filename <- paste0(i, "-data.xlsx")
  
  writeData(wb, sheet="Summary Table", i)
}

【问题讨论】:

  • 您能否分享一些您在创建/更新 Excel 文件方面已经尝试过的代码?
  • stackoverflow.com/q/34172353/680068 的可能重复项?
  • @deschen 我没有编写 excel 文件,我只是在 excel 中编写的。
  • @zx8754 看起来方向正确,我可以将 excel 文件加载到我的环境中,但我不确定如何创建一个循环,让我从中创建多个 excel 文件我需要的方式。
  • 使用forloop,用不同的名字保存文件。 (未测试)

标签: r dplyr openxlsx


【解决方案1】:

我能够使用此代码解决我的问题

#Code Works for sheet 2 & 3
for (i in iris_summary$Species){
  print(i)
  FilterData <- iris_summary %>% filter(Species == i) 
  FilterData2 <- iris %>% filter(Species == i)
  
  wb <- loadWorkbook("Sample Workbook.xlsx")
  
  writeData(wb, 2, FilterData)
  writeData(wb, 3, FilterData2)
  saveWorkbook(wb, file = paste0(i, "-data.xlsx"), overwrite = TRUE)
}


【讨论】:

  • 太好了,正是我的想法,抱歉无法发布完整的答案。
  • 我很感激,不用担心。经过反复试验和研究,但我学会了如何去做。
  • 很好,请随意接受您自己的答案,除非您仍然期待其他解决方案。
猜你喜欢
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多