如何删除 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
并不声称是用于删除您不想要的观察结果的通用命令。
您的标准似乎是
每个 id
保留一个观察值。
如果id
有任何值是1
的观测值,那将被保留。
一个解决方案是
bysort id (disease) : keep if _n == _N
保留每个不同 id
的最后观察结果:在 id
内对 disease
进行排序后,对疾病的观察结果必然在每个组的末尾。
假设我有以下数据:
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
并不声称是用于删除您不想要的观察结果的通用命令。
您的标准似乎是
每个
id
保留一个观察值。如果
id
有任何值是1
的观测值,那将被保留。
一个解决方案是
bysort id (disease) : keep if _n == _N
保留每个不同 id
的最后观察结果:在 id
内对 disease
进行排序后,对疾病的观察结果必然在每个组的末尾。