Bookmark and Share

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


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

Re: st: RE: loop question


From   P C <[email protected]>
To   [email protected]
Subject   Re: st: RE: loop question
Date   Tue, 30 Nov 2010 11:15:42 -0800 (PST)

Thanks for the reply.

Basically, I have twenty variables in the data set. They have the same suffix: 
w1flsibage. They all ended up with different numbers. The twenty variables 
go like this: w1flsibage1 w1flsibage2 .... w1flsibage20. These variables 
indicate sibling's age. 


Then I compare each of the above variable with another variable: w1ageint 
(respondent's age). 


I need to calculate how many of the above 20 variables have values that are 
greater than w1ageint. In this way, I would know how many siblings a respondent 
would have that are older the respondent.

In this case, how should I write out the program?

Thanks



----- Original Message ----
From: Nick Cox <[email protected]>
To: "[email protected]" <[email protected]>
Sent: Tue, November 30, 2010 11:55:27 AM
Subject: st: RE: loop question

First off, a -foreach- loop over the integers 1/20 is better written as a 
-forval- loop 


forval n = 1/20 { 

} 

But more importantly, 

1. Looping sounds a bad way to do what you want.  

2. You are treating macros as if they were variables, which is a major 
misunderstanding.

You'd be better off explaining the structure of your data and what you want to 
do in words, and then you'll probably get better advice on what you should do. 


Nick 
[email protected] 

P.S. please see Statalist advice: 

http://www.stata.com/support/faqs/res/statalist.html#tojoin

especially 2.1.3. 

P C
===

I have a loop question. 

I want to do something like this:

local i=0
gen w1ttflsbyger=.
foreach n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20{
 replace w1ttflsbyger=`i'+1 if w1flsibage`n'<w1ageint & w1flsibage`n'!=. & 
w1ageint~=.
 replace i=`i'+1 if w1flsibage`n'<w1ageint & w1flsibage`n'!=. & w1ageint~=.
}

Of course, the last line of the syntax was wrong. Basically, I want to write 
something to let "i" to increase by 1 if the condition: "w1flsibage`n'<w1ageint 
& w1flsibage`n'!=. & w1ageint~=." are satisfied. Otherwise, "i" won't increase 
by 1 and will jump out of the loop.

How should I write the loop?


*
*  For searches and help try:
*  http://www.stata.com/help.cgi?searchhttp://www.stata.com/support/statalist/faqhttp://www.ats.ucla.edu/stat/stata/



      

*
*   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/


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