鉴于此小标题:
tibble(x = c(1:9))
我想添加一列x_lag_1 = c(NA,1:8)
,一栏x_lag_2 = c(NA,NA,1:7)
等
高达x_lag_n
.
最佳答案
使用data.table
可以快速实现这一点:
library(data.table)
n <- seq(4)
setDT(df)[, paste0('x_lag_', n) := shift(x, n)]
df
x x_lag_1 x_lag_2 x_lag_3 x_lag_4
1: 1 NA NA NA NA
2: 2 1 NA NA NA
3: 3 2 1 NA NA
4: 4 3 2 1 NA
5: 5 4 3 2 1
6: 6 5 4 3 2
7: 7 6 5 4 3
8: 8 7 6 5 4
9: 9 8 7 6 5
关于r - 矢量化列加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70502165/