Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
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/