R:可以使用mutate+;滞后于同一列?

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

我试图在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
     (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))