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

Identify and delete observations that do not meet conditions in Stata

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

I need help identifying and removing observations that meet certain conditions. My data looks like this:

    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

For every set, I want to have one observation in which Var2=1 and two observations in which Var2=0. If they do not meet this condition, I want to delete all observations from the set. For example, I would delete set=4 because Var2=0 for all observations. How can I do this in Stata?

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

Consider the following new variables:

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

A literal reading of your question implies that you want to

keep if count1 == 1 & count0 == 2 

But if sets are always of size 3 and no values other than 0 or 1 are possible, then you need only count1 == 1 OR count0 == 2 OR total == 1 as a condition.