【问题标题】:Average multiple csv files into 1 averaged file in r将多个 csv 文件平均为 r 中的 1 个平均文件
【发布时间】:2015-06-30 10:38:53
【问题描述】:

我有大约 300 个风速、温度、压力等列的 csv 文件,每行是 2007 年到 2012 年的不同时间。每个文件来自不同的位置。我想将所有文件合并为所有 300 个文件的平均值。因此,新文件将具有每个单独文件的相同行数和列数,但每个单元格将是所有 300 个文件的相应平均值。是否有捷径可寻?

【问题讨论】:

标签: r csv merge aggregate


【解决方案1】:

this post 之后,您可以将所有文件读入一个列表(这里我假设它们被命名为weather*.csv):

csvs <- lapply(list.files(pattern="weather*.csv"), read.csv)

剩下的就是取所有这些数据帧的平均值。您可以尝试以下方法:

Reduce("+", csvs) / length(csvs)

如果您只想添加列的一个子集,您可以向Reduce 传递一个包含相应列子集的数据框列表。例如,如果您想从每列中删除第一列,您可以执行以下操作:

Reduce("+", lapply(csvs, "[", -1)) / length(csvs)

【讨论】:

  • Thad 做到了 Josilber。我有点惊讶没有更自动化的东西,但这个解决方案很好。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多