识别并删除 Stata 中不满足条件的观察

Identify and delete observations that do not meet conditions in Stata

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

    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 中执行此操作?

考虑以下新变量:

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 == 1 OR count0 == 2 OR total == 1 作为条件。