条件下拉面板数据
我正在处理一个横截面数据集,它看起来像:
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