根据两列中的嵌套类别在 R 中创建和导出 Excel 文件
Creating and Exporting Excel files in R based on nested Categories in two Columns
R 用户,
我有一个包含不同州的数据集,每个州都有许多银行及其评级分数。从 excel 数据文件,我想:
- 为 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")
的功能来创建文件夹,并使用地图myList = 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"
R 用户, 我有一个包含不同州的数据集,每个州都有许多银行及其评级分数。从 excel 数据文件,我想:
- 为 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")
的功能来创建文件夹,并使用地图myList = 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"