Search code examples
rlag

How to use a vector in lag operation in R


In R, How do we use a vector instead of element in the lag function. i.e for Lag(x,k=2); instead of 2 I want to use a vector because I want to lag each row by a different value. So one row could have a lag of 3, while 1 could be 0 etc.

Example:

a #lags d
1 0     1 
2 1     1
4 2     1
3 0     3
1 1     3

Solution

  • i think you may need to write your own function for this task. i wrote one that i think will be what you need, or perhaps point you in the right direction:

    x1 <- c(75,98,65,45,78,94,123,54) #a fake data set for us to lag
    y1 <- c(2,3,1,4,1,2,3,5) #vector of values to lag by
    
    #the function below takes the data, x1, and lags it by y1
    
    dynlag <- function(x,y) {
    a1 <- x[length(x)-y]
    return(a1)
    }
    
    #test out the function
    
    dynlag(x1,y1)
    

    hope this helps. :)