Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
Nick Cox <njcoxstata@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: renaming variables from first observation |

Date |
Thu, 25 Aug 2011 10:13:17 +0100 |

Let's assume that your first values are all legal names. You could indeed do this forval j = 1/14 { local names `names' `=var`j'[1]' } renvars var1-var14 \ `names' But that's actually dozens of lines more code (look _inside_ -renvars-) than forval j = 1/14 { rename var`j' `=var`j'[1]' } and the second is in any case shorter and more direct, even without looking inside -renvars-. You asked what a solution was with -renvars- and I agree that it looks complicated. The -map()- option was mine and intended as an outlet for the desperate user-programmer whose problem was not met by any of the other options. But usually you need to be moderately fluent in Stata to make effective use of it. The program was written for the authors' use and any utility beyond that is a pleasant side-effect! `= exp' evaluates an expression on the fly and is documented tersely at -help macro-. But the main idea is simple. Consider as part of a command line `= 2 + 2' Stata sees ` ' and so expects something like a macro reference to be substituted. But instead of a macro name there is = 2 + 2 Stata does the calculation on the fly. In this case the result is 4 and that is what the command would see. -renvars- is over a decade old now. After that length of time StataCorp caught up and the official -rename- is now much versatile in Stata 12, although I doubt it has a way to solve your problem without a loop. I would be happy to be shown wrong on that. Nick On Thu, Aug 25, 2011 at 9:50 AM, Abhimanyu Arora <abhimanyu.arora1987@gmail.com> wrote: > Yes Nick, precisely, my values in the first observation were not > legal. What I meant by storing values in a macro was something like a > horizontal -levelsof- command. Once I obtain the values in a single > macro I thought of simply using your and Jeroen Weesie's -renvars-. > > But the map option seems not that easy to understand, perhaps because > I find `quotes' confusing sometimes. One needs to have a string > expression in the parentheses while using the map option but I see > that the expression in your example is in `quotes', normally used for > macros. Would be really great if you could clarify this fundamental > issue. > > Many thanks > Abhimanyu > > > . list in 1 > > +--------------------------------------------------------------------------------------------------------------------+ > 1. | var1 | var2 | var3 | var4 | var5 > | var6 | var7 | var8 | var9 | var10 | var11 | var12 | > | Series Code | Series Name | Country Code | Country Name | 2000 > | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | > |---------------------------------------------------------+----------------------------------------------------------| > | var13 | > var14 | > | 2008 | > 2009 | > +--------------------------------------------------------------------------------------------------------------------+ > > On Thu, Aug 25, 2011 at 10:35 AM, Nick Cox <njcoxstata@gmail.com> wrote: >> Already answered, but not correctly. You could e.g. use the first word >> of the first value. This works: >> >> . l >> >> +------------------------------+ >> | var1 var2 var3 | >> |------------------------------| >> 1. | Frog Toad Venomous snake | >> 2. | 1 2 3 | >> +------------------------------+ >> >> . renvars , map(`=word("@", 1)') >> >> . l >> >> +------------------------------+ >> | Frog Toad Venomous | >> |------------------------------| >> 1. | Frog Toad Venomous snake | >> 2. | 1 2 3 | >> +------------------------------+ >> >> Nick >> >> On Thu, Aug 25, 2011 at 9:25 AM, Abhimanyu Arora >> <abhimanyu.arora1987@gmail.com> wrote: >>> I caught the mistake, thanks to -set trace on-. 'Code' is the second >>> word of my observation of the first variable and of course a variable >>> name has to be single worded. But my question on possibility of using >>> Nick's -renvars- remains. >>> Best regards >>> Abhimanyu >>> >>> >>> On Thu, Aug 25, 2011 at 10:07 AM, Abhimanyu Arora >>> <abhimanyu.arora1987@gmail.com> wrote: >>>> Good morning statalist >>>> I would like to rename my variables var1-var14 to the corresponding >>>> values from the first observation. >>>> I followed the post on >>>> http://www.stata.com/statalist/archive/2004-07/msg00009.html and >>>> modified it for my purpose. >>>> >>>> but I got this error >>>> >>>> . forvalues k = 1/14 { >>>> 2. local newname = var`k'[1] >>>> 3. ren var`k' `newname' >>>> 4. } >>>> >>>> Code not allowed >>>> >>>> Also is it posible to store the values of an observation in a macro? >>>> Perhaps I could then use Nick Cox's -renvars-? >>>> * * 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/

**Follow-Ups**:**Re: st: renaming variables from first observation***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**st: renaming variables from first observation***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

**Re: st: renaming variables from first observation***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

**Re: st: renaming variables from first observation***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: renaming variables from first observation***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

- Prev by Date:
**RE: st: Useful labelling of dummy variables following logit** - Next by Date:
**Re: st: renaming variables from first observation** - Previous by thread:
**Re: st: renaming variables from first observation** - Next by thread:
**Re: st: renaming variables from first observation** - Index(es):