2016-11-16 10 views
0

の入力として昨日値を使用するために、私はXTS - 今日

head(wgt) WGT XTSオブジェクトは、私がlag.xtsと試みたが、それは結果をdelieverなかった

Date      A   B   
2001-01-01    50   50 
2001-02-28    50   50 
2001-03-31    50   50 

Bascially wgt[T] = wgt[T-1] * Random operation

を示しています

2001-01-21の値に基づいて、2001-02-28の要素wgt$Aを更新しますか? 01要素すなわち結果は90 = 50 + 40となります 次のステップでは、この要素の結果は2001-03-31すなわち70 = 90-20

の計算に入力されます。

マーティン

答えて

0

head(wget)は、「日付」欄が表示されている場合、その後、あなたのオブジェクトは、XTSのオブジェクトではありません。 xtsオブジェクトには日付と時刻の列はありません。

あなたが説明しているのは、再帰的な操作であり、簡単なforループを使って簡単に実行できます。

# sample data 
wget <- read.csv(text="Date,A,B 
2001-01-01,50,50 
2001-02-28,50,50 
2001-03-31,50,50", as.is=TRUE) 
# convert to xts 
wget_xts <- xts(wget[,-1], as.Date(wget[,1])) 
# loop over wget_xts and apply random operation 
set.seed(21) 
for (i in 2:nrow(wget_xts)) { 
    wget_xts[i, "A"] <- wget_xts[i-1, "A"] + sample(-20:40, 1) 
}