| /* Example SPSS program to create balanced responding person */ |
| /* long longitudinal file. */ |
| /* Created by: Simon Freidin 02/12/05 (Updated by: Nicole Watson) */ |
| |
|
| /* ************************************************************************* */ |
| /* Section 1: locate datasets, get balanced cases, load renaming macro */ |
| /* ************************************************************************* */ |
| set printback=listing. |
| * (1.1) Files |
| * (1.1.1) Input: combined files. |
| * You MUST edit the name paths in ALL of Sections 1.1.1 to Section 1.1.4 |
| file handle w1c /name='e:\a\written datasets\a60\SPSS a60c\Combined a60c.sav'. |
| file handle w2c /name='e:\b\written datasets\b60\SPSS b60c\Combined b60c.sav'. |
| file handle w3c /name='e:\c\written datasets\c60\SPSS c60c\Combined c60c.sav'. |
| file handle w4c /name='e:\d\written datasets\d60\SPSS d60c\Combined d60c.sav'. |
| file handle w5c /name='e:\e\written datasets\e60\SPSS e60c\Combined e60c.sav'. |
| file handle w6c /name='e:\f\written datasets\f60\SPSS f60c\Combined f60c.sav'. |
| file handle master /name='e:\f\written datasets\f60\SPSS f60c\Master f60c.sav' . |
| * (1.1.2) Output: generated renaming program, balanced master file. |
| file handle renprog /name='e:\xwave\rename.sps'. |
| file handle balanced /name='e:\xwave\balanced.sav'. |
| * (1.1.3) Output: intermediate longitudinal files. |
| file handle w1l /name='e:\xwave\w1l.sav'. |
| file handle w2l /name='e:\xwave\w2l.sav'. |
| file handle w3l /name='e:\xwave\w3l.sav'. |
| file handle w4l /name='e:\xwave\w4l.sav'. |
| file handle w5l /name='e:\xwave\w5l.sav'. |
| file handle w6l /name='e:\xwave\w6l.sav'. |
| * (1.1.4) Output: final balanced long responding person file. |
| |
| file handle w1w6long /name='e:\xwave\w1w6long.sav'. |
| |
| * (1.2) Identify cases responding in all waves from the master file. |
| * status codes: 1=face to face interview, 2=telephone interview. |
|
| * Release 6 balanced panel, master n = 8864. |
| get file=master. |
| select if any(afstatus,1,2) and any(bfstatus,1,2) and any(cfstatus,1,2) |
| and any(dfstatus,1,2) and any(efstatus,1,2) and any(ffstatus,1,2). |
| sort cases by xwaveid. |
| save outfile=balanced/keep=xwaveid ahhrpid bhhrpid chhrpid dhhrpid ehhrpid fhhrpid. |
| |
| * (1.3) Load macro to write a program to rename variables, dropping first. |
| * character (wave identifier) of variable name. ID's are not renamed. |
| define renwave (!pos=!cmdend). |
| get file=!1. |
| n of cases 1. |
| set printback=off /results=no. |
| flip. |
| set printback=on /results=yes. |
| compute x=1. |
| match files file=*/last=last/by x. |
| string out (a60). |
| do if $casenum=1. |
| write outfile=renprog/"rename variables". |
| end if. |
| /* exclude ids from renaming */ |
| do if (index(lower(case_lbl),'waveid')>0) or |
| (index(lower(case_lbl),'hhrhid')>0) or |
| (index(lower(case_lbl),'hhraid')>0) or |
| (index(lower(case_lbl),'hhrpid')>0) . |
| compute out=concat(" (",case_lbl," = ",lower(case_lbl),")"). |
| else. |
| compute out=concat(" (",lower(case_lbl)," = ",substr(lower(case_lbl),2),")"). |
| end if. |
| write outfile=renprog/out. |
| do if (last). |
| write outfile=renprog/" .". |
| end if. |
| exe. |
| !enddefine. |
| /* end of macro */ |
| |
| /* ************************************************************************* */ |
| /* Section 2: create "long" balanced responding person longitudinal file */ |
| /* ************************************************************************* */ |
| * (2.1) Rename each wave: run macro "renwave" and then include. |
| * the generated rename program. |
| * command file. Keep only those records from balanced master file. |
| |
| renwave w1c . |
| get file=w1c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm1/file=*/by xwaveid. |
| select if (inm1). |
| save outfile=w1l. |
| |
| renwave w2c . |
| get file=w2c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm2/file=*/by xwaveid. |
| select if (inm2). |
| save outfile=w2l. |
| |
| renwave w3c . |
| get file=w3c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm3/file=*/by xwaveid. |
| select if (inm3). |
| save outfile=w3l. |
| |
| renwave w4c . |
| get file=w4c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm4/file=*/by xwaveid. |
| select if (inm4). |
| save outfile=w4l. |
| |
| renwave w5c . |
| get file=w5c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm5/file=*/by xwaveid. |
| select if (inm5). |
| save outfile=w5l. |
| |
| renwave w6c . |
| get file=w6c. |
| include file=renprog. |
| sort cases by xwaveid. |
| match files file=balanced/in=inm6/file=*/by xwaveid. |
| select if (inm6). |
| save outfile=w6l. |
| |
| * (2.3) Add datasets together to create the balanced long longitudinal. |
| * responding person file - Add a year variable - Balanced panel long. |
| add files file=w1l/in=w1/file=w2l/in=w2/file=w3l/in=w3/file=w4l/in=w4/ |
| file=w5l/in=w5/file=w6l/in=w6. |
| if (w1=1) year=2001. |
| if (w2=1) year=2002. |
| if (w3=1) year=2003. |
| if (w4=1) year=2004. |
| if (w5=1) year=2005. |
| if (w6=1) year=2006. |
| |
| save outfile=w1w6long. |
| |
| freq vars=year. |
| /*(2.4) Supplementary programme to create longitudinal weights variables for Responding and */ |
| /* Enumerated Persons specifically to be used in a balanced file of 6 waves. */ |
| |
| get file=w1w6long/drop=lnwtrp lnwte. |
| sort cases by xwaveid. |
| match files file=*table=w6c/rename=(flnwtrp flnwte= lnwtrp lnwte)/keep=xwaveid |
| to year lnwtrp lnwte/by xwaveid. |
| means vars=lnwtrp by year. |
| save outfile=w1w6long_1. |