用零填充不规则的xts

时间:2011-06-10 08:27:25

标签: r xts

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

我有两个不同产品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

2 个答案:

答案 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=TRUEfill=参数允许您指定要用于缺失元素的值(默认为fill=NA)。

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