How to create lag variables

后端 未结 4 2204
半阙折子戏
半阙折子戏 2020-12-15 11:41

I want to create lagged variable for a variable pm10 and used the following code. However, I could not get what I wanted. How could I create a lag of pm10?

d         


        
4条回答
  •  孤街浪徒
    2020-12-15 12:17

    Another alternative is using the shift-function from the data.table package:

    library(data.table)
    setDT(df2)[, c("l1pm10","l1pm102") := .(shift(pm10, 1L, fill = NA, type = "lag"),
                                            shift(pm10, 1L, fill = NA, type = "lead"))]
    

    this gives:

    > df2
        var1     pm10   l1pm10  l1pm102
     1:    1 26.95607       NA       NA
     2:    2       NA 26.95607 32.83869
     3:    3 32.83869       NA 39.95607
     4:    4 39.95607 32.83869       NA
     5:    5       NA 39.95607 40.95607
     6:    6 40.95607       NA 33.95607
     7:    7 33.95607 40.95607 28.95607
     8:    8 28.95607 33.95607 32.34877
     9:    9 32.34877 28.95607       NA
    10:   10       NA 32.34877       NA
    

    Used data:

    df2 <- structure(list(var1 = 1:10, pm10 = c(26.956073733, NA, 32.838694951, 
    39.9560737332, NA, 40.9560737332, 33.956073733, 28.956073733, 
    32.348770798, NA)), .Names = c("var1", "pm10"), row.names = c("1", 
    "2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame")
    

提交回复
热议问题