gpt4 book ai didi

r - 您将如何对动物园对象列表中的相同列求和?

转载 作者:行者123 更新时间:2023-12-04 12:37:51 24 4
gpt4 key购买 nike

假设你有:

all.list <- list()
all.list[1] <- list(read.zoo(data.frame(dt=as.Date('2011-01-01')+0:9, a=1:10, b=11:20, c=21:30), index.column = "dt"))
all.list[2] <- list(read.zoo(data.frame(dt=as.Date('2011-01-05')+0:9, a=1:10, b=11:20, c=21:30), index.column = "dt"))
all.list[3] <- list(read.zoo(data.frame(dt=as.Date('2011-01-07')+0:9, a=1:10, b=11:20, c=21:30), index.column = "dt"))

我如何获得一个 zoo 对象,该对象具有列 a、b、c 的每个日期的总和(总和)?

NOTE #1: I would prefer a base-R implementation

最佳答案

使用 merge.zoo 结合 Reduce 的另一种解决方案:

  1. 使用每个组件的所有日期的并集来完成列表(缺失值用零填充)
  2. 使用 Reduce
  3. 对列表项求和
library(zoo)

merged.data <- Reduce("+", do.call(merge, args = c(all.list, retclass = "list", fill = 0)))

## add original column names
setNames(merged.data, names(all.list[[1]]))
#> a b c
#> 2011-01-01 1 11 21
#> 2011-01-02 2 12 22
#> 2011-01-03 3 13 23
#> 2011-01-04 4 14 24
#> 2011-01-05 6 26 46
#> 2011-01-06 8 28 48
#> 2011-01-07 11 41 71
#> 2011-01-08 14 44 74
#> 2011-01-09 17 47 77
#> 2011-01-10 20 50 80
#> 2011-01-11 12 32 52
#> 2011-01-12 14 34 54
#> 2011-01-13 16 36 56
#> 2011-01-14 18 38 58
#> 2011-01-15 9 19 29
#> 2011-01-16 10 20 30

class(merged.data)
#> [1] "zoo"

关于r - 您将如何对动物园对象列表中的相同列求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com