我有两个数据集,已在Stata中附加在一起。
两个数据集中都有一个变量,例如Age
。我对数据进行了排序,以使年龄按升序排列。我想删除每个数据集中对应年龄不匹配的观测值。
数据集1:
Obs Age
1 7
2 8
3 10
4 5
数据集2:
Obs Age
1 10
2 5
3 9
4 7
按升序组合和排序:
Obs Age
1 5
2 5
3 7
4 7
5 8
6 9
7 10
8 10
因此,由于排序时的年龄与观察值5
和6
不匹配,因此我想删除它们。本质上,我希望有一种方法可以遍历成对的相邻数字并比较它们的值,以便只剩下具有相同年龄的对。
答案 0 :(得分:1)
对观察结果进行循环是无效的,并且在大多数情况下没有必要。
以下对我有用:
clear
input age
5
5
7
7
8
9
10
10
end
generate tag = age != age[_n+1] & age != age[_n-1]
list
+-----------+
| age tag |
|-----------|
1. | 5 0 |
2. | 5 0 |
3. | 7 0 |
4. | 7 0 |
5. | 8 1 |
|-----------|
6. | 9 1 |
7. | 10 0 |
8. | 10 0 |
+-----------+
摆脱相关观察后,您将获得所需的结果:
keep if tag == 0
list
+-----------+
| age tag |
|-----------|
1. | 5 0 |
2. | 5 0 |
3. | 7 0 |
4. | 7 0 |
5. | 10 0 |
|-----------|
6. | 10 0 |
+-----------+