Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Nick Cox" <n.j.cox@durham.ac.uk> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: RE: about macro's double quotes |
Date | Tue, 9 Mar 2010 21:57:27 -0000 |
I already provided an answer. I think that Guang needs to . set varabbrev off Stata objects to an instruction to -generate- new variable -gr5pnhm- because it interprets that as an abbreviation of existing variable -gr5pnhmy-. Nick n.j.cox@durham.ac.uk Martin Weiss I would be surprised if Stata indeed complained about "r5pnhm5y", I guess it complains about "r5pnhm5". Second time through the inner loop, you want Stata to refuse to -generate- because the -if- expression is not satisfied, but Stata does still (try to) -generate-, and fill the new var with missings - due to the -if-... clear* set obs 100 local set "md me" foreach el in `set'{ gen x`el'=1 if "`el'"=="md" } G. Dai thanks for the reference, Martin. yeah, the outer loop is redundant. But I do want to know why that "if" doesn't work. it is wired to a beginner... On Tue, Mar 9, 2010 at 12:20 PM, Martin Weiss <martin.weiss1@gmx.de> wrote: . If you want to read up on -macro-s, check out manual [U], section 18.3. > > What do you want to achieve with your outer loop? You let it cycle through > three elements of a -global-. The -gen- and -replace- statements inside the > second loop are supposed to be executed only for the first element of the > -global-. Would it not be much easier to drag the -gen-/-replace- statement > out of the inner loop, and ditch the outer one? Maybe this is taken out of > context, but from what is visible in your post, the outer loop is > redundant... > G. Dai > I'm a first time user of macros. As you can see from below, I want to > generate a new var r`i'pnhm when x=md. After execute the do file, it > runs smoothly for x=md. After that, however, I was always reminded by STATA > that > r5pnhm5y already defined > r(110); > so what's wrong with the following program. BTW,I'm little bit confused by > the macro > quotes, can anyone say tips? > global set "md mom dad"; > foreach x in $set {; > forvalues i=5/8{; > gen r`i'pnhm=. if "`x'"=="md"; > replace r`i'pnhm=int(10*r`i'pnhm5y)/10 if "`x'"=="md"; > .... > }; * * 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/