********************************************************************************************************************************************* * OESCH CLASS SCHEMA * Create 16-Class schema, 8-Class schema, 5-Class schema, 4-class schema * Data: German Socio-Economic Panel (SOEP), version: CNEF equivalent file * July 2015 * Oliver Lipps, Swiss Centre of Expertise in the Social Sciences (FORS), Lausanne ********************************************************************************************************************************************* **** 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. **** A few minor changes were made with respect to the procedure described in these two sources (decisions taken by Oesch and Tawfik in 2013) **** 16-Class schema constructed *1 Large employers *2 Self-employed professionals *3 Small business owners with employees *4 Small business owners without employees *5 Technical experts *6 Technicians *7 Skilled craft and production workers *8 Low-skilled production workers *9 Higher-grade managers and administrators *10 Lower-grade managers and administrators *11 Skilled clerks *12 Unskilled clerks *13 Socio-cultural professionals *14 Socio-cultural semi-professionals *15 Skilled service *16 Low-skilled service **** 8-Class schema constructed *1 Self-employed professionals and large employers *2 Small business owners *3 Technical (semi-)professionals *4 Production workers *5 (Associate) managers *6 Clerks *7 Socio-cultural (semi-)professionals *8 Service workers **** 5-Class schema constructed *1 Higher-grade service class *2 Lower-grade service class *3 Small business owners *4 Skilled workers *5 Low-skilled workers **** 4-Class schema constructed *1 Upper-middle class *2 Lower-middle class *3 Skilled workers *4 Low-skilled workers **** Variables used to construct Oesch class schema: iscoco, emplrel, emplno, iscocop, emprelp, emplnop **************************************************************************************** * Respondent's Oesch class position * Recode and create variables used to construct class variable for respondents * Variables used to construct class variable for respondents: iscoco, emplrel, emplno **************************************************************************************** *** define macro LONG_FILES which is a variable for the directory which include the SOEP person long file pl, *** and the SOEP person equivalent file pequiv. For example if these files are in d:\my_SOEP_data *** then write the command line: “global LONG_FILES d:\my_SOEP_data\” use pid syear e11105 using ${LONG_FILES}\pequiv, clear // key variable is e11105 (isco-88 at 4-digit level) rename e11105 isco_mainjob // Current occupation of respondent, coded with isco88 4-digit merge 1:1 pid syear using ${LONG_FILES}\pl, keepusing(plb0058 plb0057-plb0065) /// keep(match) nogen // only people who answered the survey **** Recode occupation variable (isco88 com 4-digit) for respondents tab isco_mainjob recode isco_mainjob (66666 77777 88888 99999=-9), copyrest label variable isco_mainjob "Current occupation of respondent - isco88 4-digit" tab isco_mainjob *** Recode employment status for respondents (I) gen emplrel_r=1 if plb0058>0 | plb0063>0 | plb0064>0 | plb0065>0 //Workers, apprentices, employees, public servants replace emplrel_r=2 if plb0057>0 & plb0057<6 // Self-employed replace emplrel_r=3 if plb0057==6 // Working family member gen emplno_r=1 if plb0059==2 | plb0060==2 | plb0061==2 // 1-9 employees replace emplno_r=2 if plb0059==3 | plb0060==3 | plb0061==3 // 10+ employees replace emplno_r=0 if emplno==. & emplrel_r!=. recode emplrel_r emplno_r (.=9) drop plb* **** Recode employment status for respondents (II) tab emplrel label define emplrel_r /// 1 "Employee" /// 2 "Self-employed" /// 3 "Working for own family business" /// 9 "Missing" label value emplrel_r emplrel_r tab emplrel_r tab emplno label define emplno_r /// 0 "0 employees" /// 1 "1-9 employees" /// 2 "10+ employees" label value emplno_r emplno_r tab emplno_r gen selfem_mainjob=. replace selfem_mainjob=1 if emplrel_r==1 | emplrel_r==9 replace selfem_mainjob=2 if emplrel_r==2 & emplno_r==0 replace selfem_mainjob=2 if emplrel_r==3 replace selfem_mainjob=3 if emplrel_r==2 & emplno_r==1 replace selfem_mainjob=4 if emplrel_r==2 & emplno_r==2 label variable selfem_mainjob "Employment status for respondants" label define selfem_mainjob /// 1 "Not self-employed" /// 2 "Self-empl without employees" /// 3 "Self-empl with 1-9 employees" /// 4 "Self-empl with 10 or more" label value selfem_mainjob selfem_mainjob tab selfem_mainjob ************************************************* * Create Oesch class schema for respondents ************************************************* gen class16_r = -9 * Large employers (1) replace class16_r=1 if selfem_mainjob==4 * Self-employed professionals (2) replace class16_r=2 if (selfem_mainjob==2 | selfem_mainjob==3) & (isco_mainjob >= 2000 & isco_mainjob <= 2229) replace class16_r=2 if (selfem_mainjob==2 | selfem_mainjob==3) & (isco_mainjob >= 2300 & isco_mainjob <= 2470) * Small business owners with employees (3) replace class16_r=3 if (selfem_mainjob==3) & (isco_mainjob >= 1000 & isco_mainjob <= 1999) replace class16_r=3 if (selfem_mainjob==3) & (isco_mainjob >= 3000 & isco_mainjob <= 9333) replace class16_r=3 if (selfem_mainjob==3) & (isco_mainjob == 2230) * Small business owners without employees (4) replace class16_r=4 if (selfem_mainjob==2) & (isco_mainjob >= 1000 & isco_mainjob <= 1999) replace class16_r=4 if (selfem_mainjob==2) & (isco_mainjob >= 3000 & isco_mainjob <= 9333) replace class16_r=4 if (selfem_mainjob==2) & (isco_mainjob == 2230) * Technical experts (5) replace class16_r=5 if (selfem_mainjob==1) & (isco_mainjob >= 2100 & isco_mainjob <= 2213) * Technicians (6) replace class16_r=6 if (selfem_mainjob==1) & (isco_mainjob >= 3100 & isco_mainjob <= 3152) replace class16_r=6 if (selfem_mainjob==1) & (isco_mainjob >= 3210 & isco_mainjob <= 3213) replace class16_r=6 if (selfem_mainjob==1) & (isco_mainjob == 3434) * Skilled craft and production workers (7) replace class16_r=7 if (selfem_mainjob==1) & (isco_mainjob >= 6000 & isco_mainjob <= 7442) replace class16_r=7 if (selfem_mainjob==1) & (isco_mainjob >= 8310 & isco_mainjob <= 8312) replace class16_r=7 if (selfem_mainjob==1) & (isco_mainjob >= 8324 & isco_mainjob <= 8330) replace class16_r=7 if (selfem_mainjob==1) & (isco_mainjob >= 8332 & isco_mainjob <= 8340) * Low-skilled production workers (8) replace class16_r=8 if (selfem_mainjob==1) & (isco_mainjob >= 8000 & isco_mainjob <= 8300) replace class16_r=8 if (selfem_mainjob==1) & (isco_mainjob >= 8320 & isco_mainjob <= 8321) replace class16_r=8 if (selfem_mainjob==1) & (isco_mainjob == 8331) replace class16_r=8 if (selfem_mainjob==1) & (isco_mainjob >= 9153 & isco_mainjob <= 9333) * Higher-grade managers and administrators (9) replace class16_r=9 if (selfem_mainjob==1) & (isco_mainjob >= 1000 & isco_mainjob <= 1239) replace class16_r=9 if (selfem_mainjob==1) & (isco_mainjob >= 2400 & isco_mainjob <= 2429) replace class16_r=9 if (selfem_mainjob==1) & (isco_mainjob == 2441) replace class16_r=9 if (selfem_mainjob==1) & (isco_mainjob == 2470) * Lower-grade managers and administrators (10) replace class16_r=10 if (selfem_mainjob==1) & (isco_mainjob >= 1300 & isco_mainjob <= 1319) replace class16_r=10 if (selfem_mainjob==1) & (isco_mainjob >= 3400 & isco_mainjob <= 3433) replace class16_r=10 if (selfem_mainjob==1) & (isco_mainjob >= 3440 & isco_mainjob <= 3450) * Skilled clerks (11) replace class16_r=11 if (selfem_mainjob==1) & (isco_mainjob >= 4000 & isco_mainjob <= 4112) replace class16_r=11 if (selfem_mainjob==1) & (isco_mainjob >= 4114 & isco_mainjob <= 4210) replace class16_r=11 if (selfem_mainjob==1) & (isco_mainjob >= 4212 & isco_mainjob <= 4222) * Low-skilled clerks (12) replace class16_r=12 if (selfem_mainjob==1) & (isco_mainjob == 4113) replace class16_r=12 if (selfem_mainjob==1) & (isco_mainjob == 4211) replace class16_r=12 if (selfem_mainjob==1) & (isco_mainjob == 4223) * Socio-cultural professionals (13) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob >= 2220 & isco_mainjob <= 2229) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob >= 2300 & isco_mainjob <= 2320) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob >= 2340 & isco_mainjob <= 2359) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob >= 2430 & isco_mainjob <= 2440) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob >= 2442 & isco_mainjob <= 2443) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob == 2445) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob == 2451) replace class16_r=13 if (selfem_mainjob==1) & (isco_mainjob == 2460) * Socio-cultural semi-professionals (14) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob == 2230) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 2330 & isco_mainjob <= 2332) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob == 2444) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 2446 & isco_mainjob <= 2450) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 2452 & isco_mainjob <= 2455) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob == 3200) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 3220 & isco_mainjob <= 3224) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob == 3226) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 3229 & isco_mainjob <= 3340) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob >= 3460 & isco_mainjob <= 3472) replace class16_r=14 if (selfem_mainjob==1) & (isco_mainjob == 3480) * Skilled service (15) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob == 3225) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 3227 & isco_mainjob <= 3228) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 3473 & isco_mainjob <= 3475) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 5000 & isco_mainjob <= 5113) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob == 5122) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 5131 & isco_mainjob <= 5132) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 5140 & isco_mainjob <= 5141) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob == 5143) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob >= 5160 & isco_mainjob <= 5220) replace class16_r=15 if (selfem_mainjob==1) & (isco_mainjob == 8323) * Low-skilled service (16) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob >= 5120 & isco_mainjob <= 5121) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob >= 5123 & isco_mainjob <= 5130) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob >= 5133 & isco_mainjob <= 5139) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob == 5142) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob == 5149) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob == 5230) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob == 8322) replace class16_r=16 if (selfem_mainjob==1) & (isco_mainjob >= 9100 & isco_mainjob <= 9152) mvdecode class16_r, mv(-9) label variable class16_r "Respondent's Oesch class position - 16 classes" label define class16_r /// 1 "Large employers" /// 2 "Self-employed professionals" /// 3 "Small business owners with employees" /// 4 "Small business owners without employees" /// 5 "Technical experts" /// 6 "Technicians" /// 7 "Skilled craft and production workers" /// 8 "Low-skilled craft and production workers" /// 9 "Higher-grade managers and administrators" /// 10 "Lower-grade managers and administrators" /// 11 "Skilled clerks" /// 12 "Low-skilled clerks" /// 13 "Socio-cultural professionals" /// 14 "Socio-cultural semi-professionals" /// 15 "Skilled service" /// 16 "Low-skilled service" label value class16_r class16_r tab class16_r recode class16_r (1 2=1)(3 4=2)(5 6=3)(7 8=4)(9 10=5)(11 12=6)(13 14=7)(15 16=8), gen(class8_r) label variable class8_r "Respondent's Oesch class position - 8 classes" label define class8_r /// 1 "Self-employed professionals and large employers" /// 2 "Small business owners" /// 3 "Technical (semi-)professionals" /// 4 "Production workers" /// 5 "(Associate) managers" /// 6 "Clerks" /// 7 "Socio-cultural (semi-)professionals" /// 8 "Service workers" label value class8_r class8_r tab class8_r recode class16_r (1 2 5 9 13=1)(6 10 14=2)(3 4=3)(7 11 15=4)(8 12 16=5), gen(class5_r) label variable class5_r "Respondent's Oesch class position - 5 classes" label define class5_r /// 1 "Higher-grade service class" /// 2 "Lower-grade service class" /// 3 "Small business owners" /// 4 "Skilled workers" /// 5 "Low-skilled workers" label value class5_r class5_r tab class5_r global class3noemp class5_r==3 & emplno_r==0 // Oesch class 3 and 0 employee gen class4=class5_r // recoding to 4 classes with the following change: class5_r==3 replace class4=2 if class5_r==3 & emplno_r==1 // 1-9 employees replace class4=1 if $class3noemp & ((isco_>1000 & isco_<1300) | (isco_>2000 & isco_<3000)) replace class4=2 if $class3noemp & ((isco_>=1300 & isco_<2000) | isco_==2331 | isco_==2446 /// | (isco_>=3000 & isco_<4000)) replace class4=4 if $class3noemp & (isco_==3228 | isco_==3475 | isco_>=4111) replace class4=5 if $class3noemp & (isco_==4113 | isco_==4211 | isco_==4223 | isco_==5121 /// | isco_==5123 | isco_==5133 | isco_==5139 | isco_==5149 | (isco_>8000 & isco_< 8300) | isco_==8322 /// | isco_==8331 | (isco_>=9131 & isco_<.)) recode class4 (4=3) (5=4) // label define class4_r /// 1 "Upper-middle class" /// 2 "Lower-middle class" /// 3 "Skilled workers" /// 4 "Low-skilled workers" label value class4 class4_r tab class4