如何删除 Stata 中的重复观察

How to remove duplicate observations in 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个obs)

对于组id=4,保持观察1(或其中任何一个观察)

我正在尝试 Stata duplicates 命令,

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

但它没有按我的要求工作。

duplicates 没有满足您的要求也就不足为奇了,因为它不符合您的问题。例如,带有 id == 2, disease == 0 的观察不是任何其他观察的重复。更一般地说,duplicates 并不声称是用于删除您不想要的观察结果的通用命令。

您的标准似乎是

  1. 每个 id 保留一个观察值。

  2. 如果id有任何值是1的观测值,那将被保留。

一个解决方案是

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

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