How can I automatically create n lags in a timeseries?

后端 未结 3 1154
情话喂你
情话喂你 2020-12-10 09:33

I have a dataframe with a column t. I want to create n lagged columns that has names like t-1,t-2 etc..

  year      t  t-1 t-2
19620101    1   NA  NA
1963010         


        
3条回答
  •  情书的邮戳
    2020-12-10 09:42

    I might build something around base R's embed()

    x <- c(rep(NA,2),1:6)
    embed(x,3)
    #      [,1] [,2] [,3]
    # [1,]    1   NA   NA
    # [2,]    2    1   NA
    # [3,]    3    2    1
    # [4,]    4    3    2
    # [5,]    5    4    3
    # [6,]    6    5    4
    

    Perhaps something like this:

    f <- function(x, dimension, pad) {
        if(!missing(pad)) {
            x <- c(rep(pad, dimension-1), x)
        }
        embed(x, dimension)
    }
    f(1:6, dimension=3, pad=NA)
    #      [,1] [,2] [,3]
    # [1,]    1   NA   NA
    # [2,]    2    1   NA
    # [3,]    3    2    1
    # [4,]    4    3    2
    # [5,]    5    4    3
    # [6,]    6    5    4
    

提交回复
热议问题