我需要添加两个不规则的时间序列(涵盖工作日)。
我有两个不同产品A + B的xts系列。
产品B的数据来自A以后的启动日期。
我想我需要预先添加B,以便日期与A匹配,但全部为零。
使得和(A + B)等于和(A)+和(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
答案 0 :(得分:4)
这是怎么回事?
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
答案 1 :(得分:4)
这是一个单行(使用@ 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
的任何对象中每个索引值的索引值。