【问题标题】:Reading 647 CSVs in a folder, summing a column in each, and adding the sums to a new data frame in R在文件夹中读取 647 个 CSV,将每个列相加,然后将总和添加到 R 中的新数据框中
【发布时间】:2020-10-23 20:06:32
【问题描述】:

我有一个包含 647 个 CSV 的文件夹。在 CSV 中有一个名为“mxpx”的列。我想对每个 CSV 的这一列求和,并将总和放入一个新的数据框中。最终结果将是一个 647x1 的数据框,其中有一列标记为“mxpx”,每个条目是每个 CSV 中 mxpx 的总和。

我已尝试读取文件并将它们绑定在一起以创建一个数据框:

files <- list.files(path = x, pattern = "*.csv", full.names = T)
tbl <- sapply(files, read_csv, simplify = FALSE) %>% bind_rows(.id = "id")

但是,我不确定是否可以在获得单个数据框后继续使用此方法。

是否有一种解决方案可以遍历 CSV,对 mxpx 列求和,将其添加到数据框,然后移动到下一个文件夹?

【问题讨论】:

  • 你的文件是怎么命名的?

标签: r


【解决方案1】:

使用sapply 循环遍历文件后,读取数据,提取($)列,并获取sum。因为它是一个sapply,所以它会返回一个vector

out <- sapply(files, function(x) sum(read.csv(x)$mxpx, na.rm = TRUE))
dat <- data.frame(mxpx = out)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2021-11-16
    • 2011-06-24
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多