【问题标题】:Batch processing multiple .csv files using R selecting only one column使用 R 仅选择一列批量处理多个 .csv 文件
【发布时间】:2019-08-14 14:42:05
【问题描述】:

我正在从事一个项目,该项目涉及 40 年期间保存的 470 个统计数据。我的数据是结构化的,因此每年都是一个文件夹,其 470 个相应的统计数据(作为 .csv 文件)保存在该文件夹中。这些文件中的每一个都包含我关心的数字的升序或降序列(在同一个 .csv 文件中)。我需要知道每个 .csv 文件的列号。

这是我的问题。我收到的向我解释这些统计数据的信息文件贴错了标签。它告诉我有意义的数据在每个 .csv 文件的第 4 列(所有属性的 data_col = 4);但是,根据我的观察,这仅适用于 80-90% 的文件。

我想将每个文件中的第 4 列批量导入一个大型数据集(470 列;每列代表一个统计数据),以便查看该列中的数据是升序还是降序。如果不是,我可以手动打开该文件并自己找到它。然后我可以修改我的信息文件,以便我知道以后要在哪些列上运行我的分析。

对此的替代方法是每年(或 40 次)打开和关闭 470 个文件,并查看数据是否如所述在第 4 列中。

如何将多个 .csv 文件中的单个列批量导入 R 中的一个数据集?

【问题讨论】:

  • 请查看帮助中心并尝试将一些代码放在一起,自己测试,然后在这里仅询问您自己无法弄清楚的内容(通过您的编码尝试),否则不可能帮助你,看起来你只是要求我们为你做你的工作。

标签: r csv batch-processing dynamic-columns


【解决方案1】:

这将获取目录中的所有 CSV 文件,然后将它们读入单个 data.frame 仅保留第 4 列(或您想要保留的任何列),如果您愿意,还可以将文件名放在每一行中在输入中查找错误

library(tidyverse)  # get useful functions
files <- list.files(path = '/d$/temp/csv', 
                    pattern = ".*csv",
                    full.names = TRUE
)
all_data <- map_dfr(files, ~{
  read_csv(.x)[, 4] %>%  # keep column 4
    mutate(file = .x)  # add file name
})
print(all_data[1:10,])

col4   file
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv
4 /d$/temp/csv/Document1 - Copy (2).csv

CSV 文件如下所示:

col1,col2,col3,col4,col5,col6
1,2,3,4,5,6
1,2,3,4,5,6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2012-12-08
    • 2015-05-05
    • 2018-03-25
    • 2015-01-24
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多