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: construct a loop
From
Nick Cox <[email protected]>
To
"'[email protected]'" <[email protected]>
Subject
RE: st: construct a loop
Date
Mon, 21 Feb 2011 19:01:30 +0000
The help for -egen, group()- tells you about its -label- option. You really could have looked at that first!
foreach v in var1 var2 var3 {
egen group=group(`v')
sum group, meanonly
forval i = 1/`r(max)' {
di "`v': `: label (group) `i''"
stmh hivstatus if group ==`i'
}
drop group
}
is my guess at the other question. See -help extended_fcn- for the -label- stuff.
Nick
[email protected]
Nikolaos Pandis
Dear Nick,
Thank you.
********************
egen group=group(age_cat gender)
sum group ,meanonly
foreach i of num 1/`r(max)' {
stmh hivstatus if group ==`i'
}
**************************
I have added another variable and I get 6 combinations since age_cat has 3 levels (0,1,2) and gender 2 (0,1).
Should I assume that the sequence of the combinations is:
age_cat:gender 00 01 10 11 20 21?
Could we label them?
Also, what if I do not want the combinations but rather to run the same code below for a number of variables separately.
********************
egen group=group(var1)
sum group ,meanonly
foreach i of num 1/`r(max)' {
stmh hivstatus if group ==`i'
}
egen group=group(var2)
sum group ,meanonly
foreach i of num 1/`r(max)' {
stmh hivstatus if group ==`i'
}
egen group=group(var3)
sum group ,meanonly
foreach i of num 1/`r(max)' {
stmh hivstatus if group ==`i'
}
ect
**************************
How would I be able to consolidate the above 3 pieces of code into 1?
Many thanks,
Nick
--- On Mon, 2/21/11, Nick Cox <[email protected]> wrote:
> From: Nick Cox <[email protected]>
> Subject: RE: st: construct a loop
> To: "'[email protected]'" <[email protected]>
> Date: Monday, February 21, 2011, 8:12 PM
> This too is covered in the FAQ just
> cited.
>
> "It extends easily to the apparently much more difficult
> problem of going through all the distinct combinations of
> two or more variables, which is, in fact, only a little more
> difficult.
> . egen group = group(varlist)
>
> Now the code is exactly the same as before. That is,
> instead of one varname, you just need to spell out a varlist
> in the argument to egen."
>
> Nick
> [email protected]
>
>
> Nikolaos Pandis
>
>
> Thank you. I came up with the following code:
>
> *********************
> egen group=group(age_cat)
>
> sum group ,meanonly
>
> foreach i of num 1/`r(max)' {
> stmh hivstatus if group ==`i'
> }
> ****************
>
> How could I make this to do the same thing for other
> variables such as age_cat?
>
>
> --- On Sun, 2/20/11, Nick Cox <[email protected]>
> wrote:
>
> > Well, your solution then gets more
> > complicated. The thread has already
> > shown that you can nest loops. Also see
> >
> > FAQ . . . . . . . . . . Making
> > foreach go through all values of a variable
> > . . . . . . . . . . . . . . . .
> > . . . . . . . . . . . . . . N. J. Cox
> > 8/05 Is there a
> > way to tell Stata to try all values of a
> >
> > particular variable in a foreach statement without
> >
> > specifying them?
> > http://www.stata.com/support/faqs/data/foreach.html
> >
>
> > On Sat, Feb 19, 2011 at 8:48 PM, Nikolaos Pandis
> <[email protected]>
> > wrote:
> >
> > > Thank you all this looks great!
> > >
> > > Now what if I would like to run the same commands
> for
> > more than just the varX variable?
> > > What if the variables have variable number of
> category
> > levels?
> > >
> > > Many thanks,
> > >
> > > Nick
> > >
> > >
> > >
> > > --- On Sat, 2/19/11, Nick Cox <[email protected]>
> > wrote:
> > >
> > >> From: Nick Cox <[email protected]>
> > >> Subject: Re: st: construct a loop
> > >> To: [email protected]
> > >> Date: Saturday, February 19, 2011, 9:14 PM
> > >> Here is another way to do it.
> > >>
> > >> foreach p in "1 0" "2 0" "3 0" "2 1" "3 1" "3
> 2"
> > {
> > >> tokenize "`p'"
> > >> stmh varX, c(`1' , `2')
> > >> }
> > >>
> > >> Nick
> > >>
> > >> On Sat, Feb 19, 2011 at 12:03 PM, Nikolaos
> Pandis
> > <[email protected]>
> > >> wrote:
> > >>
> > >> > I would like to run the following
> commands
> > using the 4
> > >> level varX:
> > >> > stmh varX,c(1,0)
> > >> > stmh varX,c(2,0)
> > >> > stmh varX,c(3,0)
> > >> > stmh varX,c(2,1)
> > >> > stmh varX,c(3,1)
> > >> > stmh varx,c(3,2)
> > >> >
> > >> > I would grateful if someone would help
> me
> > construct a
> > >> loop to run all the above commands.
*
* 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/