質問

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

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

製品Bには、Aより後のスタートアップ日からのデータがあります。

日付がAと一致するようにBeをプリデントする必要があると思いますが、すべてのゼロで。

合計(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 作成された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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top