如何删除Stata中的重复观察

时间:2015-01-30 12:21:30

标签: duplicates stata

假设我有以下数据:

id  disease
1   0
1   1
1   0
2   0
2   1
3   0
4   0
4   0

我想删除Stata中的重复观察。 例如

id   disease
1      1
2      1
3      0
4      0

对于组id = 1,请继续观察2

对于组id = 2,请继续观察2

对于组id = 3,请保持观察1(因为它只有1个障碍物)

对于组id = 4,保持观察1(或其中任何一个,但只有一个障碍物)

我正在尝试Stata duplicates命令,

duplicates tag id if disease==0, generate(info)
drop if info==1

但它不能按照我的要求工作。

1 个答案:

答案 0 :(得分:2)

毫无疑问duplicates没有做你想要的事情,因为它不适合你的问题。例如,id == 2, disease == 0的观察结果与任何其他观察结果不重复。更一般地说,duplicates并不是用于删除您不想要的观察的通用命令。

您的标准似乎是

  1. 为每个id保留一个观察点。

  2. 如果id有值为1的任何观察值,那就是保留。

  3. 解决方法是

    bysort id (disease) : keep if _n == _N 
    

    这保留了每个不同id的最后一次观察:在id内对disease进行排序后,对疾病的观察结果必然在每个组的末尾。