2

2 つの不規則な時系列 (営業日をカバー) を追加する必要があります。

2 つの異なる製品 A + B 用に 2 つの xts シリーズがあります。

製品 B には、A より後の起動日からのデータがあります。

日付が A と一致するように B を先頭に追加する必要があると思いますが、すべてゼロになります。

sum(A + B) が sum(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
4

2 に答える 2

4

これはワンライナーです(@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)は、2 つの列 (「proda」、「prodb」) と、 に渡されたオブジェクトのすべてのインデックス値のインデックス値を持つオブジェクトですmerge.xts

于 2011-06-10T14:02:05.390 に答える
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作成された 2 つのデータ セットをリンクします。

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
于 2011-06-10T09:26:43.667 に答える