条件下拉面板数据

我正在处理一个横截面数据集,它看起来像:

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   

你有什么建议吗?

回答

使用ave+ 的基本 R 选项subset

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


以上是条件下拉面板数据的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>