Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Abhimanyu Arora <abhimanyu.arora1987@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: AW: RE: renaming variables |
Date | Fri, 21 May 2010 15:40:15 +0200 |
I see. Well, a simple thanks would be an understatement to you both for your detailed solutions. I am sorry my help file was not updated (didn't realize that Prof. Cox was a coauthor for the -renvars- program). Best regards Abhimanyu On Fri, May 21, 2010 at 2:35 PM, Martin Weiss <martin.weiss1@gmx.de> wrote: > > <> > > " 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/ > * * 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/