- How to move between one-case-per-person and one case per
person-wave panel data:
- Stata's reshape command is very powerful
- Let's say we have data in one-case-per-person format:
PID jbstat1 jbsemp1 jbstat2 jbsemp2 jbstat3 jbsemp3
1 2 3 4 5 6 7
and we would like to have
PID wave jbstat jbsemp
1 1 2 3
1 2 4 5
1 3 6 7
- In Stata:
. reshape long jbstat jbsemp, i(pid) j(wave)
will move from the first to the second from almost instantaneously,
while
. reshape wide jbstat jbsemp, i(pid) j(wave)
will do the reverse.
- In SPSS (pre version 11) it is somewhat slower (given variables in the right
order!)
vector jb=jbstat1 to jbstat3
/js=jbsemp1 to jbsemp3.
loop #i = 1 to 3.
. compute jbstat=jb(#i).
. compute jbsemp=js(#i).
. compute wave = #i.
. xsave out = "longform.sav"
/keep=pid, wave, jbstat, jbsemp.
end loop.
- From SPSS 11 on:
varstocases
/id=pid /index=wave
/make jbstat from jbstat1 to jbstat3
/make jbsemp from jbsemp1 to jbsemp3.
- The reverse is more tedious (pre SPSS 11):
get file "longform.sav".
vector jbstat(3) /jbsemp(3).
compute jbstat(wave)=jbstat.
compute jbsemp(wave)=jbsemp.
agg out = */break = pid
/jbstat1 to jbsemp3 = first(jbstat1 to jbsemp3).
- But easy in SPSS 11:
casestovars /id=pid /index=wave.
- This is a transformation we often need to make: both data
structures suit different sorts of analysis.