r - 您将如何对动物园对象列表中的相同列求和?
问题描述
假设你有:
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"))
如何获得一个动物园对象,该对象具有列的每个日期的总数(总和):a,b,c?
注意#1:我更喜欢base-R实现
解决方案
merge.zoo
结合使用的另一种解决方案Reduce
:
- 使用每个组件的所有日期的并集完成列表(缺失值用零填充)
- 对列表项求和
Reduce
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"
推荐阅读
- spring - 单独配置分层 Spring 应用程序上下文
- python - 找到小于 X 的立即数
- python - 更改 plt.plot() 中的 x 轴值
- javascript - 在 IF 语句中比较“==”不起作用 Google 表格脚本
- c++ - C++ 将随机值放在乘法图中(嵌套循环)
- python - 基于第三个值的 New_target 列
- javascript - ejs 错误提示“错误:找不到匹配的结束标记”<%="。
- java - 为什么设置 setAutoCommit(false) 后连接仍然自动提交?
- java - 项目和 BOM 依赖项之间有什么区别?
- php - 如何在 PHP 中展平这个对象数组?