*************************************************** * CLASS CLASSIFICATION_OESCH * W1 1999 * mars 2010 * CLASS CLASSIFICATION_OESCH_W1_99.SPS * SHP99_OESCH.SAV *************************************************** * GET PERSON FILE and LAST JOB FILE. * MATCH WITH LAST JOB: FILE SHP_LJ.sav */change file path according to where you have the SHP data files * DOWNLOADED FROM www.swisspanel.ch GET FILE='C:\SHP\SHP-Data-W1-W10-SPSS\W1_1999\SHP99_P_USER.sav'. Get file='C:\SHP\SHP-Data-WA-SPSS\SHP_LJ.sav'. Match files /file ='C:\SHP\SHP-Data-W1-W10-SPSS\W1_1999\SHP99_P_USER.sav' /file ='C:\SHP\SHP-Data-WA-SPSS\SHP_LJ.sav' /by idpers. exe. save outfile 'C:\SHP\shp99_P_LJ.sav'. get file = 'C:\SHP\shp99_P_LJ.sav'. FILTER OFF. USE ALL. SELECT IF(STATUS99 >= 0). EXECUTE . SAVE OUTFILE='C:\SHP\shp99_P_LJ.sav' /COMPRESSED. comp p99w114 = p$$w114. fre p99w114. comp is4laj99= is4laj$$. exe. compute xis4la99 = xis4la$$. exe. temp. select if missing(is4maj99). list xis4ma99 xis4la99 is4maj99 is4laj99. save outfile 'C:\SHP\shp99_P_LJ.sav'. get file = 'C:\SHP\shp99_P_LJ.sav' /keep idpers idspou99 idhous99 noga2m99 p99w31 p99w114 is4maj99 xis4ma99 is4laj99 xis4la99 educat99 NOGA2L$$. save outfile 'C:\SHP\shp99_workfile.sav'. get file = 'C:\SHP\shp99_workfile.sav'. */************* 2. Complete missing information on occupation (is4maj03) ************************************* */************* 2.1 Complete missing information on occupation from proxy-interview (from xis4 to is4) ******* fre is4maj99. compute isco_mainjob99 = is4maj99. if (missing(is4maj99) | is4maj99 < 0) isco_mainjob99 = xis4ma99. fre isco_mainjob99. fre is4laj99. compute isco_lastjob99=is4laj99. if (missing(is4laj99) | is4laj99 < 0) isco_lastjob99=xis4la99. fre isco_lastjob99. */************* 2.2 Add information from last job for people without job at present ********************************* fre isco_mainjob99. compute isco_respondent99= isco_mainjob99. if (sysmis(isco_mainjob99)) isco_respondent99 = isco_lastjob99. recode isco_respondent99 (low thru -1=sysmis). exe. fre isco_respondent99. */************* 2.3 Take sector employment from last job*********************************************************** fre p99w31 p99w114. compute selfem = p99w31. if (missing(isco_mainjob99) and isco_lastjob99 > 0 ) selfem=p99w114. fre selfem. */************* 2.4 Take self employment from last job************************************************************** fre noga2m99. compute noga = noga2m99. if (sysmis(isco_mainjob99) and not missing (isco_lastjob99) ) noga= noga2l$$. recode noga (sysmis =-9) (else= copy). exe. fre noga. */*************** 3. Recode variables used to construct class variable ************************************************* */*************** 3.1 Recode education into three different levels ****************************************************** fre educat99. recode educat99 (-6 thru 3=1)(4,5,6=2)(7,8,9,10=3) into educ_level99. var lab educ_level99 'niveau education'. val lab educ_level99 1 'Less than upper secondary education' 2 'Upper secondary education' 3 'Tertiary education'. fre educ_level99 . * 4.2 Recode self-employment / employer fre selfem. recode selfem (sysmis=1)(1=2)(2, 3 =3)(4,5,6,7=4) into selfem_level99. var lab selfem_level99 'nbre employés'. val lab selfem_level99 1 'Not self-employed' 2 'Self-empl without employees' 3 'Self-empl with 1-9 employees' 4 'Self-empl with 10 or more'. fre selfem_level99. */*************** 4. Recode classes to the 15-class schema********************************************************* */*************** 4.1 Allocate self-employed to schema************************************************************** compute class16= -9. if selfem_level99=4 class16 = 1. if (selfem_level99= 2 | selfem_level99 = 3) and (isco_respondent99 >= 2000 and isco_respondent99 <= 2470) class16 = 2. if (selfem_level99 = 3) and ((isco_respondent99 >= 1000 & isco_respondent99 <= 1999) or (isco_respondent99 >= 3000 & isco_respondent99 <= 9330)) class16 =3. if (selfem_level99 = 2) and ((isco_respondent99 >= 1000 & isco_respondent99 <= 1999) or (isco_respondent99 >= 3000 and isco_respondent99 <=9330)) class16 =4. */******** 4.2 Allocate employed managers and professionals (ISCO 1000-2470) to the schema. if (selfem_level99=1) and (isco_respondent99 >= 110 & isco_respondent99 <= 1239) class16=5 . if (selfem_level99=1) and (isco_respondent99 >= 1300 & isco_respondent99 <= 1320) class16=6 . if (selfem_level99=1) and (isco_respondent99 >= 2100 & isco_respondent99 <= 2213) class16=9. if (selfem_level99=1) and (isco_respondent99 >= 2220 & isco_respondent99 <= 2321) class16=13. if (selfem_level99=1) and (isco_respondent99 >= 2330 & isco_respondent99 <= 2332) class16=14. if (selfem_level99=1) and (isco_respondent99 >= 2340 & isco_respondent99 <= 2359) class16=13. if (selfem_level99=1) and (isco_respondent99 >= 2410 & isco_respondent99 <= 2429) class16=5. if (selfem_level99=1) and (isco_respondent99 >= 2430 & isco_respondent99 <= 2432) class16=14 . if (selfem_level99=1) and (isco_respondent99= 2440) class16=13. if (selfem_level99=1) and (isco_respondent99=2441) class16=5. if (selfem_level99=1) and (isco_respondent99 >= 2442 & isco_respondent99 <= 2443) class16=13 . if (selfem_level99=1) and (isco_respondent99=2444) class16=14 . if (selfem_level99=1) and (isco_respondent99=2445) class16=13 . if (selfem_level99=1) and (isco_respondent99 >= 2446 & isco_respondent99 <= 2450) class16=14 . if (selfem_level99=1) and (isco_respondent99=2451) class16=13 . if (selfem_level99=1) and (isco_respondent99 >= 2452 & isco_respondent99 <= 2455) class16=14. if (selfem_level99=1) and (isco_respondent99=2460) class16=13 . if (selfem_level99=1) and (isco_respondent99=2470) class16=5 . */******* 4.3 Allocate employed associate managers and semi-professionals (ISCO 3000) to the schema if selfem_level99=1 and (isco_respondent99 >= 3100 & isco_respondent99 <= 3152) class16=10 . if selfem_level99=1 and (isco_respondent99 = 3200) class16=14. if selfem_level99=1 and (isco_respondent99 >= 3210 & isco_respondent99 <= 3213) class16=10 . if selfem_level99=1 and (isco_respondent99 >= 3220 & isco_respondent99 <=3224) class16=14. if selfem_level99=1 and (isco_respondent99=3225) class16=15. if selfem_level99=1 and (isco_respondent99=3226) class16=14 . if selfem_level99=1 and (isco_respondent99 >= 3227 & isco_respondent99 <= 3228) class16=15 . if selfem_level99=1 and (isco_respondent99 >= 3229 & isco_respondent99 <= 3340) class16=14. if selfem_level99=1 and (isco_respondent99 >= 3400 & isco_respondent99 <= 3433) class16=6 . if selfem_level99=1 and (isco_respondent99=3434) class16=10 . if selfem_level99=1 and (isco_respondent99 >= 3440 & isco_respondent99 <= 3450) class16=6 . if selfem_level99=1 and (isco_respondent99 >= 3460 & isco_respondent99 <= 3472) class16=14 . if selfem_level99=1 and (isco_respondent99 >= 3473 & isco_respondent99 <= 3475) class16=15 . if selfem_level99=1 and (isco_respondent99=3480) class16=14 . */****** 4.4 Allocate specific occupations to the schema***************************************************** */******Professional military forces (isco 100) to associate managers*************************************** if (selfem_level99=1 and isco_respondent99=100) class16=6 . */******Locomotive engine drivers to technicians************************************************************ if (selfem_level99=1) and (isco_respondent99 = 8310 or isco_respondent99 = 8311) class16=10 . */******Police officers to associate managers**************************************************************** if (selfem_level99=1 and isco_respondent99=5162) class16=6. */*******Bus and tram drivers to skilled and routine service workers***************************************** if (selfem_level99=1 and isco_respondent99=8323) class16=15. */******* 4.5 Allocate intermediate occupations to the schema (ISCO 4000-8340) and correct for skilled/unskilled (with/without upper secondary education). if selfem_level99=1 and (educ_level99 ~=1) and (isco_respondent99 >= 4000 & isco_respondent99 <= 4223) class16=7. if selfem_level99=1 and educ_level99 =1 and (isco_respondent99 >= 4000 & isco_respondent99 <= 4223) class16=8. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 =5160 | isco_respondent99 = 5169) class16=15. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 =5160 | isco_respondent99 = 5169) class16=16. if selfem_level99=1 and (isco_respondent99 = 5161 | isco_respondent99 = 5163) class16=7. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 5000 & isco_respondent99<=5132) class16=15. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 5000 & isco_respondent99 <= 5132) class16=16 . if selfem_level99=1 and (isco_respondent99= 5133 | isco_respondent99=5139) class16=16. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 = 5140 | isco_respondent99= 5141 | isco_respondent99= 5143) class16=15. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 = 5140 | isco_respondent99= 5141 | isco_respondent99= 5143) class16=16. if selfem_level99=1 and (isco_respondent99= 5142 | isco_respondent99= 5149) class16=16. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 5200 & isco_respondent99 <= 5220) class16=15. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 5200 & isco_respondent99 <= 5220) class16=16 . if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 6000 & isco_respondent99 <= 6154) class16=11. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 6000 & isco_respondent99 <= 6154) class16=12. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 7000 & isco_respondent99<= 7442) class16=11 . if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 7000 & isco_respondent99 <=7442) class16=12 . if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 8000 & isco_respondent99<= 8279) class16=11. if selfem_level99=1 and educ_level99 =1 and (isco_respondent99 >= 8000 & isco_respondent99<= 8279) class16=12. if selfem_level99=1 and (isco_respondent99 >= 8280 & isco_respondent99<= 8300) class16=12. if selfem_level99=1 and educ_level99~=1 and isco_respondent99=8312 class16=11 . if selfem_level99=1 and educ_level99=1 and isco_respondent99=8312 class16=12 . if selfem_level99=1 and (isco_respondent99 >= 8320 & isco_respondent99 <= 8322) class16=12. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 8323 & isco_respondent99<= 8324) class16=11. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 8323 & isco_respondent99 <= 8324) class16=12 . if selfem_level99=1 and isco_respondent99=8330 class16=12. if selfem_level99=1 and educ_level99~=1 and (isco_respondent99 >= 8331 & isco_respondent99 <= 8340) class16=11. if selfem_level99=1 and educ_level99=1 and (isco_respondent99 >= 8331 & isco_respondent99 <= 8340) class16=12 . */******** 4.6 Allocate elementary occupations (ISCO 9000-9330 )***************************************** if selfem_level99=1 and (isco_respondent99 >= 9100 & isco_respondent99<= 9152) class16=12. if selfem_level99=1 and (isco_respondent99 >= 9153 & isco_respondent99<= 9330) class16=16. fre class16. if selfem_level99=1 and isco_respondent99=9000 and range(noga,1,6) class16=12. if selfem_level99=1 and isco_respondent99=9000 and (noga = -9 | range(noga,7,17)) class16=12. fre class16. */********** 4.7 Occupations impossible to allocate to a given class**************************************** if (selfem_level99=1 and isco_respondent99=2000) class16=-9. if (selfem_level99=1 and isco_respondent99=3000) class16=-9. fre class16. var lab class16 'classification de classe en 16'. val lab class16 1 'Large employers 10 or more employees' 2 'Self-employed professionals' 3 'Small business owners with 1-9 employees' 4 'Small business owners without employees' 5 'Managers and administrators' 6 'Associate managers and administrators' 7 'Skilled clerks' 8 'Routine clerks' 9 'Technical experts' 10 'Technicians' 11 'Skilled craft workers' 12 'Routine operatives' 13 'Socio-cultural professionals' 14 'Socio-cultural semi-professionals' 15 'Skilled service workers' 16 'Routine service workers'. fre class16. save outfile 'C:\SHP\shp99_workfile.sav' /keep idpers idspou99 idhous99 class16 . */************* 5. Replace class by class from partner if class is missing for respondent********************* */************* 5.1 Add information from partner's job for people without job at the present nor in the past*** get file 'C:\SHP\shp99_workfile.sav'. sort cases by idhous99 idspou99. save outfile "C:\SHP\shp99_workfile.sav". rename variables (idpers=idspouse). rename variables (class16 = class16_p). sort cases by idhous99 idspouse. save outfile "C:\SHP\shp99_workfile_spouse.sav" /keep idspouse idhous99 class16_p . get file 'C:\SHP\shp99_workfile.sav'. rename variables (idspou99=idspouse). MATCH FILES /FILE=* /TABLE 'C:\SHP\shp99_workfile_spouse.sav' /BY idhous99 idspouse. EXECUTE. fre class16_p . rename variables (idspouse = idspou99). if (class16=-9) class16=class16_p. recode class16 (sysmis=-9) (else =copy). exe. fre class16. */******** 6. Merge 16-class schema into the simplified 8-class version**************************************** recode class16 (1,2=1)(3,4=2)(5,6=3)(7,8=4)(9,10=5)(11,12=6)(13,14=7)(15,16=8) (-9 =-9) into class8. var lab class8 'classification de classe en 8'. val lab class8 1 'Self-employed professionals and large employers' 2 'Small business owners' 3 'Associate managers and administrators' 4 'Office clerks' 5 'Technical professionals and technicians' 6 'Production workers' 7 'Socio-cultural semi-professionals' 8 'Service workers'. fre class8. save outfile 'C:\SHP\shp99_oesch.sav' /keep idpers idspou99 idhous99 class16 class8. get file 'C:\SHP\shp99_oesch.sav'. **** References **** Oesch, D. (2006a) "Coming to grips with a changing class structure" International Sociology 21 (2): 263-288. **** Oesch, D. (2006b) "Redrawing the Class Map. Stratification and Institutions in Britain, Germany, Sweden and Switzerland", Basingstoke: Palgrave Macmillan.