Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
"Sarah Edgington" <sedging@ucla.edu> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
RE: st: foreach command with multiple varlists |

Date |
Thu, 28 Mar 2013 13:42:19 -0700 |

Fatma, Steve's solution will work if you really have variables with names of the form x1 x2 x3 x4. If your variable names don't have numbers in them then you probably want a single loop using extended macro functions to reference multiple lists containing the actual variable names. For example: gen w=. forvalues i=1/4 { local x : word `i' of x_one x_two x_three x_four local y : word `i' of y_one y_two y_three y_four local z : word `i' of z_one z_two z_three z_four replace w=`x' if `y'==1 & `z'==1 } Note that, as with Steve's example, you want to -replace w- rather than -gen w- in the loop because otherwise you'll get an error message that w already exists in your second iteration. -Sarah -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Steve Nakoneshny Sent: Thursday, March 28, 2013 1:33 PM To: statalist@hsphsun2.harvard.edu Subject: Re: st: foreach command with multiple varlists Fatma, One initial problem I see is that you can only -gen- a var once. Every subsequent manipulation of that var will have to be done using -replace-. I suspect that you might be able to get away with something like as follows (untested): g w=. forval i 1/4 { replace w=x`i' if y`i'==2 & z`i'==1 } Steve On 2013-03-28, at 2:26 PM, Fatma Romeh wrote: > Dear statalist, > > I have a question regarding the "foreach" command. I'm wondering whether I can use multiple valists with "foreach"? More specifically, I'm looking for something like that: > > foreach x of varlist x1-x4 & y of varlist y1-y4 & z of varlist z1-z4 { > > gen w= `x' if `y'==2 & `z'==1 > } > > when I did that, I got this error message: "& invalid name". What I want to do is to use the "foreach" command to replace these commands: > gen w= x1 if y1==2 & z1==1 > gen w= x2 if y2==2 & z2==1 > gen w= x3 if y3==2 & z3==1 > gen w= x4 if y4==2 & z4==1 > > Is there a way to do that? > > > > Many thanks, > > > Fatma, > > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**References**:**st: foreach command with multiple varlists***From:*Fatma Romeh <fromeh1@student.gsu.edu>

**Re: st: foreach command with multiple varlists***From:*Steve Nakoneshny <scnakone@ucalgary.ca>

- Prev by Date:
**Re: st: foreach command with multiple varlists** - Next by Date:
**Re: st: Using natural logs on RHS of maximum likelihood models** - Previous by thread:
**Re: st: foreach command with multiple varlists** - Next by thread:
**Re: st: foreach command with multiple varlists** - Index(es):