2011-06-10 21 views
2

我需要添加兩個不規則的時間序列(包括工作日)。用0加上不規則的xts

我有兩個XTS系列兩種不同的產品A + B.

產品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 
+1

你可以請張貼一些示例數據?請參閱http://stackoverflow.com/q/5963269/602276瞭解提示以撰寫出色的問題。 – Andrie 2011-06-10 08:33:01

回答

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

澄清一點:'merge.xts'合併在索引屬性上,而不是行名稱(如'merge.data.frame')。 – 2011-06-10 14:04:46

4

這裏是一個一行(使用@羅馬的示例數據):

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的任何對象中的每個索引值的索引值。