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: RE: looping up to a local macro


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: looping up to a local macro
Date   Thu, 23 Jun 2011 00:16:37 +0100

It's true that there could be other variables such as
-letter0aardvark-, -letter0bison-, -letter0coypu-, and so forth.

On Thu, Jun 23, 2011 at 12:13 AM, Nick Cox <njcoxstata@gmail.com> wrote:
> I don't think it's clear that any explicit looping or macro
> manipulation is needed at all. Michael wants to change a bunch of
> variables -letter01- on to -letter1- on , for which a solution is
>
> renpfix letter0 letter
>
> -renpfix- has long been an official command.
>
> The -recode- part will take a varlist, so looping is also unnecessary for that.
>
> However, I can't vouch for what is needed to speed up the unspecified
> lines of code.
>
> Nick
>
> On Wed, Jun 22, 2011 at 11:20 PM, Sarah Edgington <sedging@ucla.edu> wrote:
>> Michael,
>> What do you mean by "I can't quite get it to work"?  What problem are you
>> having?
>> Without more information about what's going wrong it is really difficult to
>> offer much assistance.  The form of your loop looks fine.  Maybe there's
>> some problem with the code in the loop itself.  Does it work if you specify
>> a number instead of the local macro?  You're setting the value of letters in
>> the same dofile as the forvalues loop, right?  If you aren't that's going to
>> be a problem.
>
>  Michael Costello
>
>> I'm writing to ask about combining loops with local values.  I have a local
>> macro that I need to set equal to some value, different for each database.
>>  Let's say, for example, 50 in one db, 100 in another.  Then I want to
>> preform some loop operation on all the variables from
>> letter1 up to letter50 or letter100 (depending on the database).  Is that
>> possible, with some change to the code below?  I can't quite get it to work.
>>
>> local letters 100
>>
>> forvalues i = 1(1)`letters' {
>>   quietly: rename letter0`i' letter`i'
>>   quietly: recode letter`i' (9=.) (2=1) (1=0)
>>   * more lines of code here
>> }
>>
>> Basically, instead of copy ~400 lines of code into several dozen cleaning
>> files, I'd like to just set  the maximum value (50, 100, 20,
>> etc) for the database and have it run one cleaning file.  Thanks for any
>> help you can provide!
>

*
*   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