Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Brandon Olszewski <olszewski.brandon@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: Loop over a list of strings with logs |
Date | Wed, 29 Jan 2014 14:01:23 -0800 |
Thank you, Nick! I like the encode suggestion to reduce issues with the strings. I'll go for it. Thank you! Cheers, Brandon On Wed, Jan 29, 2014 at 12:19 PM, Nick Cox <njcoxstata@gmail.com> wrote: > Stata is choking on > > keep if school == adams > > which only makes sense if -adams- is a string variable. But it's not, > so Stata complains. > > It should work if you had set up your code so that you got. > > keep if school == "adams" > > That said, your code looks fragile if you have spaces in your names, > e.g. "William Gould". Also, don't use backslashes before local macro > references. Also, your -display- command won't do what you want. > > I'd recommend something more like this. > > encode school, gen(n_school) > su n_school, meanonly > > forval i = 1/`r(max)' { > local where : label (n_school) `i' > di "`where'" > local where : subinstr local where " " "_", all > preserve > log using C:/stata/`where'_results.txt, text replace > keep if n_school==`i' > tab item1 > tab item2 > log close > restore > } > > Nick > njcoxstata@gmail.com > > > On 29 January 2014 19:56, Brandon Olszewski <olszewski.brandon@gmail.com> wrote: >> I am using Stata 12. I have a list of schools that I want to loop some >> commands over, including logging output. I have consulted the >> "Speaking Stata: How to face lists with fortitudeQ2/02 SJ >> 2(2):202--222" article and searched the list, but I am still >> mystified. This is what I want to do: >> >> I have a list of schools (var = school, string format), call them >> "adams" "billings" and "charles". I want to perform the following >> operations that will yield by school results: start a log that is >> named for the respective school, keep observations only for one >> school, display the school's name, tab responses to item1 and item2, >> and close the log. I think it should be something like this: >> >> foreach i in adams billings charles { >> preserve >> log using "C:\stata\`i'_results.txt, text replace >> keep if school==`i' >> di in r school >> tab item1 >> tab item2 >> log close >> restore >> } >> >> I know I can also do something like: >> >> local schools "adams billings charles" >> foreach i in `schools' { >> preserve >> etc... >> } >> >> When I try anything, Stata tells me that "adams not found". >> > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/statalist-faq/ > * http://www.ats.ucla.edu/stat/stata/ -- /////////////////////// Brandon Olszewski, Ph.D. Senior Education Consultant, ISTE Adjunct Instructor, University of Oregon olszewski.brandon@gmail.com * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/