Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: syntax error using summarize command inside a macro


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: syntax error using summarize command inside a macro
Date   Thu, 14 Sep 2006 19:05:19 +0100

First, what you are writing is called a macro in some other
languages, but not in Stata. Keep the terminology for 
some alternative software you may have encountered.

You can assign 

. local vars "var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 ... varn";

and that is legal. At that point the local is just a string, and its contents 
are under your control. But Stata cannot make sense of this when you 
want to interpret it as a varlist. It will choke at the "...". 

Alternatively, my guess is that this is _not_ what you wrote, in which 
case you are just confusing the issue by posting a mix of real code and
pseudocode. 

I sense various other typos and unnecessary complexities in the code. 

The one that is halting your code is probably that after substitution 
the line 

sum `v1' if `samp1' [aw=`v1']

will be 

sum <all your variables> if if prown3 == 0 [aw=<all your variables>] 

This is most unlikely to be what you want, but the "if if" is what
Stata is choking on, as it is trying to tell you. 

A more general comment is that you are trying to run when walking
will do the job very well. Setting up a loop is not needed as 
-summarize- does that for you. 

Your code seems to boil down to 

-------------------------------------
set mem 67m 
use "C:\newset.dta"  
su <varlist> if prown3 == 0 
-------------------------------------

in which you need to plug your variable names into <varlist>, 
except that I cannot work out how you want to apply weights. 

Nick 
n.j.cox@durham.ac.uk 

Marcella Sapun
> 
> I am trying to produce a summary statistics on a series of variables
> using the command SUM inside a macro subroutine. Apparently, my
> "try=off" program (see below) is not working because a syntax error. I
> cannot find the error. Would anybody be able to see it?
> 
> --------------------------------------------------------------
> -------------------------------------------------
> . do "C:\univariates.do"
> . 
> . set mem 67m 
> (68608k)
> 
> . 
> . use "C:\newset.dta"  
> . 
> . 
> . #delimit;
> delimiter now ;
> . local vars "var1 var2 var3 var4 var5 var6 var7 
> >                 var8 var9 var10 var11 var12 ... varn";
> 
> . #delimit cr
> delimiter now cr
> . 
> . local v1 "`vars'"
> . 
> . local samp1 "if prown3==0"  
> 
> . foreach v of varlist `v1' {
>   2. sum `v1' if `samp1' [aw=`v1']
>   3. }
> if not found
> r(111);
> 
> end of do-file
> r(111);

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index