【问题标题】:How would you create a summary zoo from a list of files?您将如何从文件列表创建摘要动物园?
【发布时间】:2019-07-08 13:35:44
【问题描述】:

假设我有许多具有以下格式的 csv 文件:

Date,col1,col2,col3
8/1/2017,2,3,4
8/5/2017,4,6,7

Date,col1,col2,col3
8/1/2017,2,3,4
8/3/2017,2,5,4
8/5/2017,4,6,7

如何创建 1 个动物园对象,在每个日期向我显示每列的总数?

使用上面的文件内容,我想创建以下动物园对象:

Date      | col1 | col2 | col3
8/1/2017      4     6      8
8/3/2017      2     5      4
8/5/2017      8    12     14

注意:我更喜欢 base-R 解决方案(使用 zoo 包是可以的)

【问题讨论】:

  • 格式是%m/%d/%Y还是`%d/%m/%Y
  • 你打算如何通过基础 R 创建一个zoo 对象?
  • 不是我的反对票丹尼斯,但如果我猜的话,反对票是因为你没有表现出自己解决这个问题的努力
  • @Sotos,akrun 给了我一个很好的基础,我想出了其余的......我在下面更新了他的答案......我不知道如何读入文件所以动物园没有' t 为每个文件中的每一列创建一个列。 lapply 技巧是我所缺少的。
  • 不,我的意思是您将如何仅使用基本 R(作为您最后的请求)创建一个实际的 zoo 对象。对不起,如果我误解了。我以为read.zoo有一个基本的R函数@

标签: r dataframe zoo


【解决方案1】:

我们可以通过lapply读取列表中的文件来使用read.zoo

library(zoo)

files <- list.files("C:\\test", pattern = ".*.csv", full.names = TRUE)
out.list <- lapply(files, function(x) read.zoo(x, header=TRUE, sep = ",", index.column = "Date"))
summary <- Reduce("+", do.call(merge, args = c(out.list, retclass = "list", fill = 0)))
colnames(summary) <- colnames(out.list[[1]])

【讨论】:

  • @Denis 谢谢,但您不需要format
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2016-03-07
  • 2012-12-30
  • 1970-01-01
  • 2023-02-25
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多