# Re: st: Rearranging Variables

 From Alekos Bibudis To statalist@hsphsun2.harvard.edu Subject Re: st: Rearranging Variables Date Sun, 03 Feb 2008 19:47:45 +0100

Hi again

Im sorry, my initial post was not really clear. I will try to explain correctly what I am after.

My Data (Paneldata / wide format):

- individual Data on month of Interview from 2000 to 2006 (month00 - month06) coded 1 to 12

- unemployment status for each month in the years 1999 to 2005 (Jan99 to Dez05) coded 1/0

- ID of the interviewee.

Target:

12 variables (month1 to month12) holding unemployment information of the 12 months before the interview (for the interviewmonths Jan00 to Jan06).

for example: Interviewmonth = January 2000, the first variable (month1) should contain the data from Dec 1999, the second the value of Nov 1999 ... the last (month12) the value of Jan 1999

What I think would be the right way:

reshaping variables into the long format, this way I will have the interview month in each wave as well as unemployment status each month like this:

ID year month Jan Feb Mar ... Dez
1 1999 - 1 1 0 0
1 2000 3 1 1 0 0
1 2001 7 0 0 0 1
1 2003 9 1 1 1 0
...

code Idea for the first month before the inteview:

generate Monat1 = Dez(year-1) if month == 1;
replace Monat1 = Jan if month == 2;
replace Monat1 = Feb if month == 3;
replace Monat1 = Mar if month == 4;
replace Monat1 = Apr if month == 5;
replace Monat1 = Mai if month == 6;
replace Monat1 = Jun if month == 7;
replace Monat1 = Jul if month == 8;
replace Monat1 = Aug if month == 9;
replace Monat1 = Sep if month == 10;
replace Monat1 = Okt if month == 11;
replace Monat1 = Nov if month == 12;

There are two problems with that code I don't know how to solve:

1. Assumed Data is sorted by ID and year, how do I tell Stata to use the value of a variable one column above the actual one (that is in the year before the interview was conducted)?
In the example above, in 2000 January was the month of interview for respondent 1, the month before the interview is Dec 1999 which is not stored in the same colum as the interviewmonth-data (I tried to represent that in the code-idea with "Dez(year-1)" which I know is not correct).

2. In order to create variables for 12 months I'd have to type this code like twelve times with an increasing suffixvalue of the new generated variable (month1 to month12) and the month occupational status was conducted varying. How can this be shortened?

I hope I made myself much clearer this time and that one of you might know the trick :-)

Alekos

>Alekos,

>It would be helpful if you could explain why your commands do not
>work. One problem with your code is that "if month`x' = 1" should be
>"if month`x' == 1".

> Friedrich

> On Feb 1, 2008 3:49 PM, Alekos Bibudis
<alekos.bibudis@phil.tu-chemnitz.de> wrote:
> > Hi everyone.
> >
> > Using data from the GSOEP I`d like to transform some variables handling
> > with information on occupational status.
> > There is a variable for each wave and month of the year holding 0/1
> > coded information wether the person was unemployed at this point in time
> > or not (84 variables from Jan99 to Dez05).
> > I additionally have information on the month and year the interview was
> > conducted. That is for each wave a variable coded 1 (Jan) to 12 (Dec) (7
> > variables from month00 to month06).
> >
> > What I'd like to arrange is to generate twelve new variables holding the
> > information of unemployment status of the twelve months BEFORE the
> > interview was conducted (Monat1 to Monat12) starting with Interviewmonth
> > Jan00 and ending with Jan06.
> >
> > The logic would be:
> > generate a new yariable and give it the value of the month before the
> > interview
> > generate another new variable and give it the value of two months before
> > the interview
> > ...
> > generate a last variable and give it the value of twelve months befor
> > the interview
> >
> > For 2006 there is no information on unemployment status, because it will
> > be gathered retrospectivively in the next wave.
> >
> > Here's what I've tried, I know it doesn't work, but maybe it'll help to
> > see what I'm after:
> >
> > #d;
> > version 9.1;
> > local y = 1999;
> > foreach x in 00 01 02 03 04 05 06{;
> > gen Monat1 = Dez`y' if month`x' = 1;
> > local y = `y' + 1;
> > };
> >
> > I'd appreciate every help I can get on this.
> >
> > --
> > ___________________________
> > Dipl.-Soz. Alekos Bibudis
> > "Betrieb und Beschäftigung im Wandel"
> > SFB 580, Projekt B2
> > Friedrich-Schiller-Universität Jena
> >
> > Phone: +49-(0)371-6957616
> > Website: http://www.sfb580.uni-jena.de
*
* 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/