Nirina,
Along with the advice of Gabi Huiber, you need to understand the effect of
your initial statement:
. local n=sibnum
This statement sets the value of the local variable `n' to the value of the
variable sibnum for the FIRST CASE in your dataset. It does not update the
value of `n' for every case. In short, the statement is executed ONCE for
the entire dataset. I would be surprised if the value of sibnum for that
first case is not 5.
This is one of the two most frequently encountered gotchas of new (and some
of us old) Stata programmers. The other is misunderstanding the role of
"if" as a conditional execution phrase in a Stata command and as a
conditional for Stata programs.
In any case, eliminate this line, alter the code to loop over 11 (not `n'),
perform the check Gabi recommended and you're home free, I believe.
Dave
. . . . . . . . . . . . . . . . . .
David Moore, Ph.D. | Sr. Director
T I N D E R B O X | IGNITE. INSPIRE. INNOVATE.
TINDERBOX IS PART OF THE HARTMAN GROUP, INC.
425.452.0818 ext 112 | www.tinderboxthg.com
-----Original Message-----
Date: Sat, 20 Dec 2008 10:38:55 -0500
From: "Nirina F" <[email protected]>
Subject: st: not sure about my loop results
Hello,
I was writing the following loop to get the age of each of the
respondent's sibling.
local n=sibnum
forvalues i=1(1)`n'{
gen agesib`i'= 2006-yearsib`i' if yearsib`i' !=.
}
Nirina
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/