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
Nikolaos Pandis <[email protected]>
To
[email protected]
Subject
RE: st: construct a loop
Date
Mon, 21 Feb 2011 12:21:10 -0800 (PST)
Dear Nick,
Many Thanks.
Best wishes
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, 9:01 PM
> 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/
>
*
* 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/