Stata 如何比较相邻观测值?
我在Stata中附加了两个数据集 两个数据集中都有一个变量,比如年龄。我对数据进行了排序,以便年龄按升序排列。我想删除每个数据集中相应年龄不匹配的观测值 数据集1:Stata 如何比较相邻观测值?,stata,Stata,我在Stata中附加了两个数据集 两个数据集中都有一个变量,比如年龄。我对数据进行了排序,以便年龄按升序排列。我想删除每个数据集中相应年龄不匹配的观测值 数据集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 因此,因为排序时的年龄与
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不匹配,我想删除它们。基本上,我想要一种方法,通过对相邻的数字进行循环,并比较它们的值,这样我就只剩下年龄相同的数字对了。在观察值上循环是低效的,在绝大多数情况下是不必要的 以下是我的作品:
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 |
+-----------+