Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Sarah Edgington" <sedging@ucla.edu> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: looping through variables that are not consecutive and have common stem in name |
Date | Wed, 15 Jan 2014 14:35:11 -0800 |
David, You shouldn't need the foreach part because each iteration of j results in only one time variable. So your foreach loop only contains one element. This should get you what you want: forv j=1/164 { replace count_sub300=count_sub300+ (time`j'<300) } If you were using the foreach loop you'd want -foreach v in time`j'-. That's the other error that's probably leading to it "not working" (which is too vague a description of the problem to be helpful in figuring out what's going wrong). -Sarah -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of David de Jong Sent: Wednesday, January 15, 2014 2:07 PM To: statalist@hsphsun2.harvard.edu Subject: Re: st: looping through variables that are not consecutive and have common stem in name Oh geez, I wasn't kidding that I needed coffee. Apologies for the mess. Let me go back to the problem. The reason why I framed the question as I did was that I'd like to be able to run the loop across a subset of the time variables. This is why I imagine something like "forval j = 1/164" would be useful. gen count_sub300 = 0 qui forval j = 1/164 { qui foreach v time`j' { replace count_sub300 = count_sub300 + (`v' < 300) } } Nick, any advice? Thanks! ~ David C. de Jong, MA Department of Clinical and Social Sciences in Psychology University of Rochester 214 Meliora Hall Rochester, NY 14627 On Wed, Jan 15, 2014 at 4:58 PM, David de Jong <davidcdejong@gmail.com> wrote: > Hi Nick, > > Thanks for all of that, and for pointing out the variable mix-up. Time > for my afternoon coffee, apparently. > > Much appreciated! > > Best, > > David > ~ > David C. de Jong, MA > Department of Clinical and Social Sciences in Psychology University of > Rochester > 214 Meliora Hall > Rochester, NY 14627 > > > On Wed, Jan 15, 2014 at 4:25 PM, Nick Cox <njcoxstata@gmail.com> wrote: >> Something this should be sufficient: >> >> gen count_sub300 = 0 >> >> qui foreach v of var correct* { >> replace count_sub300 = count_sub300 + (`v' < 300) } >> >> Notes: >> >> 1. You said that you were only interested in the -time*- variables, >> but your code looks at the -correct*- variables. >> >> 2. `v' < 300 & `v' < . reduces to `v' < 300. >> >> Nick >> njcoxstata@gmail.com >> >> On 15 January 2014 21:12, David de Jong <davidcdejong@gmail.com> wrote: >> >>> I have the variables time1 correct1 time2 correct2 etc. >>> >>> I'd like to loop through only the time variables, counting values >>> that are under 300 and not missing. I'm trying to use something like this: >>> >>> qui forval j = 1/164 { >>> >>> qui foreach v correct`j' { >>> >>> replace count_sub300 = count_sub300 + (`v' < 300 & `v' < .) >>> >>> } >>> >>> } >>> >>> It's not working. I'm quite sure that the 2nd line is not correct, >>> but can't figure out what it should be. Can anyone advise? >> * >> * 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/ * * 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/ * * 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/