条件下拉面板数据
Conditional Drop Panel data
我正在处理如下所示的横截面数据集:
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
+ 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
我正在处理如下所示的横截面数据集:
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
+ 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