计算滞后值

时间:2012-07-09 05:16:46

标签: r loops for-loop

我有一个for循环,它将值填充到名为Df的数据框中。我的所有列都准确填充,但以下代码行不会生成我想要的值:

for(i in 2:(dim(Df)[1])){
Df$dailyReturns200[i] <- (Df$index200[i+1]-Df$index200[i])/Df$index200[i]
}

这是P2-P1 / P1的简单回归计算。我的一位朋友提出了操作顺序问题,但解决方案是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果没有可重复的示例,很难回答,但您根本不需要在循环中执行此操作。这样做你想要的吗?

#Start with a simple one column matrix
x <- matrix(1:6, ncol = 1)

#Compute the diffence, pad with an NA at the front, and then divide by x
cbind(x, c(NA, diff(x))/x)
#----
     [,1]      [,2]
[1,]    1        NA
[2,]    2 0.5000000
[3,]    3 0.3333333
[4,]    4 0.2500000
[5,]    5 0.2000000
[6,]    6 0.1666667

在帮助页面中,diff()会返回suitably lagged and iterated differences.。在这种情况下,所有差异都是1,然后除以x,如上所示。有关详细信息,请参阅?diff