【问题标题】:How to detect a change in a variable over time in panel-data using dplyr?如何使用 dplyr 检测面板数据中变量随时间的变化?
【发布时间】:2021-02-28 22:48:20
【问题描述】:

我正在使用面板数据,但年龄变量存在一些差异。对于一些受访者,他们的年龄从一年到另一岁增加或减少超过 1 岁,正如我们在下面 ID 号为 2 和 3 的受访者中看到的那样。这可能是由于数据输入问题或其他我无法自行解决的原因。

有人可以指导我如何创建一个新变量来检测年龄增加超过 1 个值或年龄从一年减少到另一岁的人,就像在 ID 2 和3以下?

id  age year
1   25  2005
1   26  2006
1   27  2007
2   50  2006
2   51  2007
2   36  2008
3   25  2005
3   30  2006


structure(list(id = structure(c(1, 1, 1, 2, 2, 2, 3, 3), format.stata = "%9.0g"), 
    age = structure(c(25, 26, 27, 50, 51, 36, 25, 30), format.stata = "%9.0g"), 
    year = structure(c(2005, 2006, 2007, 2006, 2007, 2008, 2005, 
    2006), format.stata = "%9.0g")), row.names = c(NA, -8L), class = c("tbl_df", 
"tbl", "data.frame"))

【问题讨论】:

    标签: r dplyr hierarchical-data panel-data


    【解决方案1】:

    您可以使用group_bylag 来检查更改。

    df %>%
      arrange(id, year) %>%
      group_by(id) %>%
      mutate(
        age_change = age - lag(age),
        age_bigincrease = age_change > 1,
        age_decrease = age_change < 0
      )
    

    会回来

    # A tibble: 8 x 6
    # Groups:   id [3]
         id   age  year age_change age_bigincrease age_decrease
      <dbl> <dbl> <dbl>      <dbl> <lgl>           <lgl>       
    1     1    25  2005         NA NA              NA          
    2     1    26  2006          1 FALSE           FALSE       
    3     1    27  2007          1 FALSE           FALSE       
    4     2    50  2006         NA NA              NA          
    5     2    51  2007          1 FALSE           FALSE       
    6     2    36  2008        -15 FALSE           TRUE        
    7     3    25  2005         NA NA              NA          
    8     3    30  2006          5 TRUE            FALSE  
    

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多