我正在处理一个横截面数据集,如下所示:
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(
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
关于r - 有条件删除面板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68657056/