将数据框列表写入多张表格中的Excel
我有一个数据框,我运行一些分析,我想将结果导出到Excel文件。 一个工作簿每个组和每个分析结果在一个单独的选项卡上。 我宁愿使用openxlsx
进行导出,将java排除在外。
library(plyr) library(dplyr) library(openxlsx) df <- iris # Analysis 1 results1 <- df %>% group_by(Species) %>% summarise(count = n()) # Analysis 2 results2 <- df %>% group_by(Species) %>% summarise(mean.sl = mean(Sepal.Length), mean.sw = mean(Sepal.Width))
我希望的导出输出将是三个Excel工作簿, setosa.xlsx
, versicolor.xlsx
和virginica.xlsx
; 每个都包含两个工作表“results1”和“results2”,只包含他们的组内结果。 意味着杂色的Excel文件中没有setosa行。
我试图将results1
和results2
分成数据框的列表,以便与write.xlsx
使用lappy
,但我无法使其工作。
r1_list <- dlply(results1, .(Species)) r2_list <- dlply(results2, .(Species))
其他build议?
示例代码
library(plyr) library(dplyr) library(openxlsx) setwd("c:/r") df <- iris # Analysis 1 results1 <- df %>% group_by(Species) %>% summarise(count = n()) # Analysis 2 results2 <- df %>% group_by(Species) %>% summarise(mean.sl = mean(Sepal.Length), mean.sw = mean(Sepal.Width)) #get the unique species sp <- unique(df$Species) createSpreadsheets <- function(species,r1,r2){ ## Create new workbooks wb <- createWorkbook() ## Create the worksheets addWorksheet(wb, sheetName = "Results1" ) addWorksheet(wb, sheetName = "Results2" ) ## Write the data writeData(wb, "Results1", r1) writeData(wb, "Results2", r2) ## Save workbook to working directory saveWorkbook(wb, file = paste(species,".xlsx", sep=""), overwrite = TRUE) } ## create spreadsheets by calling our function for each species for(s in sp){ createSpreadsheets(s,results1[results1$Species==s,],results2[results2$Species==s,]) }