如何在忽略当前时间步的值后创建滚动总和?

时间:2015-05-06 00:04:53

标签: r

我有这个数据框

year      t  
19620101    1
19630102    2   
19640103    3   
19650104    4   
19650104    5   
19650104    6

预期的输出是:

 year      t  t2 t3
19620101    1   NA  NA
19630102    2   NA   NA
19640103    3   3   NA
19650104    4   5   6
19650104    5   7   9
19650104    6   9  12

目前,我在函数

中使用它
Accum<-function(df,lag){
setDT(df)[, paste0(t, 2:lag) := lapply(2:lag, function(x) 
     rollsum(df[[t]], x, na.pad = TRUE, align='right'))]
}
Accum(df=dat,lag=4)

我得到了这个输出

year      t    t2   t3
19620101    1   NA  NA
19630102    2   3  NA
19640103    3   5   6
19650104    4   7   9
19650104    5   9   12
19650104    6   11   15

但是如何在进行滚动总和之前忽略当前时间步的值?我应该能够在一个函数中使用它,这样我就可以一遍又一遍地使用它。

1 个答案:

答案 0 :(得分:0)

t<-seq(1:10)


myfun <- function(t){
  lt <- length(t)
  t2<-rep(NA, lt)
  t2 <-rep(NA, lt)

  for(i in 3:lt){
    t2[i] <- t[i-1]+ t[i-2]
    }
  for(i in 4:lt){
    t3[i] <- t[i-1] + t2[i-1]
    }
  result <- cbind(t,t2,t3)
  return(result)
}