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 行应该非常快!
我想了解如何使用我要创建的行中的先前值。在 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 行应该非常快!