Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: Referring to elements of a varlist in a program


From   Dani Tilley <tilleydani@yahoo.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Referring to elements of a varlist in a program
Date   Fri, 9 Jul 2010 09:50:16 -0700 (PDT)

Thanks so much to both of you.



----- Original Message ----

Other ways to do


token `varlist'    //added//
qui su `2'  /* changed */

are

local y : word 2 of `varlist'
qui su `y'

and

qui su `: word 2 of `varlist''

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

Eric Booth

<>
Hi Dani:

You were close, just a few minor fixes.  The trick in choosing the first  or 
second variable in the `varlist' is  to use -tokenize- :

**********!
cap program drop example   //added//

program example, rclass
version 10.0
syntax varlist(min=2 max=2 numeric)  /* changed */

loc m=0
foreach v of local varlist {   /* changed */

qui su `v',mean
loc m=`m'+`r(mean)'
}

//second variable in varlist only //
token `varlist'    //added//
qui su `2'  /* changed */

local sd = `r(sd)'
local final = `m' / `sd'
**drop m sd      //these aren't vars--you don't need to drop  them//
return local final = `final'
di as txt  "Final result is: `final'"  //added//
end


webuse auto, clear
example price mpg

**these should fail**
example price //too few vars
example rep78 price mpg for  //too many vars
example rep78 make  //fails b/c non-numeric string
**********!

~ Eric

__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
ebooth@ppri.tamu.edu
Office: +979.845.6754

From: Dani Tilley <tilleydani@yahoo.com>
To: stata <statalist@hsphsun2.harvard.edu>
Sent: Thu, July 8, 2010 11:57:05 PM
Subject: st: Referring to elements of a varlist in a program

Hi,

I'm trying to write a program that will automate some commands, but to increase 
its usability I need to include 2 variables in the syntax. I need to figure out 
a way to refer to a user-specified variables and  manipulate them in the body of 

the program. For instance, if the user  were to specify two variables -example 
var1 var2- ,my program would find the mean for each  and divide the sum of the 
means by the standard deviation of the second  variable. (this is just an 
exercise, it doesn't mean anything) 


I've declared the following


program example, rclass
version 10.0
syntax varlist(min=2 max2)

loc m=0
foreach v of varlist `varlist' {
qui su `v',mean
loc m=`m'+`r(mean)'
}

qui su varlist[2] ///I don't know how to refer to this
local sd = `r(sd)'
local final = `m' / `sd'
drop m sd
return local final = `final'

end


Any help is appreciated.

DF Tilley


      
*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index