【问题标题】:How can I take one column from multiple CSV files to create a new dataframe in R?如何从多个 CSV 文件中提取一列以在 R 中创建新的数据框?
【发布时间】:2021-06-30 12:15:49
【问题描述】:

基本上,我希望从文件夹中的每个 CSV 文件中获取第三列,并将其作为新列附加到数据框中。理想情况下,我希望每列的标题是各自的文件名。我在文件夹中有大约 172 个文件,每个文件都有一个唯一的文件名(即 file1.csv、file2.csv 等),但是第三列的标题是相同的。以较小的比例说明这一点,如果我有文件 1 和文件 2,输出将如下所示。

编辑:添加了一些说明。

【问题讨论】:

标签: r data-wrangling


【解决方案1】:

您的第三列在两个文件中是否总是同名?

如果没有,你可以到下面

cbind(file1[,3], file2[,3])

cbind 将按列组合数据帧

【讨论】:

  • 是的,第三列在所有文件中都有相同的标题。我也应该澄清一下,我已经更新了原始帖子,但这是针对文件夹中的每个文件的。所以我在一个文件夹中有 172 个文件。
【解决方案2】:

您可以使用lapply 读取所有文件,从中提取第三列,指定与文件名相同的列名并将所有此类列绑定到一个数据框中。

filenames <- list.files(pattern = '.csv$', full.names = TRUE)

do.call(cbind, lapply(filenames, function(x) {
  setNames(data.frame(read.csv(x)[[3]]), tools::file_path_sans_ext(basename(x)))
})) -> result

result

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 2021-06-24
    • 2018-05-09
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多