2016-11-16 27 views
0

我有一個XTS對象WGTXTS - 用昨天的值作爲輸入,今天

head(wgt)顯示

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

我試着用lag.xts但它並沒有deliever結果

我想更新日期2001-02-28中的元素wgt$A,基於2001-01- 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) 
} 
相關問題