R 如何使用我正在创建的列中的先前值

R How can I use a previous value from the column I am creating

我想了解如何使用我要创建的行中的先前值。在 excel 中很容易,但在 R 中做不到。

我有以下数据

data

d               
6.081371                
7.527626                
30.669937               
5.402242                
37.664694   

#coefficients
w <- tan(pi*(0.5/0.802)/10)
k1 <- 2^0.5*w
k2 <- w^2
a0 <- k2/(1+k1+k2)
k3 <- 2*a0/k2
a1 <- 2*a0
b1 <- -2*a0+k3
b2 <- 1-2*a0-k3
                

我想使用以下公式创建一个新列 (g):

data$g <– a0*d+a1*(previous value of d)+a0*(value 2 positions above of d)+b1*(previous value of calculated new column g)+b2*(value 2 positions above of new column g)

我可以计算第一部分有滞后,但不能使用创建列的先前值 数据超过 20000 个观察值,所以我不知道循环是否是一个好的选择。

谢谢!

首先初始化 data$g 列:

data$g <- 0

然后:

下面更改为 for 循环:

for i in 3:nrow(data){
   data$g[i] = a0*data$d[i]*a1*data$d[i-1]+ao*data$d[i-2]+b1*data$g[i-1]+b2*data$g[i-2]
}

我看到的主要问题是它不会计算 g 的前两行。

旧回复

data$g <– a0*d+a1*lag(data$d)+a0*lag(data$d, 2)+b1*lag(data$g)+b2*lag(data$g, 2)

如果延迟函数导致问题,我认为您是最好的 for-looping - 20,000 行应该非常快!