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 |
"Martin Weiss" <martin.weiss1@gmx.de> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: AW: RE: renaming variables |

Date |
Fri, 21 May 2010 14:35:47 +0200 |

<> " His code can be very slightly simplified:" So in case you did not know where Nick lives/works, it is the European country where "understatement" is more popular than anywhere else... -ren `var' year`start'- is of course a substantial improvement on my code, although pedagogically mine may make a more lasting impact on readers. If you want an even shorter version still, throw out -set obs 1- as well: to show changes in variable names, we do not need actual data, do we? HTH Martin -----Ursprüngliche Nachricht----- Von: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Nick Cox Gesendet: Freitag, 21. Mai 2010 14:26 An: statalist@hsphsun2.harvard.edu Betreff: st: RE: renaming variables -renvars- was written by Jeroen Weesie and myself. Good practice as often requested on the list is to say where user-written stuff comes from, which here is the Stata Journal site. As you say, your code was incorrect. 1. -postsub()- is an option of -renvars- and therefore must follow a comma. 2. -postsub()- does not use comma as separator but a space. 3. Your code would not change "var" to "year". 4. You need at most one loop simultaneously over 53(3)107 and 1990/2008 (with 19 iterations) but your two nested loops would produce 19 * 19 iterations. In principle, you seem to be trying to call -renvars- once for each renaming. If you are going to do that you might as well use -rename-. -renvars- can be used to solve your problem -- in one line -- but I think the solution is too messy to be interesting. After all, you want to change the prefix systematically and the postfix from an idiosyncratic number to a more systematic number, all at once, and no one-line solution for that could look nice. Any way, this is a solution: renvars var*, map("year" + string(1989 + (real(substr("@",4,.)) - 50) / 3)) Here all the looping is inside -renvars-. Even as an author of -renvars- I would much prefer going back to first principles and very much agree with Martin Weiss's strategy. His code can be very slightly simplified: clear set obs 1 forv i=53(3)107{ gen var`i'=1 } //-rename- loc start 1990 foreach var of varlist var*{ ren `var' year`start' loc ++start } Nick n.j.cox@durham.ac.uk Abhimanyu Arora I would like to rename my variables var53....var108 such that var53, var56, var59 ......var107 etc...are renamed as year1990, year1991......year2008 repectively. I tried to use renvars(by Jeroen Weesie) and a forvalues loop, but am not able to succeed. Is there any other way? PS-my incorrect way follows forvalues j =53(3)107{ forvalues i =1990/2008{ renvars postsub(`i',`j') /*the arguments should be strings, I guess, though*/ } } * * 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/

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

**st: RE: renaming variables***From:*"Nick Cox" <n.j.cox@durham.ac.uk>

- Prev by Date:
**st: RE: renaming variables** - Next by Date:
**st: Reshape help** - Previous by thread:
**st: RE: renaming variables** - Next by thread:
**Re: st: AW: RE: renaming variables** - Index(es):