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

# st: RE: RE: Evaluating a set of conditions

 From "Nick Cox" To Subject st: RE: RE: Evaluating a set of conditions Date Wed, 16 Jun 2010 23:58:56 +0100

```Martin makes key points here. I'd emphasise his last: internalising that
true expressions evaluate to 1 and false to 0 is often most helpful. A
first tutorial is at

FAQ     . . . . . . . . . . . . . . . . . . . . . . .  True and false in
Stata
2/03    What is true and false in Stata?
http://www.stata.com/support/faqs/data/trueorfalse.html

Nick
n.j.cox@durham.ac.uk

Martin Weiss

" but I hardly ever use them because
understanding them (or remembering them) usually takes longer then
writing the 'lengthy' qualifiers."

-cond- and -inrange- are among the most easily understood functions in
Stata, if you want my take on this. Try Nick and coauthor`s
http://www.stata-journal.com/sjpdf.html?articlenum=pr0016 tutorial on
-cond-
or http://www.stata-journal.com/sjpdf.html?articlenum=dm0026 on
-inrange-.

Also, you can multiply expressions which can be handy. So if you want
the
running sum only for the cars with bad to average repair record:

***
sysuse auto, clear
sort rep78
gen newvar=sum((rep78<=3)*price)
l rep78 price newvar
***

Thomas Speidel

I realize this is a very broad question and no one solution can fit
all problems. I am looking for more efficient or elegant alternatives
to evaluate a set of conditions in Stata, than a lenghty if qualifier.
E.g.:

do something if A==1 & (B>2 & B<.) & (C==1 | D!=2)

these expression can become lengthy and one can think of more elegant
ways to come to the same results.
cond and inrange are the first things that come to my mind that may
(or may not) simplify the problem, but I hardly ever use them because
understanding them (or remembering them) usually takes longer then
writing the 'lengthy' qualifiers.
To complicate matters one has to account for missing values.