在R中基于嵌套的两列类别创建和导出Excel文件



R useRs,我有一个包含不同州的数据集,每个州都有一些银行和它们的评级分数。从excel数据文件中,我想:

  1. 为States列的每个状态创建一个单独的文件夹,和2)导出每个银行在单独的excel文件在自己的状态。

下面是模拟数据作说明:

States = rep(c("AR", "KS", "CA", "MO", "NE"),times = c(10, 5, 15, 8, 12))
Banks = c(paste0("Bank_", 1:50))
Rating = rnorm(50, mean=30, sd=5)
MyData = data.frame(States, Banks, Rating)

我总是使用dir.create("MyFolder")的功能来创建文件夹,并使用MapmyList = split(df, df$States) Map(openxlsx::write.xlsx, myList, paste0(names(myList), '.xlsx'))导出excel文件,但我不知道如何结合这些。

结果应包括五个不同的文件夹,每个文件夹应以州名命名,每个州文件夹应包括位于该州的银行,excel文件的名称应以"银行"命名。列。非常感谢。

这里是一个解决方案,使用purrr

MyData %>% 
nest(-States,-Banks) %>% 
pwalk(
.f = function(States,data,Banks){
dir.create(States)
openxlsx::write.xlsx(x = data, file = file.path(getwd(),States,paste0(Banks,".xlsx")))
})
结果

list.files(full.names = T,include.dirs = T)
"./AR" "./CA" "./KS" "./MO" "./NE"
list.files(path = file.path(getwd(),"AR"))
[1] "Bank_1.xlsx"  "Bank_10.xlsx" "Bank_2.xlsx"  "Bank_3.xlsx"  "Bank_4.xlsx"  "Bank_5.xlsx" 
[7] "Bank_6.xlsx"  "Bank_7.xlsx"  "Bank_8.xlsx"  "Bank_9.xlsx"

最新更新