Warm tip: This article is reproduced from serverfault.com, please click

drop-识别并删除不符合Stata条件的观测值

(drop - Identify and delete observations that do not meet conditions in Stata)

发布于 2020-12-09 11:55:29

我需要帮助来确定和删除满足某些条件的观察结果。我的数据如下所示:

    ID caseID set Var1 Var2 
    1    1      1  1    0
    1    2      1  2    0
    1    3      1  3    1
    1    4      2  1    0
    1    5      2  2    0
    1    6      2  3    1
    2    7      3  1    0
    2    8      3  2    0
    2    9      3  3    1       
    2   10      4  1    0
    2   11      4  2    0
    2   12      4  3    0

对于每个集合,我希望有一个观测值(其中Var2 = 1)和两个观测值(其中Var2 = 0)。如果它们不满足此条件,那么我想从集合中删除所有观察值。例如,我将删除set = 4,因为所有观察值的Var2 = 0。如何在Stata中做到这一点?

Questioner
Student
Viewed
0
Nick Cox 2020-12-09 21:40:14

考虑以下新变量:

egen count1 = total(Var2 == 1), by(set)
egen count0 = total(Var2 == 0), by(set)
egen total = total(Var2), by(set)

从字面上看你的问题意味着你想要

keep if count1 == 1 & count0 == 2 

但是,如果集合的大小始终为3,并且除了0或1之外没有其他值是可能的,则只需要count1 == 1OR count0 == 2ORtotal == 1作为条件。