如何比较相邻观测值?

时间:2018-10-20 18:47:14

标签: stata

我有两个数据集,已在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

因此,由于排序时的年龄与观察值56不匹配,因此我想删除它们。本质上,我希望有一种方法可以遍历成对的相邻数字并比较它们的值,以便只剩下具有相同年龄的对。

1 个答案:

答案 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 |
     +-----------+