我有一个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
感谢您的支持
马丁
答案 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)
}