R:可以使用mutate+;滞后于同一列?
我试图在R中复制以下公式: Xt=Xt-1*b+Zt*(1-b) 我正在使用以下代码R:可以使用mutate+;滞后于同一列?,r,dplyr,lag,lead,R,Dplyr,Lag,Lead,我试图在R中复制以下公式: Xt=Xt-1*b+Zt*(1-b) 我正在使用以下代码 t %>% mutate(x= ifelse(week == 1, z, NaN)) %>% # Initial value for the first lag mutate(x= ifelse(week != 1, lag(x,1 ,default = 0) * b + z, z) 但是除了第二个元素,我得到了所有的NaN z b x
t %>%
mutate(x= ifelse(week == 1, z, NaN)) %>% # Initial value for the first lag
mutate(x= ifelse(week != 1, lag(x,1 ,default = 0) * b + z, z)
但是除了第二个元素,我得到了所有的NaN
z b x
(dbl) (dbl) (dbl)
1 168.895 0.9 168.8950
2 20.304 0.9 131.7472
3 14.943 0.9 NA
4 11.028 0.9 NA
5 8.295 0.9 NA
6 8.024 0.9 NA
7 6.872 0.9 NA
8 7.035 0.9 NA
9 4.399 0.9 NA
10 4.158 0.9 NA
这在excel中相当简单,但我必须在R中完成,您有什么方法吗
可复制示例:
set.seed(2)
t = data.frame(week = seq(1:52),
z = runif(52, 0, 100),
b = 0.2)
由于@Frank和@docendo discimus,我发现解决方案运行以下循环
for (row in 2:dim(t)[1]) {
t[row,] <- mutate(t[1:row,], x= lag(x,1) * b + z * (1 - b))[row,]
}
for(第2行:尺寸(t)[1]){
t[row,]只需使用mutate(dat,x=lag(z)*b+z*(1-b))
?公式应该滞后于x,而不是z。它使用以前的值*b+z*(1-b)。但要使公式工作,第一个值应该是第一个“z”,按顺序运行:dat它工作滞后于(z),但要使公式工作,我需要滞后于(x)除了x的第一个值,它是第一个z,谢谢!你是说变异(dat,x=lag(z,default=z[1])*b+z*(1-b))
?