Thanks, this was exactly what I needed!
Philip Ryan's direct-reshape approach may have been a good
alternative, but I'm happy with James' solution.
Jeppe
On 8/2/05, James Muller <[email protected]> wrote:
> If your dates are all the same number of digits you can do some direct
> string processing:
>
>
> foreach var of varlist `mylist' {
> local len = length("`var'")
>
> local head = substr("`var'",1,`len'-2)
> local tail = substr("`var'",`len'-1,`len')
>
> if (`tail' < 70) local date = 2000 + `tail'
> else local date = 1900 + `tail'
>
> rename `var' `head'`date'
> }
>
>
> and then reshape as you like.
>
> James
>
>
>
> David Harrison wrote:
>
> >Along these lines, you could also specify that the two-digit year should be
> a string variable with, e.g.
> >
> >reshape long var1_ var2_, i(id) j(year) string
> >
> >David
> >
> >-----Original Message-----
> >From: [email protected]
> >[mailto:[email protected]]On Behalf Of Philip Ryan
> >Sent: 02 August 2005 14:06
> >To: [email protected]
> >Subject: Re: st: Extract variable name in order to change it,
> >iteratively
> >
> >
> >You might try an alternative specification of the j index on -reshape-.
> >
> >Here is a little data set:
> >
> >. list, clean noobs
> >
> > id var1_00 var1_01 var1_88 var1_89 var2_00 var2_01 var2_88 var2_89
> > 1 11 13 12 3 4 6 67 8
> > 2 9 6 14 5 10 2 18 3
> > 3 13 4 11 2 15 8 8 7
> >
> >
> >. reshape long var1_ var2_, i(id) j(year 00 01 88 89)
> >
> >Data wide -> long
> >-----------------------------------------------------------------------------
> >Number of obs. 3 -> 12
> >Number of variables 9 -> 4
> >j variable (4 values) -> year
> >xij variables:
> > var1_00 var1_01 ... var1_89 -> var1_
> > var2_00 var2_01 ... var2_89 -> var2_
> >-----------------------------------------------------------------------------
> >
> >. li, clean noobs
> >
> > id year var1_ var2_
> > 1 0 11 4
> > 1 1 13 6
> > 1 88 12 67
> > 1 89 3 8
> > 2 0 9 10
> > 2 1 6 2
> > 2 88 14 18
> > 2 89 5 3
> > 3 0 13 15
> > 3 1 4 8
> > 3 88 11 8
> > 3 89 2 7
> >
> >That is to say, _you_ may specify the values of the subobservation index
> rather
> >than allow Stata to try and determine them - unsuccesfully on this
> occasion, as
> >you discovered.
> >
> >Phil
> >
> >
> >Quoting Jeppe Warberg Larsen <[email protected]>:
> >
> >
> >
> >>I have a wide data structure. Each observation consists of a unique
> >>identifier (say, id) and some series of annual variables with a
> >>two-digit suffix (running in different intervals). Like this:
> >>
> >>id var1_88 var1_89 ... var1_02 var2_92 var2_93 ... var2_02
> >>var3_...................................
> >>
> >>Now I want to reshape it to long, but stata fails to read the
> >>two-digit values after the turn of century (00 01 02), so I need to
> >>rename all varibles to a four-digit year.
> >>
> >>foreach var of varlist var1_88-var100_02{
> >> //save name of variable in a local string
> >> //do nessecary string manipulation (I can do that)
> >> //rename var
> >>}
> >>
> >>My problem seems to be:
> >>1) extracting the name of the current variable
> >>2) rename
> >>
> >>Do you understand what I'm asking?
> >>I'd be glad if someone can help, and please don't tell me that it
> >>would be easier to do this manually, because I will need to do this
> >>operation many times...
> >>
> >>Jeppe W. Larsen
> >>
> >>*
> >>* For searches and help try:
> >>* http://www.stata.com/support/faqs/res/findit.html
> >>* http://www.stata.com/support/statalist/faq
> >>* http://www.ats.ucla.edu/stat/stata/
> >>
> >>
> >>
> >
> >
> >
> >
> *
> * For searches and help try:
> * http://www.stata.com/support/faqs/res/findit.html
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/