Katsuhide Isa
> I wrote the following two simple statements in the same
> do file. But when executed, the latter ('NG') returned
> nothing, while the former ('OK') returned the desired
> results:
>
> ----------
> /*OK*/
> l bonus if age == 58 & year ==2001
> pause
> l bonus if age == 59 & year ==2001
> pause
>
> /*NG*/
> if age == 58 & year ==2001{
> l bonus
> pause
> }
> else if age == 59 & year ==2001{
> l bonus
> pause
> }
> ----------
> This may be a preliminary question, but I don't
> understand why.this difference occurs.
> If there is any syntax error in the latter statements,
> Stata should stop and gives an error message. But
> they are executed without stopping, which makes me
> all the more perplexed.
Ulrich Kohler
The first statement uses the "if"-qualifier. As -help if- states,
there is another -if- used in Stata programming, which you use in your
second
statement. This programming command evaluates an expression. But
unlike the
"if" qualifier the if-command does not evaluate the expression for
each
observation of the dataset. When used with a variable the if-command
only
evaluates the expression for the first observation. Your code:
if age == 58 & year ==2001{
l bonus
pause
}
therefore means: if the first observation in your dataset is 58 years
old and
from year 2001, Stata is going to list _all_ observations.
You should not use the if programing command for an expression
containing a
variable. The if programing command should be used for expression
containing
macros.
>>> In addition, see the FAQ
I have an if command in my program that only
seems to evaluate the first observation. What's going on?
http://www.stata.com/support/faqs/lang/ifqualifier.html
Nick
[email protected]
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/