【问题标题】:How can I compare values of adjacent observations?如何比较相邻观察值的值?
【发布时间】:2018-10-21 02:55:31
【问题描述】:

我有两个数据集,我在 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 不匹配,所以我想删除它们。本质上,我想要一种方法来遍历相邻数字对并比较它们的值,这样我就只剩下年龄相同的数字对了。

【问题讨论】:

    标签: stata


    【解决方案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 |
         +-----------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多