的每一行循環我有一個數據幀與dplyr對數據幀
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
我需要執行計算使用dplyr每一行作爲我的真實數據幀確實是巨大的,dplyr是非常有效的。
我want-
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
這是怎麼achieved--
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
因此每一行的公式是 -
var1[i]+lag(var1,1)*var2^1+lag(var1,2)*var2^2 +....
直到滯後(VAR1)達到BYGROUP_OBSNUM爲0的行0
我已經實現了什麼,直到now--
df1<-df %>%
mutate(var3=ifelse ((!(var2==0) | (!(BYGROUP_OBSNUM==0))), var2, 0)) %>%
rowwise()%>%
ungroup() %>%
mutate(var1_new=var1+lag(var1,1)*var2)
我需要更改的每一行和權力,直到滯後的最後一行使得公式需要從滯後(var1,1)滯後(VAR1,BYGROUP_OBSNUM) var2也從1增加到BYGROUP_OBSNUM。我該怎麼做呢?
我在想'ungroup()'取消了'rowwise()'。所以這沒有做任何事情。 – Axeman
此外,它似乎[ungroup()去掉rowwise_df的tbl_df類](https://github.com/tidyverse/dplyr/issues/936)。 – jsb
yes rowwise is useless ..df1 <-df %>% mutate(var3 = ifelse((!(var2 == 0)|(!(BYGROUP_OBSNUM == 0))),var2,0))%>% mutate(var1_new = var1 + lag(var1,1)* var2) – Riya