题
我需要添加两个不规则的时间序列(涵盖工作日)。
我有两个针对两个不同产品A + B的XTS系列。
产品B具有以后的启动日期的数据,而不是A。
我认为我需要预先启动B,以使日期匹配A,但所有零。
这样总和(a + b)等于总和(a) + sum(b)
产品a
2009-05-02 4
2010-02-03 4
产品b
2010-02-03 4
和:
A + B
2010-02-03 8
期望的结果
2009-05-02 4
2010-02-03 8
解决方案
这个怎么样?
library(xts)
拳头我们需要一些示例数据。
proda <- as.xts(matrix(c(4,4), ncol = 1, dimnames = list(c("2009-05-02", "2010-02-03"))))
prodb <- as.xts(matrix(4, ncol = 1, dimnames = list(c("2010-02-03"))))
基于(常见的)行名, merge
将链接两个创建的数据集。
ab <- merge(proda, prodb)
我用了 apply
每行总和值(MARGIN = 1
) 但 rowSums
也会工作。
data.frame(val = apply(X = ab, MARGIN = 1, FUN = sum, na.rm = TRUE))
结果:
val
2009-05-02 4
2010-02-03 8
其他提示
这是一个单线(使用 @roman的示例数据):
with(merge(proda,prodb,fill=0), proda+prodb)
# proda
# 2009-05-02 4
# 2010-02-03 8
merge.xts
有 all=TRUE
默认和 fill=
参数允许您指定用于缺失元素的值(默认值为 fill=NA
).
的结果 merge(proda,prodb,fill=0)
是一个具有两个列(“ proda”,“ prodb”)的对象,并且在传递给任何对象中的每个索引值的索引值 merge.xts
.
不隶属于 StackOverflow