首页 > 解决方案 > 基于两列中的嵌套类别在 R 中创建和导出 Excel 文件

问题描述

R 用户,我有一个包含不同州的数据集,每个州都有许多银行及其评级分数。从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 文件的名称应根据“银行” “ 柱子。非常感谢。

标签: rdata-analysis

解决方案


这是一个解决方案,使用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"

推荐阅读