Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: Evaluating a set of conditions

From   "Nick Cox" <>
To   <>
Subject   st: RE: Evaluating a set of conditions
Date   Wed, 23 Jun 2010 12:43:36 +0100

I think you need to be clear whether missing means true, false or
indeterminate as far as this is concerned. 

Setting aside missings, as a, b, c, d, e are Booleans (1 = true, 0 =
false) then 

gen disease_true = a & (b + c + d + e >= 2) 

is one way to do it. If missings make the problem indeterminate then
tack on 

... if !missing(a, b, c, d, e) 


Thomas Speidel

Following up on my previous post:
here is an example for something I am trying to achieve in a  
nice/efficient/eleganty way.

I have a number of dummies: a, b, c, d, e (missing values do exist)
Disease=true if the following conditions are met:

1) a must be true AND
2) any two of b, c, d, e are true

As I said missing values are crucial, especially when evaluating the  
second condition.

My current program works, but I don't think it is efficient and it  
probably does things that are unnecessary:

egen anytwo = rowtotal(a b c d e), missing
egen missing = rowmiss(a b c d e)
replace anytwo = . if (anytwo==0 & missing>=2 & missing<.)
replace anytwo = . if (anytwo==1 & missing==1)
replace anytwo = . if (anytwo==1 & missing==3)
replace anytwo = . if (missing>=4)

gen disease = 1 if (a==1 & anytwo>=2 & anytwo<.)
replace disease = 0 if (a==1 & anytwo<2)
replace disease = 0 if a==0
replace disease =. if a==.

I tried to play around with cond, but I found it was making this much  
more complicated then it is.  I know I am complicating my life more  
than I need to which is why I am looking for alternative solutions.

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index