XTS - 使用昨天的值作为今天的输入

时间:2016-11-16 09:45:30

标签: r xts

我有一个XTS对象wgt

head(wgt)显示

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

基本上wgt[T] = wgt[T-1] * Random operation

我尝试使用lag.xts,但它没有提供结果

我确实想根据2001-01-01元素的值更新Date 2001-02-28的元素wgt$A,即结果为90 = 50 + 40 在下一步中,将为2001-03-31进行的计算输入该元素的结果,即70 = 90-20

感谢您的支持

马丁

1 个答案:

答案 0 :(得分: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)
}