微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 R 中的自定义函数和列表创建包含多个工作表的 Excel 文件

如何解决使用 R 中的自定义函数和列表创建包含多个工作表的 Excel 文件

我正在尝试创建多个 Excel 数据提取,每个文件中有多个工作表。我有一个目前正在运行的解决方案。但是,编码感觉很复杂,我觉得有一种更好的方法可以实现相同的最终结果。

以下是关于我正在努力实现的目标的非常基本的表示。要重新创建代码,请更改嵌入在最后一个“lapply”函数中的文件路径。

工作示例

library(tidyverse)
library(openxlsx)

df <- data.frame(group_1 = c('a','b','c'),var_1 = c(1:9))

df_list <- split(df,df$group_1)


sum_summary_fn <- function(df,i){
  
  df[[i]] %>%
    group_by(group_1) %>% 
    summarize(total = sum(var_1)) %>% 
    ungroup()
}

mean_summary_fn <- function(df,i){
  
  df[[i]] %>%
    group_by(group_1) %>% 
    summarize(avg = mean(var_1)) %>% 
    ungroup()
}


sum_summary_list <- lapply(seq_along(df_list),function(i) FUN = sum_summary_fn(df_list,i))  
mean_summary_list <- lapply(seq_along(df_list),function(i) FUN = mean_summary_fn(df_list,i)) 

lapply(seq_along(df_list),function(i){
  
  file_location <- paste0("CHANGE FILE PATH",names(df_list[i]),".xlsx")
  
  wb <- createWorkbook()
  
  addWorksheet(wb,sheet = 'sum_summary')
  writeData(wb,sheet = 'sum_summary',x = sum_summary[[i]])
  
  addWorksheet(wb,sheet = 'mean_summary')
  writeData(wb,sheet = 'mean_summary',x = mean_summary[[i]])
  
  addWorksheet(wb,sheet = 'raw_data')
  writeData(wb,sheet = 'raw_data',x = df_list[[i]])

  saveWorkbook(wb = wb,file = file_location,overwrite = T)
  })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。