Stata 如何比较相邻观测值?

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 因此,因为排序时的年龄与

我在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

因此,因为排序时的年龄与观察值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 |
     +-----------+