【问题标题】:How to split an already split datafame and save in multiple folders in R如何拆分已经拆分的数据框并保存在R中的多个文件夹中
【发布时间】:2019-10-22 03:33:07
【问题描述】:

我已将我的数据框拆分为 100 个小标题,如下所示。每个 tibble 中有 10 个变量,包括 class_name。创建名为每个 tibble 的文件夹并将每个 tibble 重新拆分为 class_names 并保存为单独的 CSV 的最佳方法是什么。

我尝试了几种 lapply(finction(x), paste0()) 的组合,但都失败了。

所以假设分割的数据框是这样的:

MyDF                          Variables
1_A →   tibble with 10 rows class_name  Green, purple, 
        …
2_B …                          type     
3_C                             ..  
..                              .   
100_XX                              .

所以预期的输出是:

/1_A/   →   1_A.Green.csv
                1_A.purple.csv
                1_A. ….

/2_B/   …       2_B.yellow.csv  
                 …

..      
100_XX

【问题讨论】:

  • 欢迎来到 SO!请花时间阅读how to create a reproducible example。就目前而言,很难看到你做了什么以及你需要做什么。您是如何拆分原始数据框的?您是否使用split 来获得数据框列表?如果是这样,那么最直接的方法将是嵌套 for 循环。您在第一个循环中再次创建目录和split,然后在第二个循环中迭代生成的列表,将每个数据帧写入您的目录。
  • 谢谢亲爱的格什特,是的,我只是对原始数据使用了拆分。你提到的嵌套循环有什么简单的代码吗?

标签: r


【解决方案1】:

由于您不提供示例数据,我将使用数据集 datasets::mtcars。您需要调整解决方案以适应您的数据。

根据您的评论,我假设您已经使用以下内容拆分数据,这将返回一个列表:

dfs <- split(mtcars, mtcars$vs)

下一步是使用列表元素的名称迭代此列表。为每个列表元素名称创建一个目录,然后拆分每个数据框并使用子列表元素名称迭代生成的子列表,将每个数据框写入相应的目录file.path(dn, paste0(fn, ".csv"))

for (dn in names(dfs)){
    dir.create(dn)
    sub_dfs <- split(dfs[[dn]], dfs[[dn]]$gear)
    for (fn in names(sub_dfs)){
        write.csv(sub_dfs[[fn]], file.path(dn, paste0(fn, ".csv")))
    }
}

上面应该创建两个目录“0”和“1”,每个目录都包含一些 CSV。

【讨论】:

  • 如何附加 csv 以在同一文件中有另一张工作表?假设想以另一个名称将相同的东西保存在另一个工作表中作为“数据”。我尝试了几种方法来复制同一行,使用写表或 write.excel,但遇到了很多错误。非常感谢您的帮助。
  • @Sean CSV 没有工作表,因此您可能希望编写 XLSX (Excel)。我喜欢使用writexl::write_xlsx(),但还有其他选择。您需要做的就是将工作表/数据框放入列表中。看看this SO answer 开始吧。如果这对你不起作用,那么我会问一个新问题。
  • 您好 Gersht,感谢您的回复。这正是我的问题,即使用 write.xlsx 而不是 csv 来修改您的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多