我需要添加两个不规则的时间序列(涵盖工作日)。

我有两个针对两个不同产品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.xtsall=TRUE 默认和 fill= 参数允许您指定用于缺失元素的值(默认值为 fill=NA).

的结果 merge(proda,prodb,fill=0) 是一个具有两个列(“ proda”,“ prodb”)的对象,并且在传递给任何对象中的每个索引值的索引值 merge.xts.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top