【问题标题】:Add multiple columns lagged by one year添加滞后一年的多个列
【发布时间】:2023-02-08 18:09:26
【问题描述】:

我需要从我的数据框中添加多列的 1 年滞后版本。这是我的数据:

data<-data.frame(Year=c("2011","2011","2011","2012","2012","2012","2013","2013","2013"), 
                 Country=c("America","China","India","America","China","India","America","China","India"),
                 Value1=c(234,443,754,334,117,112,987,903,476),
                 Value2=c(2,4,5,6,7,8,1,2,2))

我想在 t-1 处添加包含 Value1 和 Value2 的两列,以便我的数据框如下所示:

我怎样才能做到这一点?这是按年滞后我的变量的正确方法吗?

提前致谢!

【问题讨论】:

    标签: r dataframe variables time-series regression


    【解决方案1】:

    dplyr中,按组使用lag

    library(dplyr) #1.1.0
    data %>% 
      mutate(across(contains("Value"), lag), .by = Country)
    
      Year Country Value1 Value2
    1 2011 America     NA     NA
    2 2011   China     NA     NA
    3 2011   India     NA     NA
    4 2012 America    234      2
    5 2012   China    443      4
    6 2012   India    754      5
    7 2013 America    334      6
    8 2013   China    117      7
    9 2013   India    112      8
    

    【讨论】:

      【解决方案2】:

      您可以创建数据框的副本并移动两列中的值,然后使用cbind() 将两个数据框绑定在一起。

      data_lagged <- data
      data_lagged$Value1 <- c(NA, data$Value1[1:(nrow(data)-1)])
      data_lagged$Value2 <- c(NA, data$Value2[1:(nrow(data)-1)])
      data_lagged$Year <- as.integer(as.character(data_lagged$Year)) + 1
      data_lagged$Year <- as.character(data_lagged$Year)
      data_final <- cbind(data, data_lagged[, c("Value1", "Value2")])
      
      > data_final
        Year Country Value1 Value2 Value1 Value2
      1 2011 America    234      2     NA     NA
      2 2011   China    443      4    234      2
      3 2011   India    754      5    443      4
      4 2012 America    334      6    754      5
      5 2012   China    117      7    334      6
      6 2012   India    112      8    117      7
      7 2013 America    987      1    112      8
      8 2013   China    903      2    987      1
      9 2013   India    476      2    903      2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 2021-04-25
        • 2019-06-18
        • 2022-11-21
        • 2020-02-19
        • 1970-01-01
        • 2023-02-07
        相关资源
        最近更新 更多