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: about macro's double quotes


From   "Martin Weiss" <[email protected]>
To   <[email protected]>
Subject   RE: st: RE: about macro's double quotes
Date   Tue, 9 Mar 2010 23:08:26 +0100

<>

BTW, I do not get any complaints from Stata, whether -varabbrev- is on or
off:


*******
clear*
set obs 1
set varabbrev off 
query other
gen gr5pnhmy=1
gen gr5pnhm=1
d

clear*
set obs 1
set varabbrev on 
query other
gen gr5pnhmy=1
gen gr5pnhm=1
d
*******


HTH
Martin


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Nick Cox
Sent: Dienstag, 9. März 2010 22:57
To: [email protected]
Subject: RE: st: RE: about macro's double quotes

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 
[email protected] 

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 <[email protected]>
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/


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