我有一个数据框
df <- data.frame(var1=c(10,20,30,40,50), var2=c(rep(0.3,5)), BYGROUP_OBSNUM=c(0:4))
var1 var2 BYGROUP_OBSNUM
10 0.3 0
20 0.3 1
30 0.3 2
40 0.3 3
50 0.3 4
Run Code Online (Sandbox Code Playgroud)
我需要使用dplyr对每一行进行计算,因为我的实际数据帧确实很大,并且dplyr非常有效。
我想要的是:
var1 var2 BYGROUP_OBSNUM VAR1_NEW
10 0.3 0 10
20 0.3 1 23
30 0.3 2 36.9
40 0.3 3 51.07
50 0.3 4 65.321
Run Code Online (Sandbox Code Playgroud)
如何实现的:
var1 var2 BYGROUP_OBSNUM VAR1_NEW
10 0.3 0 10
20 0.3 1 20+10*0.3
30 0.3 2 30+20*0.3+10*0.3^2
40 0.3 3 40+30*0.3+20*0.3^2+10*0.3^3
50 0.3 4 50+40*0.3+30*0.3^2+20*0.3^3+10*0.3^4
Run Code Online (Sandbox Code Playgroud)
因此,对于每一行,公式为:
var1[i]+lag(var1,1)*var2^1+lag(var1,2)*var2^2 +....
Run Code Online (Sandbox Code Playgroud)
直到lag(var1)到达BYGROUP_OBSNUM为0的行
到目前为止,我取得了以下成就: …