【问题标题】:Conditional Drop Panel data [duplicate]条件下拉面板数据[重复]
【发布时间】:2021-10-09 21:36:33
【问题描述】:

我正在研究一个横截面数据集,如下所示:

Id Year  Age 
1  2003  20  
1  2003  20  
1  2003  20  
2  2003  35   
2  2003  37   
2  2003  42  
3  2003  55   
3  2003  55   
3  2003  55   

为了减少由于 ID 分配错误而导致的样本中的测量错误,我需要只保留具有相同年龄的个人,并且如果不参加这种情况,则放弃。

我正在寻找的输出是:

Id Year  Age 
1  2003  20  
1  2003  20  
1  2003  20  
3  2003  55   
3  2003  55   
3  2003  55   

你有什么建议吗?

【问题讨论】:

    标签: r dataframe dplyr filtering grouping


    【解决方案1】:

    使用ave + subset 的基本 R 选项

    subset(
      df,
      ave(Age,Id,Year,FUN = var)==0
    )
    

    给予

      Id Year Age
    1  1 2003  20
    2  1 2003  20
    3  1 2003  20
    7  3 2003  55
    8  3 2003  55
    9  3 2003  55
    

    一个可能的dplyr 选项

    df %>%
      group_by(Id, Year) %>%
      filter(n_distinct(Age) == 1) %>%
      ungroup()
    

    给予

    # A tibble: 6 x 3
         Id  Year   Age
      <int> <int> <int>
    1     1  2003    20
    2     1  2003    20
    3     1  2003    20
    4     3  2003    55
    5     3  2003    55
    6     3  2003    55
    

    【讨论】:

    • 非常感谢@ThomasIsCoding。成功了!
    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多