假设我有以下数据:
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
但它不能按照我的要求工作。
答案 0 :(得分:2)
毫无疑问duplicates
没有做你想要的事情,因为它不适合你的问题。例如,id == 2, disease == 0
的观察结果与任何其他观察结果不重复。更一般地说,duplicates
并不是用于删除您不想要的观察的通用命令。
您的标准似乎是
为每个id
保留一个观察点。
如果id
有值为1
的任何观察值,那就是保留。
解决方法是
bysort id (disease) : keep if _n == _N
这保留了每个不同id
的最后一次观察:在id
内对disease
进行排序后,对疾病的观察结果必然在每个组的末尾。