我有这个数据框
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
但是如何在进行滚动总和之前忽略当前时间步的值?我应该能够在一个函数中使用它,这样我就可以一遍又一遍地使用它。
答案 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)
}