From de6ab2282d2cf28bad1fabf6ec200aceedbc773c Mon Sep 17 00:00:00 2001 From: Mario G <63501500+gronert-m@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:13:01 -0500 Subject: [PATCH] Update Mexico --- .../MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do | 2145 +++++++++++++++ .../MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do | 2151 +++++++++++++++ .../MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do | 2179 ++++++++++++++++ .../MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do | 2177 ++++++++++++++++ .../MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do | 2209 ++++++++++++++++ .../MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do | 2177 ++++++++++++++++ .../MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do | 2178 ++++++++++++++++ .../MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do | 2243 ++++++++++++++++ .../MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do | 2190 ++++++++++++++++ .../MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do | 2187 ++++++++++++++++ .../MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do | 2184 ++++++++++++++++ .../MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do | 2182 ++++++++++++++++ .../MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do | 2183 ++++++++++++++++ .../MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do | 2180 ++++++++++++++++ .../MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do | 2201 ++++++++++++++++ .../MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do | 2147 +++++++++++++++ .../MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do | 2166 ++++++++++++++++ .../MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do | 2304 +++++++++++++++++ .../MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do | 2267 ++++++++++++++++ .../MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do | 2269 ++++++++++++++++ .../MEX/ENOE/1. Introduction to ENOE.md | 136 +- .../MEX/ENOE/Correspondence_NAICS_ISIC.md | 142 +- .../Convert_SCIAN_04_ISIC_4_to_dta.do | 17 + .../Convert_SCIAN_07_ISIC_4_to_dta.do | 17 + .../Convert_SCIAN_18_ISIC_4_to_dta.do | 17 + .../ENOE/utilities/ENOE_SCIAN_2004_Codes.xlsx | Bin 0 -> 120075 bytes .../ENOE/utilities/ENOE_SCIAN_2007_Codes.xlsx | Bin 0 -> 2218904 bytes .../ENOE/utilities/ENOE_SCIAN_2018_Codes.xlsx | Bin 0 -> 177035 bytes .../MEX/ENOE/utilities/SCIAN_04_ISIC_4.dta | Bin 0 -> 2909 bytes .../MEX/ENOE/utilities/SCIAN_07_ISIC_4.dta | Bin 0 -> 2903 bytes .../MEX/ENOE/utilities/SCIAN_18_ISIC_4.dta | Bin 0 -> 3524 bytes 31 files changed, 44047 insertions(+), 201 deletions(-) create mode 100644 GLD/MEX/MEX_2005_ENOE/MEX_2005_ENOE_V02_M_V02_A_GLD/Programs/MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2006_ENOE/MEX_2006_ENOE_V02_M_V02_A_GLD/Programs/MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2007_ENOE/MEX_2007_ENOE_V02_M_V02_A_GLD/Programs/MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2008_ENOE/MEX_2008_ENOE_V02_M_V02_A_GLD/Programs/MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2009_ENOE/MEX_2009_ENOE_V02_M_V02_A_GLD/Programs/MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2010_ENOE/MEX_2010_ENOE_V02_M_V02_A_GLD/Programs/MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2011_ENOE/MEX_2011_ENOE_V02_M_V02_A_GLD/Programs/MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2012_ENOE/MEX_2012_ENOE_V02_M_V02_A_GLD/Programs/MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2013_ENOE/MEX_2013_ENOE_V02_M_V02_A_GLD/Programs/MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2014_ENOE/MEX_2014_ENOE_V02_M_V02_A_GLD/Programs/MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2015_ENOE/MEX_2015_ENOE_V02_M_V02_A_GLD/Programs/MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2016_ENOE/MEX_2016_ENOE_V02_M_V02_A_GLD/Programs/MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2017_ENOE/MEX_2017_ENOE_V02_M_V02_A_GLD/Programs/MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2018_ENOE/MEX_2018_ENOE_V02_M_V02_A_GLD/Programs/MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2019_ENOE/MEX_2019_ENOE_V02_M_V02_A_GLD/Programs/MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2020_ENOE/MEX_2020_ENOE_V03_M_V01_A_GLD/Programs/MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2020_ENOEN/MEX_2020_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2021_ENOEN/MEX_2021_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2022_ENOEN/MEX_2022_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do create mode 100644 GLD/MEX/MEX_2023_ENOE/MEX_2023_ENOE_V01_M_V01_A_GLD/Programs/MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_04_ISIC_4_to_dta.do create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_07_ISIC_4_to_dta.do create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_18_ISIC_4_to_dta.do create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/ENOE_SCIAN_2004_Codes.xlsx create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/ENOE_SCIAN_2007_Codes.xlsx create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/ENOE_SCIAN_2018_Codes.xlsx create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/SCIAN_04_ISIC_4.dta create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/SCIAN_07_ISIC_4.dta create mode 100644 Support/B - Country Survey Details/MEX/ENOE/utilities/SCIAN_18_ISIC_4.dta diff --git a/GLD/MEX/MEX_2005_ENOE/MEX_2005_ENOE_V02_M_V02_A_GLD/Programs/MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2005_ENOE/MEX_2005_ENOE_V02_M_V02_A_GLD/Programs/MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..30c6d0ef5 --- /dev/null +++ b/GLD/MEX/MEX_2005_ENOE/MEX_2005_ENOE_V02_M_V02_A_GLD/Programs/MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2145 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2005_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-15 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2005] +<_Data collection to_> [12/2005] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [] +<_Sample size (IND)_> [] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-13] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2005" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'05.dta" + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'05.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'05.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'05.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'05.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2005.dta", replace +*/ + +use "`path_in_stata'/ENOE_2005.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2005 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + * Code different in Q1,2 than Q3,4 for things after codes 305 + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire - 2005 all extended + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + *replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 1, 4) + replace hlp_whours_usual_bin = coe1_p5d /// if quarter == 1 + + gen hlp_whours_lw = . + *replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 1, 4) + replace hlp_whours_lw = coe1_p5c_thrs /// if quarter == 1 + + gen hlp_whours_nw = . + *replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 1, 4) + replace hlp_whours_nw = coe1_p5e_thrs /// if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify - 2005 all extended +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + *replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 1, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') /// & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire - 2005 is all extended + gen byte contract = . + replace contract = coe1_p3j + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire - 2005 is all extended + gen byte union = coe1_p3i + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic - 2005 is all extended + gen helper_fs = . + replace helper_fs = coe1_p3q + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> + gen byte firmsize_l_2 = . + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% COMPRESS_> + +compress + +* + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2006_ENOE/MEX_2006_ENOE_V02_M_V02_A_GLD/Programs/MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2006_ENOE/MEX_2006_ENOE_V02_M_V02_A_GLD/Programs/MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..7f49db2e1 --- /dev/null +++ b/GLD/MEX/MEX_2006_ENOE/MEX_2006_ENOE_V02_M_V02_A_GLD/Programs/MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2151 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2006_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-13 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2006] +<_Data collection to_> [12/2006] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [127,790] +<_Sample size (IND)_> [567,951] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-13] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2006" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'06.dta" + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'06.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear + +* Sepcial case, var cs_p14_c is double in Q3 +use "`path_in_stata'/sdemt306.dta" +tostring cs_p14_c, replace +gen quarter = 3 + +foreach quarter of numlist 1 2 4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'06.dta" + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'06.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'06.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2006.dta", replace +*/ + +use "`path_in_stata'/ENOE_2006.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2006 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + * Code different in Q1,2 than Q3,4 for things after codes 305 + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 3, 4) + replace hlp_whours_usual_bin = coe1_p5d if inrange(quarter, 1, 2) + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 3, 4) + replace hlp_whours_lw = coe1_p5c_thrs if inrange(quarter, 1, 2) + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 3, 4) + replace hlp_whours_nw = coe1_p5e_thrs if inrange(quarter, 1, 2) + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 3, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & inrange(quarter, 1, 2) + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inlist(quarter, 3, 4) + replace contract = coe1_p3j if inlist(quarter, 1, 2) + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if inlist(quarter, 1, 2) + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inlist(quarter, 3, 4) + replace helper_fs = coe1_p3q if inlist(quarter, 1, 2) + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> + gen byte firmsize_l_2 = . + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2007_ENOE/MEX_2007_ENOE_V02_M_V02_A_GLD/Programs/MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2007_ENOE/MEX_2007_ENOE_V02_M_V02_A_GLD/Programs/MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..b46e4d3a5 --- /dev/null +++ b/GLD/MEX/MEX_2007_ENOE/MEX_2007_ENOE_V02_M_V02_A_GLD/Programs/MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2179 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2007_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-13 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2007] +<_Data collection to_> [12/2007] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [127,566] +<_Sample size (IND)_> [561,652] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-13] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2007" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'07.dta" + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'07.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'07.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'07.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'07.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2007.dta", replace +*/ + +use "`path_in_stata'/ENOE_2007.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2007 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + * Code different in Q1,2 than Q3,4 for things after codes 305 + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inlist(quarter, 1, 3, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 2 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inlist(quarter, 1, 3, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 2 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inlist(quarter, 1, 3, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 2 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inlist(quarter, 1, 3, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 2 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inlist(quarter,1,3,4) + replace contract = coe1_p3j if quarter == 2 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 2 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inlist(quarter,1,3,4) + replace helper_fs = coe1_p3q if quarter == 2 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2008_ENOE/MEX_2008_ENOE_V02_M_V02_A_GLD/Programs/MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2008_ENOE/MEX_2008_ENOE_V02_M_V02_A_GLD/Programs/MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..bdee9d714 --- /dev/null +++ b/GLD/MEX/MEX_2008_ENOE/MEX_2008_ENOE_V02_M_V02_A_GLD/Programs/MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2177 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2008_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-13 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2008] +<_Data collection to_> [12/2008] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [126,719] +<_Sample size (IND)_> [555,179] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-13] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2008" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'08.dta" + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'08.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'08.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'08.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'08.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2008.dta", replace +*/ + +use "`path_in_stata'\ENOE_2008.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2008 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + * Code different in Q1,2 than Q3,4 for things after codes 305 + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inlist(quarter, 1, 3, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 2 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inlist(quarter, 1, 3, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 2 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inlist(quarter, 1, 3, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 2 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inlist(quarter, 1, 3, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 2 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inlist(quarter,1,3,4) + replace contract = coe1_p3j if quarter == 2 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 2 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inlist(quarter,1,3,4) + replace helper_fs = coe1_p3q if quarter == 2 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2009_ENOE/MEX_2009_ENOE_V02_M_V02_A_GLD/Programs/MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2009_ENOE/MEX_2009_ENOE_V02_M_V02_A_GLD/Programs/MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..3f30e22d4 --- /dev/null +++ b/GLD/MEX/MEX_2009_ENOE/MEX_2009_ENOE_V02_M_V02_A_GLD/Programs/MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2209 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2009_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-13 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2009] +<_Data collection to_> [12/2009] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [125,779] +<_Sample size (IND)_> [547,464] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-12] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2009" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'09.dta" + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'09.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + * For some reason, Q1 data is string, others numeric for some variables, change: + if `quarter' == 1 { + + use "`path_in_stata'/sdemt`quarter'09.dta" + cap gen quarter = `quarter' + destring est_d t_loc, replace + + } + else { + + quietly: append using "`path_in_stata'/sdemt`quarter'09.dta" + replace quarter = `quarter' if mi(quarter) + + } + + + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + * For some reason, Q1 data is string, others numeric for some variables, change: + if `quarter' == 1 { + + use "`path_in_stata'/hogt`quarter'09.dta" + destring est_d t_loc, replace + + } + else { + + quietly: append using "`path_in_stata'/hogt`quarter'09.dta" + + } +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + * For some reason, Q1 data is string, others numeric for some variables, change: + if `quarter' == 1 { + + use "`path_in_stata'/vivt`quarter'09.dta" + destring est_d t_loc, replace + + } + else { + + quietly: append using "`path_in_stata'/vivt`quarter'09.dta" + + } +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2009.dta", replace +*/ + +use "`path_in_stata'\ENOE_2009.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2009 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2010_ENOE/MEX_2010_ENOE_V02_M_V02_A_GLD/Programs/MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2010_ENOE/MEX_2010_ENOE_V02_M_V02_A_GLD/Programs/MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..d15af7652 --- /dev/null +++ b/GLD/MEX/MEX_2010_ENOE/MEX_2010_ENOE_V02_M_V02_A_GLD/Programs/MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2177 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2010_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-12 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2010] +<_Data collection to_> [12/2010] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [126,099] +<_Sample size (IND)_> [546,625] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-12] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2010" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'10.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'10.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'10.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'10.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'10.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2010.dta", replace +*/ + +use "`path_in_stata'\ENOE_2010.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2010 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2011_ENOE/MEX_2011_ENOE_V02_M_V02_A_GLD/Programs/MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2011_ENOE/MEX_2011_ENOE_V02_M_V02_A_GLD/Programs/MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..bdc81e41b --- /dev/null +++ b/GLD/MEX/MEX_2011_ENOE/MEX_2011_ENOE_V02_M_V02_A_GLD/Programs/MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2178 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2011_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-12 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2011] +<_Data collection to_> [12/2011] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [125,888] +<_Sample size (IND)_> [540,860] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO ] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-12] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2011" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'11.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'11.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'11.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'11.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'11.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the CMO to ISCO codes +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop cmo match + +*Merge in SCIAN 04 codes +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2011.dta", replace +*/ + +use "`path_in_stata'\ENOE_2011.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2011 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + * Domestic workers (codes 400), Guests (700s) and non-defined (999) are not counted + label var hsize "Household size" +* + + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + *label de lblmigrated_from_code + *label values migrated_from_code lblmigrated_from_code + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2012_ENOE/MEX_2012_ENOE_V02_M_V02_A_GLD/Programs/MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2012_ENOE/MEX_2012_ENOE_V02_M_V02_A_GLD/Programs/MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..a4e5e8c79 --- /dev/null +++ b/GLD/MEX/MEX_2012_ENOE/MEX_2012_ENOE_V02_M_V02_A_GLD/Programs/MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2243 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2012_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2012-12-11 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2012] +<_Data collection to_> [12/2012] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [125,785] +<_Sample size (IND)_> [536,626] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [CMO Q1, Q2, SINCO 2011 Q3, Q4] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2004 Q1, Q2, SCIAN 2007 Q3, Q4] +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-12] - [Update on arrangement process, isc, isic, njobs, hsize, ...] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2012" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce + +/* +* There is a change in questionnaire and classifiers. Please see INEGI website + +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe1t`quarter'12.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/coe2t`quarter'12.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/sdemt`quarter'12.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/hogt`quarter'12.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/vivt`quarter'12.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job (Q1 and Q2) - CMO USED +tostring coe1_p3, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_1_first_half +replace isco_1_first_half = "" if quarter > 2 +drop cmo match + +tostring coe2_p7a, gen(cmo) format("%04.0f") +merge m:1 cmo using "`path_in_stata'/CMO_09_ISCO_08.dta", keep(master match) nogen +rename isco isco_2_first_half +replace isco_2_first_half = "" if quarter > 2 +drop cmo match + +* Merge in the SINCO to ISCO codes - first and second job (Q3 and Q4) - SINCO 19 USED +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1_second_half +replace isco_1_second_half = "" if quarter < 3 +drop sinco match + +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2_second_half +replace isco_2_second_half = "" if quarter <3 +drop sinco match + +* Unite the halves +gen isco_1 = isco_1_first_half if inrange(quarter,1,2) +replace isco_1 = isco_1_second_half if inrange(quarter,3,4) + +gen isco_2 = isco_2_first_half if inrange(quarter,1,2) +replace isco_2 = isco_2_second_half if inrange(quarter,3,4) + +*Merge in SCIAN codes - first and second job - (Q 1&2 - SCIAN 04) +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_1_fh +replace isic_1_fh = "" if quarter > 2 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_04_ISIC_4.dta", keep(master match) nogen +rename isic isic_2_fh +replace isic_2_fh = "" if quarter > 2 +drop scian + +*Merge in SCIAN codes - first and second job - (Q 3&4 - SCIAN 07) +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1_sh +replace isic_1_sh = "" if quarter < 3 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2_sh +replace isic_2_sh = "" if quarter < 3 +drop scian + +* Unite the halves +gen isic_1 = isic_1_fh if inrange(quarter,1,2) +replace isic_1 = isic_1_sh if inrange(quarter,3,4) + +gen isic_2 = isic_2_fh if inrange(quarter,1,2) +replace isic_2 = isic_2_sh if inrange(quarter,3,4) + +* Save the file +save "`path_in_stata'/ENOE_2012.dta", replace +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOE_2012.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2012 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize_q34 = _N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + replace hsize_q34 = . if inrange(quarter, 3, 4) + bysort hhid quarter: gen hsize_q12 = _N if inrange(sdem_par, 101, 305) | inrange(sdem_par_c,501,623) + replace hsize_q12 = . if inrange(quarter, 1, 2) + gen hsize = hsize_q12 + replace hsize = hsize_q34 if missing(hsize) + drop hsize_* + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are not counted + * Codes different in Q1, Q2 + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + * Code different in Q1,2 than Q3,4 for things after codes 305 + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + + * Q3/Q4 + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) & inrange(quarter, 3, 4) + replace relationharm = 5 if inrange(sdem_par_c, 403, 424) & inrange(quarter, 3, 4) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) & inrange(quarter, 3, 4) + + * Q1/Q2 + replace relationharm = 4 if inrange(sdem_par_c, 601, 601) & inrange(quarter, 1, 2) + replace relationharm = 5 if inrange(sdem_par_c, 602, 623) & inrange(quarter, 1, 2) + replace relationharm = 6 if (inrange(sdem_par_c, 401, 461) | inrange(sdem_par_c, 701, 999) | inrange(sdem_par_c, 501, 503)) & inrange(quarter, 1, 2) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2013_ENOE/MEX_2013_ENOE_V02_M_V02_A_GLD/Programs/MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2013_ENOE/MEX_2013_ENOE_V02_M_V02_A_GLD/Programs/MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..9dd3037dd --- /dev/null +++ b/GLD/MEX/MEX_2013_ENOE/MEX_2013_ENOE_V02_M_V02_A_GLD/Programs/MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2190 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2013_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-05 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2013] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2013] +<_Data collection to_> [05/2013] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [179,964] +<_Sample size (IND)_> [689,476] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 2008] +<_OCCUP National_> [Sinco 11] +<_ISIC Version_> [Rev.4 ] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-D7] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-05] - [Update based on new info (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* All steps necessary to merge dataset + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2013" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'13.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'13.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'13.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'13.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'13.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2013.dta", replace +*/ + +use "`path_in_stata'\ENOE_2013.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2013 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year = industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2014_ENOE/MEX_2014_ENOE_V02_M_V02_A_GLD/Programs/MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2014_ENOE/MEX_2014_ENOE_V02_M_V02_A_GLD/Programs/MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..db6720a7a --- /dev/null +++ b/GLD/MEX/MEX_2014_ENOE/MEX_2014_ENOE_V02_M_V02_A_GLD/Programs/MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2187 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2014_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-05 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2014] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2014] +<_Data collection to_> [05/2014] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [126,803] +<_Sample size (IND)_> [540,117] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-01] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-02] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ +*----------1.1: Initial commands------------------------------* + + clear + set more off + set mem 800m + +*----------1.2: Set directories------------------------------* + + * Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2014" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'14.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'14.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'14.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'14.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'14.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2014.dta", replace +*/ + +use "`path_in_stata'\ENOE_2014.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2014 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + * + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year = . + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year = . + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year = . + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year = industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2015_ENOE/MEX_2015_ENOE_V02_M_V02_A_GLD/Programs/MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2015_ENOE/MEX_2015_ENOE_V02_M_V02_A_GLD/Programs/MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..f854e17e8 --- /dev/null +++ b/GLD/MEX/MEX_2015_ENOE/MEX_2015_ENOE_V02_M_V02_A_GLD/Programs/MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2184 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2015_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-03 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2015] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2015] +<_Data collection to_> [05/2015] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [126,994] +<_Sample size (IND)_> [536,347] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-03] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ +*----------1.1: Initial commands------------------------------* + + clear + set more off + set mem 800m + +*----------1.2: Set directories------------------------------* + + * Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2015" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'15.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'15.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'15.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'15.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'15.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2015.dta", replace +*/ + +use "`path_in_stata'\ENOE_2015.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2015 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + +} + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year = . if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year = . + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year = . + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year = . + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year = industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year = industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual =t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2016_ENOE/MEX_2016_ENOE_V02_M_V02_A_GLD/Programs/MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2016_ENOE/MEX_2016_ENOE_V02_M_V02_A_GLD/Programs/MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..da298a097 --- /dev/null +++ b/GLD/MEX/MEX_2016_ENOE/MEX_2016_ENOE_V02_M_V02_A_GLD/Programs/MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2182 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2016_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-03 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2016] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2016] +<_Data collection to_> [05/2016] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [127,383] +<_Sample size (IND)_> [530,636] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-03] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + + * Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2016" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'16.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'16.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'16.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'16.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'16.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2016.dta", replace +*/ + use "`path_in_stata'\ENOE_2016.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2016 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev_note> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = "9 - Distrito Federal" if subnatid1 == "9 - Ciudad de México" + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year = industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year = industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2017_ENOE/MEX_2017_ENOE_V02_M_V02_A_GLD/Programs/MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2017_ENOE/MEX_2017_ENOE_V02_M_V02_A_GLD/Programs/MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..67cd63216 --- /dev/null +++ b/GLD/MEX/MEX_2017_ENOE/MEX_2017_ENOE_V02_M_V02_A_GLD/Programs/MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2183 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2017_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA-18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-03 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2017] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2017] +<_Data collection to_> [05/2017] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [129,946] +<_Sample size (IND)_> [535,341] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-03] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2017" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per ca est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'17.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'17.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'17.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'17.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'17.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2017.dta", replace + +*/ + use "`path_in_stata'\ENOE_2017.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2017 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" + + *check int_Month out of the Q1 + tab int_month + +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2018_ENOE/MEX_2018_ENOE_V02_M_V02_A_GLD/Programs/MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2018_ENOE/MEX_2018_ENOE_V02_M_V02_A_GLD/Programs/MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..7e4d11651 --- /dev/null +++ b/GLD/MEX/MEX_2018_ENOE/MEX_2018_ENOE_V02_M_V02_A_GLD/Programs/MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2180 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2018_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> [STATA 18] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-02 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2018] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2018] +<_Data collection to_> [12/2018] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [129,176] +<_Sample size (IND)_> [529,533] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-02] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2018" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +* Rename variables for append all quarters +* harmonized output in a single file + +/* +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'18.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'18.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'18.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'18.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'18.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2018.dta", replace + +*/ + use "`path_in_stata'\ENOE_2018.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used" +* + + +*<_year_> + gen int year = 2018 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + +} + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Only one salary zone (border zone + * introduced Jan 2019) - https://www.banxico.org.mx/SieInternet/consultarDirectorioInternetAction.do?sector=10&accion=consultarCuadro&idCuadro=CL289&locale=es + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal' + replace salary_cat = 2 if wage_no_compen == `min_sal' + replace salary_cat = 3 if wage_no_compen > `min_sal' & wage_no_compen <= `min_sal'*2 + replace salary_cat = 4 if wage_no_compen > `min_sal'*2 & wage_no_compen <= `min_sal'*3 + replace salary_cat = 5 if wage_no_compen > `min_sal'*3 & wage_no_compen <= `min_sal'*5 + replace salary_cat = 6 if wage_no_compen > `min_sal'*5 & wage_no_compen <= `min_sal'*10 + replace salary_cat = 7 if wage_no_compen > `min_sal'*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = 1 + + tempfile wage_helper + save "`wage_helper'" + + restore + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + summ sdem_salario if sdem_zona == 1 + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == 1 & coe2_p6c == 2 + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year = . + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year = . + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year = . + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2019_ENOE/MEX_2019_ENOE_V02_M_V02_A_GLD/Programs/MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do b/GLD/MEX/MEX_2019_ENOE/MEX_2019_ENOE_V02_M_V02_A_GLD/Programs/MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do new file mode 100644 index 000000000..c3d69f96a --- /dev/null +++ b/GLD/MEX/MEX_2019_ENOE/MEX_2019_ENOE_V02_M_V02_A_GLD/Programs/MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do @@ -0,0 +1,2201 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2019_ENOE_V02_M_V02_A_GLD_ALL.do] +<_Application_> STATA 18 <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-12-02 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2019] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2019] +<_Data collection to_> [05/2019] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [134,545] +<_Sample size (IND)_> [547,309] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] + +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] +* Date: [2024-12-02] - [Update based on new series since 2020 (assembly, ISIC/ISCO, ...)] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2019" +local survey "ENOE" +local vermast "V02" +local veralt "V02" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +/* +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe1t`quarter'19.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/coe2t`quarter'19.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/sdemt`quarter'19.dta", clear + rename *, lower + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/hogt`quarter'19.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + use "`path_in_stata'/vivt`quarter'19.dta", clear + rename *, lower + cap tostring t_loc, replace force + tempfile d`quarter' + save "d`quarter'", replace + +} + +* Append files +clear +append using d1 d2 d3 d4 + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren per using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel per using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel per n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2019.dta", replace + +*/ + use "`path_in_stata'\ENOE_2019.dta", clear + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "isced_2011" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2019 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" + isid per hhid pid +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac, but at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys per : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen quarter = floor(per/100) + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + destring t_loc, replace + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + + * Name of Mexico's capital was changed in 2016 from Distrito Federal to + * Ciudad de Mexico. In the data (var ent) only from 2020. Correct here. + replace helper_lbl = "Ciudad de México" if helper_num == "9" + + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = . + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + +gen byte ed_mod_age = 5 +label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *cs_p13_1 (school level) & cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + label var potential_lf "Potential labour force status" +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* +} + + +*----------8.2: 7 day reference main job------------------------------* + +{ +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2020_ENOE/MEX_2020_ENOE_V03_M_V01_A_GLD/Programs/MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do b/GLD/MEX/MEX_2020_ENOE/MEX_2020_ENOE_V03_M_V01_A_GLD/Programs/MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do new file mode 100644 index 000000000..80e030f69 --- /dev/null +++ b/GLD/MEX/MEX_2020_ENOE/MEX_2020_ENOE_V03_M_V01_A_GLD/Programs/MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do @@ -0,0 +1,2147 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2020_ENOE_V03_M_V01_A_GLD_ALL.do] +<_Application_> [STATA] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2021-04-01 + +------------------------------------------------------------------------- + +<_Country_> Mexico (MEX) +<_Survey Title_> Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> 2020 +<_Study ID_> Microdata Library ID if present] +<_Data collection from_> 01/2020 +<_Data collection to_> 03/2020 +<_Source of dataset_> INEGI (Mexico NSO) +<_Sample size (HH)_> [] +<_Sample size (IND)_> 417,783 +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-18] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2019] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2024-10-24] - New master that only uses T1 of 2020 as the last ENOE before pandemic +* switch to ENOE-N + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2020" +local survey "ENOE" +local vermast "V03" +local veralt "V01" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +/* +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per" + +*** SDEM *** +use "`path_in_stata'/ENOE_SDEMT120.dta" + +* First rename all +rename * sdem_= + +* Now drop the cases we don't want + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Add quarter +gen quarter = 1 + +* Save tempfile +tempfile sdem +save "`sdem'" + +*** COE1 *** +use "`path_in_stata'/ENOE_COE1T120.dta" + +* First rename all +rename * coe1_= + +* Now drop the cases we don't want + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save tempfile +tempfile coe1 +save "`coe1'" + +*** COE2 *** +use "`path_in_stata'/ENOE_COE2T120.dta" + +* First rename all +rename * coe2_= + +* Now drop the cases we don't want + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save tempfile +tempfile coe2 +save "`coe2'" + +*** HOG *** +use "`path_in_stata'/ENOE_HOGT120.dta" + +* First rename all +rename * hog_= + +* Now drop the cases we don't want + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save tempfile +tempfile hog +save "`hog'" + +*** VIV *** +use "`path_in_stata'/ENOE_VIVT120.dta" + +* First rename all +rename * viv_= + +* Now drop the cases we don't want + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save tempfile +tempfile viv +save "`viv'" + +* Now merge it +use "`sdem'", clear + +* Add in COEs +quietly : merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren using "`coe1'", assert(match master) nogen +quietly : merge 1:1 cd_a ent con v_sel n_hog h_mud n_ren using "`coe2'", assert(match master) nogen + +* Add in HH level info, keep only HHs that have individual info +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel n_hog h_mud using "`hog'", keep(match) nogen +merge m:1 cd_a ent con v_sel using "`viv'", keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2020.dta", replace +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOE_2020.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str3 countrycode = "MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2020 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> +/* <_hhid_note> + + The variable should be a string made up of the elements to define it, that is psu code, ssu, ... + Each element should always be as long as needed for the longest element. That is, if there are + 60 psu coded 1 through 60, codes should be 01, 02, ..., 60. If there are 160 it should be 001, + 002, ..., 160. + + */ + + tostring (ent v_sel n_ren), gen(ent_str v_sel_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud), gen(n_hog_str h_mud_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" +* + + +*<_weight_> + +/* <_weight_note> + + In this case, we only have one quarter hence we will only keep weight as + quarterly weight, leave this missing. + + */ + + gen weight = . + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = . + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + gen strata = est_d + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + +} + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + replace urban=1 if inrange(t_loc,1,3) + replace urban=0 if t_loc==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire - 2020 ENOE only Q1 Extended + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + *replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d /// if quarter == 1 + + gen hlp_whours_lw = . + *replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs /// if quarter == 1 + + gen hlp_whours_nw = . + *replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs /// if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify - 2020 ENOE only Q1 Extended +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + *replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') /// & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + gen byte contract=coe1_p3j + recode contract 2=0 9=. + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + gen byte union = 1 if coe1_p3i == 1 + replace union = 0 if coe1_p3i == 2 + replace union = . if coe1_p3i == 9 + replace union = . if lstatus != 1 + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + gen byte firmsize_l = . + replace firmsize_l = 1 if coe1_p3q == 1 + replace firmsize_l = 2 if coe1_p3q == 2 + replace firmsize_l = 6 if coe1_p3q == 3 + replace firmsize_l = 11 if coe1_p3q == 4 + replace firmsize_l = 16 if coe1_p3q == 5 + replace firmsize_l = 21 if coe1_p3q == 6 + replace firmsize_l = 31 if coe1_p3q == 7 + replace firmsize_l = 51 if coe1_p3q == 8 + replace firmsize_l = 101 if coe1_p3q == 9 + replace firmsize_l = 251 if coe1_p3q == 10 + replace firmsize_l = 501 if coe1_p3q == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if coe1_p3q == 1 + replace firmsize_u = 5 if coe1_p3q == 2 + replace firmsize_u = 10 if coe1_p3q == 3 + replace firmsize_u = 15 if coe1_p3q == 4 + replace firmsize_u = 20 if coe1_p3q == 5 + replace firmsize_u = 30 if coe1_p3q == 6 + replace firmsize_u = 50 if coe1_p3q == 7 + replace firmsize_u = 100 if coe1_p3q == 8 + replace firmsize_u = 250 if coe1_p3q == 9 + replace firmsize_u = 500 if coe1_p3q==10 + replace firmsize_u = . if coe1_p3q==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup = 10 if occup == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> + * Only in extended survey. Since this has only Q1, OK to do + gen byte firmsize_l_2 = . + replace firmsize_l_2 = 1 if coe2_p7e == 1 + replace firmsize_l_2 = 2 if coe2_p7e == 2 + replace firmsize_l_2 = 6 if coe2_p7e == 3 + replace firmsize_l_2 = 11 if coe2_p7e == 4 + replace firmsize_l_2 = 16 if coe2_p7e == 5 + replace firmsize_l_2 = 21 if coe2_p7e == 6 + replace firmsize_l_2 = 31 if coe2_p7e == 7 + replace firmsize_l_2 = 51 if coe2_p7e == 8 + replace firmsize_l_2 = 101 if coe2_p7e == 9 + replace firmsize_l_2 = 251 if coe2_p7e == 10 + replace firmsize_l_2 = 501 if coe2_p7e == 11 + + * Add self-employed + replace firmsize_l_2 = 1 if empstat_2 == 4 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + + gen byte firmsize_u_2 = . + replace firmsize_u_2 = 1 if coe2_p7e == 1 + replace firmsize_u_2 = 5 if coe2_p7e == 2 + replace firmsize_u_2 = 10 if coe2_p7e == 3 + replace firmsize_u_2 = 15 if coe2_p7e == 4 + replace firmsize_u_2 = 20 if coe2_p7e == 5 + replace firmsize_u_2 = 30 if coe2_p7e == 6 + replace firmsize_u_2 = 50 if coe2_p7e == 7 + replace firmsize_u_2 = 100 if coe2_p7e == 8 + replace firmsize_u_2 = 250 if coe2_p7e == 9 + replace firmsize_u_2 = 500 if coe2_p7e == 10 + replace firmsize_u_2 = . if coe2_p7e == 11 + + * Add self-employed + replace firmsize_u_2 = 1 if empstat_2 == 4 + replace firmsize_u_2=. if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2020_ENOEN/MEX_2020_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do b/GLD/MEX/MEX_2020_ENOEN/MEX_2020_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do new file mode 100644 index 000000000..4955a948e --- /dev/null +++ b/GLD/MEX/MEX_2020_ENOEN/MEX_2020_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do @@ -0,0 +1,2166 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2020_ENOEN_V01_M_V01_A_GLD_ALL.do] +<_Application_> [STATA] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2021-04-01 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2020] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2020] +<_Data collection to_> [05/2020] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [] +<_Sample size (IND)_> [] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-18] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2019] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007] +----------------------------------------------------------------------- +<_Version Control_> + +* Date: [2021-04-D1] - [Check code and input variables] +* Date: [2022-03-08] - [corrections variable wmonths, use of correct version for isic] +* Date: [2022-06-27] - [corrections variable empstat, firmsize] +* Date: [2022-09-07] - [corrections variable occup_skill, occup(2013-2020), subnatid1 , subnatid2 and occup_skill_2] +* Date: [2023-02-08] - [Correct empstat] +* Date: [2023-03-29] - [Correct subnatid1, educy] + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2020" +local survey "ENOEN" +local vermast "V01" +local veralt "V01" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce +/* +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 3/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE1T`quarter'20.dta" + +} + +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 3/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE2T`quarter'20.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 3/4 { + + quietly: append using "`path_in_stata'/ENOEN_SDEMT`quarter'20.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 3/4 { + + quietly: append using "`path_in_stata'/ENOEN_HOGT`quarter'20.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 3/4 { + + quietly: append using "`path_in_stata'/ENOEN_VIVT`quarter'20.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud n_ren using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud n_ren using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel tipo mes_cal ca using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOEN_2020.dta", replace +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOEN_2020.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode="MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOEN" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2020 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> +/* <_hhid_note> + + For ENOE-N years, we need the additional tipo (standard from now on) and mes_cal as well as + ca variables. According to CONEVAL in their ITPL calcualtions (*) ca is only necessary until + 2nd quarter 2021. We keep it nonetheless for consistency + + (*) - See codes in https://www.coneval.org.mx/Medicion/Paginas/ITLP-IS_pobreza_laboral.aspx + + */ + + tostring (ent v_sel mes_cal n_ren), gen(ent_str v_sel_str mes_cal_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud tipo ca), gen(n_hog_str h_mud_str tipo_str ca_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str tipo_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac_tri: at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys quarter : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac_tri*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = fac_men + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac_tri + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + * Data has estrato for trimester & month. + * Monthly has missing values, go for quarter + gen strata = est_d_tri + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + + +*<_type_of_interview_> + +/* <_type_of_interview_note> + + Since ENOE-N, there are two kinds of interviews: face to face and by + telephone. The latter can occur more than once in a quarter. Need it + to differentiate. + + */ + gen type_of_interview = tipo + label var type_of_interview "Type of interview (in person or telephone)" + la de lbltype 1 "Face to face" 2 "Telephone" + label values type_of_interview lbltype +* + +} + + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + replace urban=1 if inrange(t_loc_tri,1,3) + replace urban=0 if t_loc_tri==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 423) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = . + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = . + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = . + label de lblmigrated_binary 0 "No" 1 "Yes" + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + gen migrated_from_code = . + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = . + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = . + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire - ENOEN 2020 only basic Q3, 4 + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + *replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + *replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + *replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire - ENOEN 2020 only basic Q3, 4 +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + *replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + gen byte contract = coe1_p3i + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = . + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + gen byte firmsize_l = . + replace firmsize_l = 1 if coe1_p3l == 1 + replace firmsize_l = 2 if coe1_p3l == 2 + replace firmsize_l = 6 if coe1_p3l == 3 + replace firmsize_l = 11 if coe1_p3l == 4 + replace firmsize_l = 16 if coe1_p3l == 5 + replace firmsize_l = 21 if coe1_p3l == 6 + replace firmsize_l = 31 if coe1_p3l == 7 + replace firmsize_l = 51 if coe1_p3l == 8 + replace firmsize_l = 101 if coe1_p3l == 9 + replace firmsize_l = 251 if coe1_p3l == 10 + replace firmsize_l = 501 if coe1_p3l == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if coe1_p3l == 1 + replace firmsize_u = 5 if coe1_p3l == 2 + replace firmsize_u = 10 if coe1_p3l == 3 + replace firmsize_u = 15 if coe1_p3l == 4 + replace firmsize_u = 20 if coe1_p3l == 5 + replace firmsize_u = 30 if coe1_p3l == 6 + replace firmsize_u = 50 if coe1_p3l == 7 + replace firmsize_u = 100 if coe1_p3l == 8 + replace firmsize_u = 250 if coe1_p3l == 9 + replace firmsize_u = 500 if coe1_p3l==10 + replace firmsize_u = . if coe1_p3l==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup = 10 if occup == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> + * Only in extended survey. This version only has Q3, Q4, so skip + gen byte firmsize_l_2 = . + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2021_ENOEN/MEX_2021_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do b/GLD/MEX/MEX_2021_ENOEN/MEX_2021_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do new file mode 100644 index 000000000..9ff17f05a --- /dev/null +++ b/GLD/MEX/MEX_2021_ENOEN/MEX_2021_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do @@ -0,0 +1,2304 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2021_ENOEN_V01_M_V01_A_GLD_ALL.do] +<_Application_> [STATA] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2021-04-01 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2021] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2021] +<_Data collection to_> [05/2021] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [157,660] +<_Sample size (IND)_> [609,843] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-13] +<_ISCED Version_> [] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [Sinco 2011 Q1, Q2, SINCO 2019 Q3, Q4] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2007 Q1, Q2, SCIAN 2018 Q3, Q4] +----------------------------------------------------------------------- +<_Version Control_> + + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2021" +local survey "ENOEN" +local vermast "V01" +local veralt "V01" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce + +/* +* There is a change in questionnaire and classifiers. Please see INEGI website + +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo ca mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE1T`quarter'21.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE2T`quarter'21.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_SDEMT`quarter'21.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_HOGT`quarter'21.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_VIVT`quarter'21.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud n_ren using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud n_ren using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel tipo mes_cal ca using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel tipo mes_cal ca n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - first and second job (Q1 and Q2) - SINCO 11 USED +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_1_first_half +replace isco_1_first_half = "" if quarter > 2 +drop sinco match + +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_11_ISCO_08.dta", keep(master match) nogen +rename isco isco_2_first_half +replace isco_2_first_half = "" if quarter > 2 +drop sinco match + +* Merge in the SINCO to ISCO codes - first and second job (Q3 and Q4) - SINCO 19 USED +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_1_second_half +replace isco_1_second_half = "" if quarter < 3 +drop sinco match + +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_2_second_half +replace isco_2_second_half = "" if quarter <3 +drop sinco match + +* Unite the halves +gen isco_1 = isco_1_first_half if inrange(quarter,1,2) +replace isco_1 = isco_1_second_half if inrange(quarter,3,4) + +gen isco_2 = isco_2_first_half if inrange(quarter,1,2) +replace isco_2 = isco_2_second_half if inrange(quarter,3,4) + +*Merge in SCIAN codes - first and second job - (Q 1&2 - SCIAN 07) +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_1_fh +replace isic_1_fh = "" if quarter > 2 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_07_ISIC_4.dta", keep(master match) nogen +rename isic isic_2_fh +replace isic_2_fh = "" if quarter > 2 +drop scian + +*Merge in SCIAN codes - first and second job - (Q 3&4 - SCIAN 18) +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_1_sh +replace isic_1_sh = "" if quarter < 3 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_2_sh +replace isic_2_sh = "" if quarter < 3 +drop scian + +* Unite the halves +gen isic_1 = isic_1_fh if inrange(quarter,1,2) +replace isic_1 = isic_1_sh if inrange(quarter,3,4) + +gen isic_2 = isic_2_fh if inrange(quarter,1,2) +replace isic_2 = isic_2_sh if inrange(quarter,3,4) + +* Save the file +save "`path_in_stata'/ENOEN_2021.dta", replace +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOEN_2021.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode="MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOEN" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2021 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> +/* <_hhid_note> + + For ENOE-N years, we need the additional tipo (standard from now on) and mes_cal as well as + ca variables. According to CONEVAL in their ITPL calcualtions (*) ca is only necessary until + 2nd quarter 2021. We keep it nonetheless for consistency + + (*) - See codes in https://www.coneval.org.mx/Medicion/Paginas/ITLP-IS_pobreza_laboral.aspx + + */ + + tostring (ent v_sel mes_cal n_ren), gen(ent_str v_sel_str mes_cal_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud tipo ca), gen(n_hog_str h_mud_str tipo_str ca_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str tipo_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac_tri: at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys quarter : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac_tri*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = fac_men + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac_tri + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + * Data has estrato for trimester & month. + * Monthly has missing values, go for quarter + gen strata = est_d_tri + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + + +*<_type_of_interview_> + +/* <_type_of_interview_note> + + Since ENOE-N, there are two kinds of interviews: face to face and by + telephone. The latter can occur more than once in a quarter. Need it + to differentiate. + + */ + gen type_of_interview = tipo + label var type_of_interview "Type of interview (in person or telephone)" + la de lbltype 1 "Face to face" 2 "Telephone" + label values type_of_interview lbltype +* + +} + + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + replace urban=1 if inrange(t_loc_tri,1,3) + replace urban=0 if t_loc_tri==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 424) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = 1 + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = 1 + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = 0 + * Migrated if either in different country or state (20a) or a different municipality (20b) + replace migrated_binary = 1 if inrange(sdem_cs_p20a_1,2,4) | sdem_cs_p20b_1 == 2 + label de lblmigrated_binary 0 "No" 1 "Yes", replace + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + replace migrated_from_cat = 3 if sdem_cs_p20a_1 == 1 & sdem_cs_p20b_1 == 2 + replace migrated_from_cat = 4 if sdem_cs_p20a_1 == 2 + replace migrated_from_cat = 5 if inrange(sdem_cs_p20a_1,3,4) + replace migrated_from_cat = . if migrated_binary == 1 + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + * We want to code this as subnatid1, use that info to merge it in + gen mig_code_helper = sdem_cs_p20a_c if sdem_cs_p20a_c < 100 & migrated_binary == 1 + preserve + + keep subnatid1 + rename subnatid1 long_name + gen counter = 1 + collapse (rawsum) counter, by(long_name) + drop counter + gen mig_code_helper = substr(long_name,1,2) + destring mig_code_helper, replace + tempfile mig_helper + save "`mig_helper'" + + restore + + merge m:1 mig_code_helper using "`mig_helper'", assert(match master) nogen + + gen migrated_from_code = long_name + drop long_name mig_code_helper + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = "" + replace migrated_from_country = "ZAF" if sdem_cs_p20a_c == 154 + replace migrated_from_country = "ARG" if sdem_cs_p20a_c == 204 + replace migrated_from_country = "BLZ" if sdem_cs_p20a_c == 208 + replace migrated_from_country = "BRA" if sdem_cs_p20a_c == 211 + replace migrated_from_country = "CAN" if sdem_cs_p20a_c == 213 + replace migrated_from_country = "COL" if sdem_cs_p20a_c == 214 + replace migrated_from_country = "CRI" if sdem_cs_p20a_c == 215 + replace migrated_from_country = "CUB" if sdem_cs_p20a_c == 216 + replace migrated_from_country = "CHL" if sdem_cs_p20a_c == 217 + replace migrated_from_country = "ECU" if sdem_cs_p20a_c == 219 + replace migrated_from_country = "SLV" if sdem_cs_p20a_c == 220 + replace migrated_from_country = "USA" if sdem_cs_p20a_c == 221 + replace migrated_from_country = "GTM" if sdem_cs_p20a_c == 225 + replace migrated_from_country = "HTI" if sdem_cs_p20a_c == 228 + replace migrated_from_country = "HND" if sdem_cs_p20a_c == 229 + replace migrated_from_country = "NIC" if sdem_cs_p20a_c == 234 + replace migrated_from_country = "PAN" if sdem_cs_p20a_c == 235 + replace migrated_from_country = "PRY" if sdem_cs_p20a_c == 236 + replace migrated_from_country = "PRI" if sdem_cs_p20a_c == 238 + replace migrated_from_country = "DOM" if sdem_cs_p20a_c == 239 + replace migrated_from_country = "URY" if sdem_cs_p20a_c == 247 + replace migrated_from_country = "VEN" if sdem_cs_p20a_c == 250 + replace migrated_from_country = "IND" if sdem_cs_p20a_c == 325 + replace migrated_from_country = "DEU" if sdem_cs_p20a_c == 402 + replace migrated_from_country = "ESP" if sdem_cs_p20a_c == 415 + replace migrated_from_country = "FRA" if sdem_cs_p20a_c == 419 + replace migrated_from_country = "ITA" if sdem_cs_p20a_c == 425 + replace migrated_from_country = "GBR" if sdem_cs_p20a_c == 439 + replace migrated_from_country = "AUS" if sdem_cs_p20a_c == 501 + + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = sdem_cs_p20c_1 + recode migrated_reason (3 4 = 1) (5 = 2) (1 2 = 3) (6 7 9 = 4) (8 10 11 = 5) + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2022_ENOEN/MEX_2022_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do b/GLD/MEX/MEX_2022_ENOEN/MEX_2022_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do new file mode 100644 index 000000000..bdabf841b --- /dev/null +++ b/GLD/MEX/MEX_2022_ENOEN/MEX_2022_ENOEN_V01_M_V01_A_GLD/Programs/MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do @@ -0,0 +1,2267 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2022_ENOEN_V01_M_V01_A_GLD_ALL.do] +<_Application_> [STATA] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2022-04-01 + +------------------------------------------------------------------------- + +<_Country_> [Mexico (MEX)] +<_Survey Title_> [Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> [2022] +<_Study ID_> [Microdata Library ID if present] +<_Data collection from_> [01/2022] +<_Data collection to_> [12/2022] +<_Source of dataset_> [Mexico NSO] +<_Sample size (HH)_> [] +<_Sample size (IND)_> [] +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-18] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [INCO 2019] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2018] +----------------------------------------------------------------------- +<_Version Control_> + + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2022" +local survey "ENOEN" +local vermast "V01" +local veralt "V01" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce + +/* +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. This is because some repeat: there are p1 in one file, +* p1 in another, Stata will keep the master, not tell us about the repeat. +* We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE1T`quarter'22.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_COE2T`quarter'22.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_SDEMT`quarter'22.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_HOGT`quarter'22.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOEN_VIVT`quarter'22.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud n_ren using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud n_ren using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel tipo mes_cal using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - SINCO 19 USED +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match + +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOEN_2022.dta", replace +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOEN_2022.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode="MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOEN" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2022 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> +/* <_hhid_note> + + For ENOE-N years, we need the additional tipo (standard from now on) and mes_cal as well as + ca variables. According to CONEVAL in their ITPL calcualtions (*) ca is only necessary until + 2nd quarter 2021. We keep it nonetheless for consistency + + (*) - See codes in https://www.coneval.org.mx/Medicion/Paginas/ITLP-IS_pobreza_laboral.aspx + + */ + + tostring (ent v_sel mes_cal n_ren), gen(ent_str v_sel_str mes_cal_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud tipo), gen(n_hog_str h_mud_str tipo_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str tipo_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac_tri: at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys quarter : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac_tri*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = fac_men + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac_tri + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + * Data has estrato for trimester & month. + * Monthly has missing values, go for quarter + gen strata = est_d_tri + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + + +*<_type_of_interview_> + +/* <_type_of_interview_note> + + Since ENOE-N, there are two kinds of interviews: face to face and by + telephone. The latter can occur more than once in a quarter. Need it + to differentiate. + + */ + gen type_of_interview = tipo + label var type_of_interview "Type of interview (in person or telephone)" + la de lbltype 1 "Face to face" 2 "Telephone" + label values type_of_interview lbltype +* + +} + + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + replace urban=1 if inrange(t_loc_tri,1,3) + replace urban=0 if t_loc_tri==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 6 "37 - Torreón" 20 "38 - Ciudad Juárez" 30 "39 - Coatzacoalcos" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 424) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = 1 + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = 1 + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = 0 + * Migrated if either in different country or state (20a) or a different municipality (20b) + replace migrated_binary = 1 if inrange(sdem_cs_p20a_1,2,4) | sdem_cs_p20b_1 == 2 + label de lblmigrated_binary 0 "No" 1 "Yes", replace + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + replace migrated_from_cat = 3 if sdem_cs_p20a_1 == 1 & sdem_cs_p20b_1 == 2 + replace migrated_from_cat = 4 if sdem_cs_p20a_1 == 2 + replace migrated_from_cat = 5 if inrange(sdem_cs_p20a_1,3,4) + replace migrated_from_cat = . if migrated_binary == 1 + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + * We want to code this as subnatid1, use that info to merge it in + gen mig_code_helper = sdem_cs_p20a_c if sdem_cs_p20a_c < 100 & migrated_binary == 1 + preserve + + keep subnatid1 + rename subnatid1 long_name + gen counter = 1 + collapse (rawsum) counter, by(long_name) + drop counter + gen mig_code_helper = substr(long_name,1,2) + destring mig_code_helper, replace + tempfile mig_helper + save "`mig_helper'" + + restore + + merge m:1 mig_code_helper using "`mig_helper'", assert(match master) nogen + + gen migrated_from_code = long_name + drop long_name mig_code_helper + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = "" + replace migrated_from_country = "ARG" if sdem_cs_p20a_c == 204 + replace migrated_from_country = "BLZ" if sdem_cs_p20a_c == 208 + replace migrated_from_country = "BOL" if sdem_cs_p20a_c == 210 + replace migrated_from_country = "BRA" if sdem_cs_p20a_c == 211 + replace migrated_from_country = "CAN" if sdem_cs_p20a_c == 213 + replace migrated_from_country = "COL" if sdem_cs_p20a_c == 214 + replace migrated_from_country = "CRI" if sdem_cs_p20a_c == 215 + replace migrated_from_country = "CUB" if sdem_cs_p20a_c == 216 + replace migrated_from_country = "CHL" if sdem_cs_p20a_c == 217 + replace migrated_from_country = "ECU" if sdem_cs_p20a_c == 219 + replace migrated_from_country = "SLV" if sdem_cs_p20a_c == 220 + replace migrated_from_country = "USA" if sdem_cs_p20a_c == 221 + replace migrated_from_country = "GTM" if sdem_cs_p20a_c == 225 + replace migrated_from_country = "HTI" if sdem_cs_p20a_c == 228 + replace migrated_from_country = "HND" if sdem_cs_p20a_c == 229 + replace migrated_from_country = "NIC" if sdem_cs_p20a_c == 234 + replace migrated_from_country = "PAN" if sdem_cs_p20a_c == 235 + replace migrated_from_country = "DOM" if sdem_cs_p20a_c == 239 + replace migrated_from_country = "URY" if sdem_cs_p20a_c == 247 + replace migrated_from_country = "VEN" if sdem_cs_p20a_c == 250 + replace migrated_from_country = "SAU" if sdem_cs_p20a_c == 302 + replace migrated_from_country = "KOR" if sdem_cs_p20a_c == 313 + replace migrated_from_country = "CHN" if sdem_cs_p20a_c == 315 + replace migrated_from_country = "UAE" if sdem_cs_p20a_c == 321 + replace migrated_from_country = "IND" if sdem_cs_p20a_c == 325 + replace migrated_from_country = "JPN" if sdem_cs_p20a_c == 330 + replace migrated_from_country = "LBN" if sdem_cs_p20a_c == 335 + replace migrated_from_country = "DEU" if sdem_cs_p20a_c == 402 + replace migrated_from_country = "ESP" if sdem_cs_p20a_c == 415 + replace migrated_from_country = "FRA" if sdem_cs_p20a_c == 419 + replace migrated_from_country = "IRL" if sdem_cs_p20a_c == 423 + replace migrated_from_country = "ITA" if sdem_cs_p20a_c == 425 + replace migrated_from_country = "NLD" if sdem_cs_p20a_c == 436 + replace migrated_from_country = "POR" if sdem_cs_p20a_c == 438 + replace migrated_from_country = "GBR" if sdem_cs_p20a_c == 439 + replace migrated_from_country = "AUS" if sdem_cs_p20a_c == 501 + + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = sdem_cs_p20c_1 + recode migrated_reason (3 4 = 1) (5 = 2) (1 2 = 3) (6 7 9 = 4) (8 10 11 = 5) + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic = "" if lstatus != 1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/GLD/MEX/MEX_2023_ENOE/MEX_2023_ENOE_V01_M_V01_A_GLD/Programs/MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do b/GLD/MEX/MEX_2023_ENOE/MEX_2023_ENOE_V01_M_V01_A_GLD/Programs/MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do new file mode 100644 index 000000000..f9b7ceb82 --- /dev/null +++ b/GLD/MEX/MEX_2023_ENOE/MEX_2023_ENOE_V01_M_V01_A_GLD/Programs/MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do @@ -0,0 +1,2269 @@ + +/*%%============================================================================================= + 0: GLD Harmonization Preamble +==============================================================================================%%*/ + +/* ----------------------------------------------------------------------- + +<_Program name_> [MEX_2023_ENOE_V01_M_V01_A_GLD_ALL.do] +<_Application_> [STATA] <_Application_> +<_Author(s)_> [The World Bank Jobs Group] +<_Date created_> 2024-10-29 + +------------------------------------------------------------------------- + +<_Country_> Mexico (MEX) +<_Survey Title_> Encuesta Nacional de Ocupación y Empleo] +<_Survey Year_> 2020 +<_Study ID_> Microdata Library ID if present] +<_Data collection from_> 01/2023 +<_Data collection to_> 12/2023 +<_Source of dataset_> INEGI (Mexico NSO) +<_Sample size (HH)_> +<_Sample size (IND)_> +<_Sampling method_> [ El tipo de muestreo utilizado es probabilístico, bietápico, estratificado y por conglomerados.] +<_Geographic coverage_> [Los niveles geograficos usados en la encuesta de México comienzan en estados siguen con ciudades autorrepresentadas y terminan con municipios de las ciudades autorrepresentadas. https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/cobertura.pdf] +<_Currency_> [Pesos] + +----------------------------------------------------------------------- + +<_ICLS Version_> [ICLS-18] +<_ISCED Version_> [ISCED 2011] +<_ISCO Version_> [ISCO 08] +<_OCCUP National_> [SINCO 2019] +<_ISIC Version_> [Rev.4] +<_INDUS National_> [SCIAN 2018] +----------------------------------------------------------------------- +<_Version Control_> + +* + + + +-------------------------------------------------------------------------*/ + + +/*%%============================================================================================= + 1: Setting up of program environment, dataset +==============================================================================================%%*/ + +*----------1.1: Initial commands------------------------------* + +clear +set more off +set mem 800m + +*----------1.2: Set directories------------------------------* + +* Define path sections +local server "Y:/GLD-Harmonization/529026_MG/Countries" +local country "MEX" +local year "2023" +local survey "ENOE" +local vermast "V01" +local veralt "V01" + +* From the definitions, set path chunks +local level_1 "`country'_`year'_`survey'" +local level_2_mast "`level_1'_`vermast'_M" +local level_2_harm "`level_1'_`vermast'_M_`veralt'_A_GLD" + +* From chunks, define path_in, path_output folder +local path_in_stata "`server'/`country'/`level_1'/`level_2_mast'/Data/Stata" +local path_in_other "`server'/`country'/`level_1'/`level_2_mast'/Data/Original" +local path_output "`server'/`country'/`level_1'/`level_2_harm'/Data/Harmonized" + +* Define Output file name +local out_file "`level_2_harm'_ALL.dta" + +*----------1.3: Database assembly------------------------------* + +* All steps necessary to merge datasets (if several) to have all elements needed to produce + +/* +* We want all variables to have the prefix of its source but for the variables +* that we use for merging. We create a local with the ones we exclude +local exclude "cd_a ent con v_sel n_hog h_mud n_ren loc t_loc t_loc_tri t_loc_men fac fac_tri fac_men mun est est_d ageb ur n_ent r_def upm n_pro_viv per tipo mes_cal quarter est_d_tri est_d_men" + +*** COE1 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOE_COE1T`quarter'23.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} +* First rename all +rename * coe1_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe1_`var' + + * If present, rename + if _rc == 0 { + + rename coe1_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe1 +save "`coe1'" + + +*** COE2 *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOE_COE2T`quarter'23.dta" + +} + +* First rename all +rename * coe2_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des coe2_`var' + + * If present, rename + if _rc == 0 { + + rename coe2_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile coe2 +save "`coe2'" + + +*** SDEM *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOE_SDEMT`quarter'23.dta" + cap gen quarter = `quarter' + replace quarter = `quarter' if mi(quarter) + +} + +* First rename all +rename * sdem_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des sdem_`var' + + * If present, rename + if _rc == 0 { + + rename sdem_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile sdem +save "`sdem'" + + +*** HOG *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOE_HOGT`quarter'23.dta" + +} + +* First rename all +rename * hog_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des hog_`var' + + * If present, rename + if _rc == 0 { + + rename hog_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile hog +save "`hog'" + + +*** VIV *** +clear +forvalues quarter = 1/4 { + + quietly: append using "`path_in_stata'/ENOE_VIVT`quarter'23.dta" + +} + +* First rename all +rename * viv_= + +* Add prefix to all but the merging variables +foreach var of local exclude { + + * Check if variable in data + cap des viv_`var' + + * If present, rename + if _rc == 0 { + + rename viv_`var' `var' + + } // end if variable present +} // end loop through variable list + +* Save as tempfile +tempfile viv +save "`viv'" + + +*** Merge *** + +* Start with Individual level data +use "`sdem'", clear + +merge 1:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud n_ren using "`coe1'", assert(match master) nogen +merge 1:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud n_ren using "`coe2'", assert(match master) nogen + +* Add household level, keeping only the households that match the HHs with individual data +* Should not lose any, thus check the number of rows is the same before and after +count +local num_rows = `r(N)' + +merge m:1 cd_a ent con v_sel tipo mes_cal using "`viv'", assert(match using) keep(match) nogen +merge m:1 cd_a ent con v_sel tipo mes_cal n_hog h_mud using "`hog'", assert(match using) keep(match) nogen + +count +assert `r(N)' == `num_rows' + +* Merge in the SINCO to ISCO codes - SINCO 19 USED +tostring coe1_p3, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_1 +drop sinco match + +tostring coe2_p7a, gen(sinco) format("%04.0f") +merge m:1 sinco using "`path_in_stata'/SINCO_19_ISCO_08.dta", keep(master match) nogen +rename isco isco_2 +drop sinco match + +*Merge in SCIAN codes - first and second job +gen scian = coe1_p4a +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_1 +drop scian + +gen scian = coe2_p7c +merge m:1 scian using "`path_in_stata'/SCIAN_18_ISIC_4.dta", keep(master match) nogen +rename isic isic_2 +drop scian + +* Save the file +save "`path_in_stata'/ENOE_2023.dta", replace + +*/ + +* Call the file directly (quicker) +* For the first time, use the above outcommented code +use "`path_in_stata'/ENOE_2023.dta", clear + + +/*%%============================================================================================= + 2: Survey & ID +==============================================================================================%%*/ + +{ + +*<_countrycode_> + gen str4 countrycode="MEX" + label var countrycode "Country code" +* + + +*<_survname_> + gen survname = "ENOE" + label var survname "Survey acronym" +* + + +*<_survey_> + gen survey = "LFS" + label var survey "Survey type" +* + + +*<_icls_v_> + gen icls_v = "ICLS-13" + label var icls_v "ICLS version(s) underlying questionnaire questions" +* + + +*<_isced_version_> + gen isced_version = "" + label var isced_version "Version of ISCED used for educat_isced" +* + + +*<_isco_version_> + gen isco_version = "isco_2008" + label var isco_version "Version of ISCO used" +* + gen isic_version = "isic_4" + label var isic_version "Version of ISIC used +* + + +*<_year_> + gen int year = 2023 + label var year "Year of survey" +* + + +*<_vermast_> + gen vermast = "`vermast'" + label var vermast "Version of master data" +* + + +*<_veralt_> + gen veralt = "`veralt'" + label var veralt "Version of the alt/harmonized data" +* + + +*<_harmonization_> + gen harmonization = "GLD" + label var harmonization "Type of harmonization" +* + + +*<_int_year_> + gen int_year = hog_p_anio + 2000 + label var int_year "Year of the interview" +* + + +*<_int_month_> + gen int_month = hog_p_mes + label de lblint_month 1 "January" 2 "February" 3 "March" 4 "April" 5 "May" 6 "June" 7 "July" 8 "August" 9 "September" 10 "October" 11 "November" 12 "December" + label value int_month lblint_month + label var int_month "Month of the interview" +* + + +*<_hhid_> +/* <_hhid_note> + + For ENOE-N years, we need the additional tipo (standard from now on) and mes_cal as well as + ca variables. According to CONEVAL in their ITPL calcualtions (*) ca is only necessary until + 2nd quarter 2021. We keep it nonetheless for consistency + + (*) - See codes in https://www.coneval.org.mx/Medicion/Paginas/ITLP-IS_pobreza_laboral.aspx + + */ + + tostring (ent v_sel mes_cal n_ren), gen(ent_str v_sel_str mes_cal_str n_ren_str) format("%02.0f") + tostring con, gen(con_str) format("%05.0f") + tostring (n_hog h_mud tipo), gen(n_hog_str h_mud_str tipo_str) format("%01.0f") + + egen hhid=concat(ent_str con_str v_sel_str n_hog_str h_mud_str tipo_str) + label var hhid "Household ID" + assert !missing(hhid) +* + + +*<_pid_> + egen pid = concat(hhid n_ren_str) + label var pid "Individual ID" +* + + +*<_weight_> + +/* <_weight_note> + + Weight is fac_tri: at quarter level, need to annualise. + Do this by obs numbers in each quarter + + */ + + gen help_1 = 1 + egen help_2 = total(help_1) + bys quarter : egen help_3 = total(help_1) + gen help_4 = help_3/help_2 + gen weight = fac_tri*help_4 + drop help_* + label var weight "Household sampling weight" +* + + +*<_weight_m_> + gen weight_m = fac_men + label var weight_m "Survey sampling weight to obtain national estimates for each month" +* + + +*<_weight_q_> + gen weight_q = fac_tri + label var weight_q "Survey sampling weight to obtain national estimates for each quarter" +* + + +*<_psu_> + gen psu = upm + label var psu "Primary sampling units" +* + + +*<_ssu_> + gen ssu = hhid + label var ssu "Secondary sampling units" +* + + +*<_strata_> + * Data has estrato for trimester & month. + * Monthly has missing values, go for quarter + gen strata = est_d_tri + label var strata "Strata" +* + + +*<_wave_> + gen str2 wave = "Q" + string(quarter) + label var wave "Survey wave" +* + + +*<_panel_> +/* <_panel_note> + + Panel = (year - 2005)*4 + alpha + (quarter - 1) + alpha = 5 - n_ent +1 + + *Where: + year: interview year + quarter: survey quarter + alpha: inverse of the visit number + n_ent: visit number + + */ + + gen alpha = 5 - n_ent + 1 + gen panel = (int_year - 2005) * 4 + alpha + (quarter - 1) + + * Place special panel for + label var panel "Panel individual belongs to" +* + + +*<_visit_no_> + gen visit_no = n_ent + label var visit_no "Visit number in panel" +* + + +*<_type_of_interview_> + +/* <_type_of_interview_note> + + Since ENOE-N, there are two kinds of interviews: face to face and by + telephone. The latter can occur more than once in a quarter. Need it + to differentiate. + + */ + gen type_of_interview = tipo + label var type_of_interview "Type of interview (in person or telephone)" + la de lbltype 1 "Face to face" 2 "Telephone" + label values type_of_interview lbltype +* + +} + + +/*%%============================================================================================= + 3: Geography +==============================================================================================%%*/ + +{ + +*<_urban_> + gen byte urban=. + replace urban=1 if inrange(t_loc_tri,1,3) + replace urban=0 if t_loc_tri==4 + label var urban "Location is urban" + la de lblurban 1 "Urban" 0 "Rural" + label values urban lblurban +* + + +*<_subnatid1_> + * State info in variable ent, is a labelled number + decode ent, gen(helper_lbl) + tostring ent, gen(helper_num) + gen subnatid1 = helper_num + " - " + helper_lbl + label var subnatid1 "Subnational ID at First Administrative Level" +* + + +*<_subnatid2_> +*selected main cities from states + gen byte subnatid2 = cd_a + * Unite urban complements + recode subnatid2 82/86=81 + label de lblsubnatid2 1 "1 - Mexico" 2 "2 - Guadalajara" 3 "3 - Monterrey" 4 "4 - Puebla" 5 "5 - Leon" 7 "6 - San Luis Potosi" 8 "7 - Merida" 9 "8 - Chihuahua" 10 " 9 - Tampico" 12 "10 - Veracruz" 13 "11 - Acapulco" 14 "12 - Aguacalientes" 15 "13 - Morelia" 16 "14 - Toluca" 17 "15 - Saltillo" 18 "16 - Villahermosa" 19 "17 - Tuxtla Gutierrez" 21 "18 - Tijuana" 24 "19 - Culiacan" 25 "20 - Hermosillo" 26 "21 - Durango" 27 "22 - Tepic" 28 "23 - Campeche" 29 "24 - Cuernavaca" 31 "25 - Oaxaca" 32 "26 - Zacatecas " 33 "27 - Colima" 36 "28 - Queretaro" 39 "29 - Tlaxcala" 40 "30 - La Paz " 41 "31 - Cancun" 43 "32 - Pachuca" 42 "33 - Ciudad del Carmen" 44 "34 - Mexicali" 46 "35 - Reynosa" 52 "36 Tapachula" 81 "99 - Complemento Urbano Rural", replace + label values subnatid2 lblsubnatid2 + decode subnatid2, gen(help_sub2) + drop subnatid2 + rename help_sub2 subnatid2 + label var subnatid2 "Subnational ID at Second Administrative Level" +* + + +*<_subnatid3_> +*selected towns within selected cities from states + gen byte subnatid3 = loc + label var subnatid3 "Subnational ID at Third Administrative Level" +* + + +*<_subnatidsurvey_> + gen subnatidsurvey = "subnatid2" + label var subnatidsurvey "Administrative level at which survey is representative" +* + + +*<_subnatid1_prev_> +/* <_subnatid1_prev> + + subnatid1_prev is coded as missing unless the classification used for subnatid1 has changed since the previous survey. + + */ + gen subnatid1_prev = . + label var subnatid1_prev "Classification used for subnatid1 from previous survey" +* + + +*<_subnatid2_prev_> + gen subnatid2_prev = . + label var subnatid2_prev "Classification used for subnatid2 from previous survey" +* + + +*<_subnatid3_prev_> + gen subnatid3_prev = . + label var subnatid3_prev "Classification used for subnatid3 from previous survey" +* + + +*<_gaul_adm1_code_> + gen gaul_adm1_code = . + label var gaul_adm1_code "Global Administrative Unit Layers (GAUL) Admin 1 code" +* + + +*<_gaul_adm2_code_> + gen gaul_adm2_code = . + label var gaul_adm2_code "Global Administrative Unit Layers (GAUL) Admin 2 code" +* + + +*<_gaul_adm3_code_> + gen gaul_adm3_code = . + label var gaul_adm3_code "Global Administrative Unit Layers (GAUL) Admin 3 code" +* + +} + +/*%%============================================================================================= + 4: Demography +==============================================================================================%%*/ + +{ + +*<_hsize_> + bysort hhid quarter: gen hsize=_N if sdem_par_c<400 | inrange(sdem_par_c,600,999) + * Domestic workers (codes 600), Guests (700s) and non-defined (999) are + * not counted + label var hsize "Household size" +* + + +*<_age_> + gen age = sdem_eda + replace age = . if sdem_eda == 99 + replace age = . if sdem_eda == 99 + label var age "Individual age" +* + + +*<_male_> + gen male = sdem_sex + recode male 2=0 + label var male "Sex - Ind is male" + la de lblmale 1 "Male" 0 "Female" + label values male lblmale +* + + +*<_relationharm_> + gen relationharm = . + replace relationharm = 1 if sdem_par_c == 101 + replace relationharm = 2 if sdem_par_c == 201 + replace relationharm = 5 if inrange(sdem_par_c, 202, 204) // Other partners, not spouse + replace relationharm = 3 if inrange(sdem_par_c, 301, 304) + replace relationharm = 4 if inrange(sdem_par_c, 401, 402) + replace relationharm = 5 if inrange(sdem_par_c, 403, 424) + replace relationharm = 6 if inrange(sdem_par_c, 501, 999) + + la de lblrelationharm 1 "Head of household" 2 "Spouse" 3 "Children" 4 "Parents" 5 "Other relatives" 6 "Other and non-relatives", replace + label values relationharm lblrelationharm +* + + +*<_relationcs_> + gen relationcs = sdem_par_c + label var relationcs "Relationship to the head of household - Country original" +* + + +*<_marital_> + gen byte marital = sdem_e_con + recode marital 1=3 2=4 3=4 4=5 5=1 6=2 9=. + label var marital "Marital status" + la de lblmarital 1 "Married" 2 "Never Married" 3 "Living together" 4 "Divorced/Separated" 5 "Widowed" + label values marital lblmarital +* + + +*<_eye_dsablty_> + gen eye_dsablty = . + label var eye_dsablty "Disability related to eyesight" +* + + +*<_hear_dsablty_> + gen hear_dsablty = . + label var eye_dsablty "Disability related to hearing" +* + + +*<_walk_dsablty_> + gen walk_dsablty = . + label var eye_dsablty "Disability related to walking or climbing stairs" +* + + +*<_conc_dsord_> + gen conc_dsord = . + label var eye_dsablty "Disability related to concentration or remembering" +* + + +*<_slfcre_dsablty_> + gen slfcre_dsablty = . + label var eye_dsablty "Disability related to selfcare" +* + + +*<_comm_dsablty_> + gen comm_dsablty = . + label var eye_dsablty "Disability related to communicating" +* + +} + + +/*%%============================================================================================= + 5: Migration +==============================================================================================%%*/ + + +{ + +*<_migrated_mod_age_> + gen migrated_mod_age = 1 + label var migrated_mod_age "Migration module application age" +* + + +*<_migrated_ref_time_> + gen migrated_ref_time = 1 + label var migrated_ref_time "Reference time applied to migration questions (in years)" +* + + +*<_migrated_binary_> + gen migrated_binary = 0 + * Migrated if either in different country or state (20a) or a different municipality (20b) + replace migrated_binary = 1 if inrange(sdem_cs_p20a_1,2,4) | sdem_cs_p20b_1 == 2 + label de lblmigrated_binary 0 "No" 1 "Yes", replace + label values migrated_binary lblmigrated_binary + label var migrated_binary "Individual has migrated" +* + + +*<_migrated_years_> + gen migrated_years = . + label var migrated_years "Years since latest migration" +* + + +*<_migrated_from_urban_> + gen migrated_from_urban = . + label de lblmigrated_from_urban 0 "Rural" 1 "Urban" + label values migrated_from_urban lblmigrated_from_urban + label var migrated_from_urban "Migrated from area" +* + + +*<_migrated_from_cat_> + gen migrated_from_cat = . + replace migrated_from_cat = 3 if sdem_cs_p20a_1 == 1 & sdem_cs_p20b_1 == 2 + replace migrated_from_cat = 4 if sdem_cs_p20a_1 == 2 + replace migrated_from_cat = 5 if inrange(sdem_cs_p20a_1,3,4) + replace migrated_from_cat = . if migrated_binary == 1 + label de lblmigrated_from_cat 1 "From same admin3 area" 2 "From same admin2 area" 3 "From same admin1 area" 4 "From other admin1 area" 5 "From other country" + label values migrated_from_cat lblmigrated_from_cat + label var migrated_from_cat "Category of migration area" +* + + +*<_migrated_from_code_> + * We want to code this as subnatid1, use that info to merge it in + gen mig_code_helper = sdem_cs_p20a_c if sdem_cs_p20a_c < 100 & migrated_binary == 1 + preserve + + keep subnatid1 + rename subnatid1 long_name + gen counter = 1 + collapse (rawsum) counter, by(long_name) + drop counter + gen mig_code_helper = substr(long_name,1,2) + destring mig_code_helper, replace + tempfile mig_helper + save "`mig_helper'" + + restore + + merge m:1 mig_code_helper using "`mig_helper'", assert(match master) nogen + + gen migrated_from_code = long_name + drop long_name mig_code_helper + label var migrated_from_code "Code of migration area as subnatid level of migrated_from_cat" +* + + +*<_migrated_from_country_> + gen migrated_from_country = "" + replace migrated_from_country = "AGO" if sdem_cs_p20a_c == 101 + replace migrated_from_country = "GIN" if sdem_cs_p20a_c == 123 + replace migrated_from_country = "ARG" if sdem_cs_p20a_c == 204 + replace migrated_from_country = "BLZ" if sdem_cs_p20a_c == 208 + replace migrated_from_country = "BOL" if sdem_cs_p20a_c == 210 + replace migrated_from_country = "BRA" if sdem_cs_p20a_c == 211 + replace migrated_from_country = "CAN" if sdem_cs_p20a_c == 213 + replace migrated_from_country = "COL" if sdem_cs_p20a_c == 214 + replace migrated_from_country = "CRI" if sdem_cs_p20a_c == 215 + replace migrated_from_country = "CUB" if sdem_cs_p20a_c == 216 + replace migrated_from_country = "CHL" if sdem_cs_p20a_c == 217 + replace migrated_from_country = "ECU" if sdem_cs_p20a_c == 219 + replace migrated_from_country = "SLV" if sdem_cs_p20a_c == 220 + replace migrated_from_country = "USA" if sdem_cs_p20a_c == 221 + replace migrated_from_country = "GTM" if sdem_cs_p20a_c == 225 + replace migrated_from_country = "HTI" if sdem_cs_p20a_c == 228 + replace migrated_from_country = "HND" if sdem_cs_p20a_c == 229 + replace migrated_from_country = "NIC" if sdem_cs_p20a_c == 234 + replace migrated_from_country = "PAN" if sdem_cs_p20a_c == 235 + replace migrated_from_country = "PER" if sdem_cs_p20a_c == 237 + replace migrated_from_country = "PRI" if sdem_cs_p20a_c == 238 + replace migrated_from_country = "DOM" if sdem_cs_p20a_c == 239 + replace migrated_from_country = "SUR" if sdem_cs_p20a_c == 244 + replace migrated_from_country = "URY" if sdem_cs_p20a_c == 247 + replace migrated_from_country = "VEN" if sdem_cs_p20a_c == 250 + replace migrated_from_country = "KOR" if sdem_cs_p20a_c == 313 + replace migrated_from_country = "CHN" if sdem_cs_p20a_c == 315 + replace migrated_from_country = "JPN" if sdem_cs_p20a_c == 330 + replace migrated_from_country = "SGP" if sdem_cs_p20a_c == 346 + replace migrated_from_country = "ESP" if sdem_cs_p20a_c == 415 + replace migrated_from_country = "FIN" if sdem_cs_p20a_c == 418 + replace migrated_from_country = "FRA" if sdem_cs_p20a_c == 419 + replace migrated_from_country = "ITA" if sdem_cs_p20a_c == 425 + replace migrated_from_country = "POL" if sdem_cs_p20a_c == 437 + replace migrated_from_country = "GBR" if sdem_cs_p20a_c == 439 + replace migrated_from_country = "CZE" if sdem_cs_p20a_c == 440 + replace migrated_from_country = "RUS" if sdem_cs_p20a_c == 442 + replace migrated_from_country = "CHE" if sdem_cs_p20a_c == 446 + + label var migrated_from_country "Code of migration country (ISO 3 Letter Code)" +* + + +*<_migrated_reason_> + gen migrated_reason = sdem_cs_p20c_1 + recode migrated_reason (3 4 = 1) (5 = 2) (1 2 = 3) (6 7 9 = 4) (8 10 11 = 5) + label de lblmigrated_reason 1 "Family reasons" 2 "Educational reasons" 3 "Employment" 4 "Forced (political reasons, natural disaster, …)" 5 "Other reasons" + label values migrated_reason lblmigrated_reason + label var migrated_reason "Reason for migrating" +* + +} + + +/*%%============================================================================================= + 6: Education +==============================================================================================%%*/ + + +{ + +*<_ed_mod_age_> + +/* <_ed_mod_age_note> + +Education module is only asked to those XX and older. + + */ + + gen byte ed_mod_age = 5 + label var ed_mod_age "Education module application age" + +* + +*<_school_> + gen byte school = sdem_cs_p17 + recode school (2 = 0) (9 = .) + label var school "Attending school" + la de lblschool 0 "No" 1 "Yes" + label values school lblschool +* + + +*<_literacy_> + gen byte literacy = sdem_cs_p12 + recode literacy (2 = 0) (9 = .) + label var literacy "Individual can read & write" + la de lblliteracy 0 "No" 1 "Yes" + label values literacy lblliteracy +* + + +*<_educy_> + * No Education and Pre-Primary OR Primary with Zero Years + gen byte educy = 0 if (sdem_cs_p13_1 == 0 | sdem_cs_p13_1 == 1) /// + | (sdem_cs_p13_1 == 2 & sdem_cs_p13_2 == 0) + + * Primary School + replace educy=1 if sdem_cs_p13_1==2 & sdem_cs_p13_2==1 + replace educy=2 if sdem_cs_p13_1==2 & sdem_cs_p13_2==2 + replace educy=3 if sdem_cs_p13_1==2 & sdem_cs_p13_2==3 + replace educy=4 if sdem_cs_p13_1==2 & sdem_cs_p13_2==4 + replace educy=5 if sdem_cs_p13_1==2 & sdem_cs_p13_2==5 + replace educy=6 if sdem_cs_p13_1==2 & sdem_cs_p13_2>=6 & sdem_cs_p13_2!=. + + * Carrera Tecnica con antecedente Primaria OR Primaria + replace educy=7 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==1 + replace educy=8 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2==2 + replace educy=9 if ((sdem_cs_p13_1==6 & sdem_cs_p15==1) | sdem_cs_p13_1==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Normal con Antecedente Primaria + replace educy=7 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==1 + replace educy=8 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2==2 + replace educy=9 if (sdem_cs_p13_1==5 & sdem_cs_p15==1) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * Prepa OR Carrera Tecnica con antecedente secundaria + * + años de escolaridad + replace educy=10 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==4 | (sdem_cs_p13_1==6 & sdem_cs_p15==2)) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con Antecedente Secundaria + replace educy=10 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==1 + replace educy=11 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==2 + replace educy=12 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2==3 + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==2) & sdem_cs_p13_2>=4 & sdem_cs_p13_2!=. + + * Profesional without any years + replace educy=12 if ((sdem_cs_p13_1==7 & sdem_cs_p13_2==0)) + + * Profesional con antecedente bachillerato + replace educy=13 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==7 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Carrera Tecnica con Antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==6 & sdem_cs_p15==3) & sdem_cs_p13_2>=3 & sdem_cs_p13_2!=. + + * NORMAL con antecedente Preparatoria + replace educy=13 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==1 + replace educy=14 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==2 + replace educy=15 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==3 + replace educy=16 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2==4 + replace educy=17 if (sdem_cs_p13_1==5 & sdem_cs_p15==3) & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=. + + * Maestria + replace educy=18 if sdem_cs_p13_1==8 & sdem_cs_p13_2==1 + replace educy=19 if sdem_cs_p13_1==8 & sdem_cs_p13_2>=2 & sdem_cs_p13_2!=. + + * Doctorado + replace educy=18 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==1) + replace educy=19 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==2) + replace educy=20 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==3) + replace educy=21 if (sdem_cs_p13_1==9 & sdem_cs_p13_2==4) + replace educy=22 if (sdem_cs_p13_1==9 & sdem_cs_p13_2>=5 & sdem_cs_p13_2!=.) + + * Missing and Zeros + replace educy=0 if (sdem_cs_p13_1==0 | sdem_cs_p13_1==1) |(sdem_cs_p13_1==2 & sdem_cs_p13_2==0) + replace educy=. if (sdem_cs_p13_1==99 | sdem_cs_p13_2==9 | sdem_cs_p15==9) + replace educy=. if age + + +*<_educat7_> + *gen byte educat7 = + gen byte educat7=1 if educy==0 + replace educat7=2 if sdem_cs_p13_1==2 + replace educat7=3 if educy==6 & sdem_cs_p13_1==2 + replace educat7=4 if inrange(sdem_cs_p13_1,3,4) + replace educat7=5 if educy==12 & sdem_cs_p13_1==4 + replace educat7=6 if inrange(sdem_cs_p13_1,5,6) + replace educat7=7 if inrange(sdem_cs_p13_1,7,9) + replace educat7=. if age + + +*<_educat5_> + gen byte educat5 = educat7 + recode educat5 4=3 5=4 6 7=5 + label var educat5 "Level of education 2" + la de lbleducat5 1 "No education" 2 "Primary incomplete" 3 "Primary complete but secondary incomplete" 4 "Secondary complete" 5 "Some tertiary/post-secondary" + label values educat5 lbleducat5 +* + + +*<_educat4_> + gen byte educat4 = educat7 + recode educat4 (2 3 4=2) (5=3) (6 7=4 ) + label var educat4 "Level of education 3" + la de lbleducat4 1 "No education" 2 "Primary" 3 "Secondary" 4 "Post-secondary" + label values educat4 lbleducat4 +* + +*<_educat_orig_> + gen educat_orig = . + label var educat_orig "Original survey education code" + *Note: The ENOE uses the national education classification which needs two variables + *sdem_cs_p13_1 (school level) & sdem_cs_p13_2(years in school) to create one measurement of + *education level as a result there is no unique variable that + *translate to educat_orig. See documentation references for more details. +* + +*<_educat_isced_> + gen educat_isced = . + label var educat_isced "ISCED standardised level of education" +* + + +*----------6.1: Education cleanup------------------------------* + +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) +local ed_var "school literacy educy educat7 educat5 educat4 educat_isced" +foreach v of local ed_var { + replace `v'=. if ( age < ed_mod_age & !missing(age) ) +} + +* + + +} + + + +/*%%============================================================================================= + 7: Training +==============================================================================================%%*/ + + +{ + +*<_vocational_> + gen vocational = . + label de lblvocational 0 "No" 1 "Yes" + label var vocational "Ever received vocational training" +* + +*<_vocational_type_> + gen vocational_type = . + label de lblvocational_type 1 "Inside Enterprise" 2 "External" + label values vocational_type lblvocational_type + label var vocational_type "Type of vocational training" +* + +*<_vocational_length_l_> + gen vocational_length_l = . + label var vocational_length_l "Length of training, lower limit" +* + +*<_vocational_length_u_> + gen vocational_length_u = . + label var vocational_length_u "Length of training, upper limit" +* + +*<_vocational_field_orig_> + gen vocational_field_orig = . + label var vocational_field_orig "Field of training" +* + +*<_vocational_financed_> + gen vocational_financed = . + label de lblvocational_financed 1 "Employer" 2 "Government" 3 "Mixed Employer/Government" 4 "Own funds" 5 "Other" + label var vocational_financed "How training was financed" +* + +} + +/*%%============================================================================================= + 8: Labour +==============================================================================================%%*/ + + +*<_minlaborage_> + gen byte minlaborage = 12 + label var minlaborage "Labor module application age" +* + + +*----------8.1: 7 day reference overall------------------------------* + +{ +*<_lstatus_> + + gen byte lstatus=1 if inlist(coe1_p1,1,2) | coe1_p1a1==1 | coe1_p1a2==2 /// + | coe1_p1b==1 | inrange(coe1_p1c,1,4) | coe1_p1d==1 | coe1_p1e==1 + replace lstatus=2 if (coe1_p2_1==1 | coe1_p2_2==2 | coe1_p2_3==3) + replace lstatus=3 if coe1_p2_4==4 + replace lstatus=. if age < minlaborage & age != . + label var lstatus "Labor status" + la de lbllstatus 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus lbllstatus +* + + +*<_potential_lf_> + gen byte potential_lf = . + replace potential_lf=1 if lstatus==3 + replace potential_lf = . if age < minlaborage & age != . + replace potential_lf = 0 if lstatus != 3 + label var potential_lf "Potential labour force status" + la de lblpotential_lf 0 "No" 1 "Yes" + label values potential_lf lblpotential_lf +* + + +*<_underemployment_> + gen byte underemployment = . + label var underemployment "Underemployment status" + la de lblunderemployment 0 "No" 1 "Yes" + label values underemployment lblunderemployment +* + + +*<_nlfreason_> + gen byte nlfreason = coe1_p2e + *Set the "don't know (9)" responses to missing + recode nlfreason 3=1 2=3 4=2 5=4 1=5 6=5 9=. + replace nlfreason=. if lstatus!=3 + label var nlfreason "Reason not in the labor force" + la de lblnlfreason 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disabled" 5 "Other" + label values nlfreason lblnlfreason +* + + +*<_unempldur_l_> + gen byte unempldur_l=. + label var unempldur_l "Unemployment duration (months) lower bracket" + label values unempldur_l lblune +* + + +*<_unempldur_u_> + gen byte unempldur_u=. + label var unempldur_u "Unemployment duration (months) upper bracket" + label values unempldur_u lblune_2 +* + +} + + +*----------8.2: 7 day reference main job------------------------------* + + +{ + +*<_empstat_> + gen empstat = . + + * Employee if doesn't work on their own (p3b is 2 or missing), gets pay + replace empstat = 1 if inlist(coe1_p3b,.,2) & coe1_p3h == 1 + + * Non paid employee if as above, yet no pay + replace empstat = 2 if inlist(coe1_p3b,.,2) & inrange(coe1_p3h,2,3) + + * Employer works own account, has employees they pay (3G1_1 = 1) + replace empstat = 3 if coe1_p3b == 1 & coe1_p3g1_1 == 1 + + * Self employed works own account, has no paid employees + replace empstat = 4 if coe1_p3b == 1 & coe1_p3g1_1 != 1 + + label var empstat "Employment status during past week primary job 7 day recall" + la de lblempstat 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat lblempstat +* + + +*<_ocusec_> + gen byte ocusec = . + + * Note that any "agropecuario" (agriculture and fishing) skips the questions + + * If activity is in private sector (4B = 4) o undetermined (4B = 5) + * yet independent or private (4C = 1|2) + replace ocusec = 2 if (coe1_p4b == 4) | /// + (coe1_p4b == 5 & inrange(coe1_p4c, 1, 2)) + + * If education/hospital (4B = 2) or public or non-profit (4B = 3), then 4D decides + * Public: All options administered by government (4D1 == 1) + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 1 & inrange(coe1_p4d2,1,7) + * Public Among not administered by government (4D1 == 2, public education, independent orgs (Election Commission), International Orgs + replace ocusec = 1 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,2,3,6) + + * Private: Not administered by gov, not the above + replace ocusec = 2 if (inrange(coe1_p4b, 2, 3)) & coe1_p4d1 == 2 & inlist(coe1_p4d2,1,4,5,7) + + * In agriculture and not paid employee + replace ocusec = 2 if coe1_p4b == 1 & inrange(empstat,2,4) + + * A lot of the people still undefined are classified in industry as house staff + * industry_orig 8140. This we code as private sector + replace ocusec = 2 if mi(ocusec) & coe1_p4a == 8140 + + replace ocusec=. if lstatus!=1 + label var ocusec "Sector of activity primary job 7 day recall" + la de lblocusec 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec lblocusec +* + + +*<_industry_orig_> + gen industry_orig = coe1_p4a + replace industry_orig = . if age < minlaborage & age != . + replace industry_orig=. if lstatus!=1 + label var industry_orig "Original survey industry code, main job 7 day recall" +* + + +*<_industrycat_isic_> + gen industrycat_isic= isic_1 + replace industrycat_isic="" if lstatus!=1 + label var industrycat_isic "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_> + destring isic_1, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10 = . + replace industrycat10 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10 = 1 if inlist(isic_1, "A") & mi(industrycat10) + replace industrycat10 = 2 if inlist(isic_1, "B") & mi(industrycat10) + replace industrycat10 = 3 if inlist(isic_1, "C") & mi(industrycat10) + replace industrycat10 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10) + replace industrycat10 = 5 if inlist(isic_1, "F") & mi(industrycat10) + replace industrycat10 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10) + replace industrycat10 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10) + replace industrycat10 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10) + replace industrycat10 = 9 if inlist(isic_1, "O") & mi(industrycat10) + replace industrycat10 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10) + + replace industrycat10 = . if lstatus!=1 + drop ind_helper + label var industrycat10 "1 digit industry classification, primary job 7 day recall" + la de lblindustrycat10 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10 lblindustrycat10 +* + + +*<_industrycat4_> + gen byte industrycat4 = industrycat10 + recode industrycat4 (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4 "1 digit industry classification (Broad Economic Activities), primary job 7 day recall" + la de lblindustrycat4 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4 lblindustrycat4 + replace industrycat4=. if lstatus!=1 +* + + +*<_occup_orig_> + gen occup_orig = coe1_p3 + label var occup_orig "Original occupation record primary job 7 day recall" +* + + +*<_occup_> + destring isco_1, gen(occup_helper) + gen byte occup = floor(occup_helper/1000) + replace occup = 10 if occup == 0 + drop occup_helper + label var occup "1 digit occupational classification, primary job 7 day recall" + la de lbloccup 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup lbloccup + replace occup = . if lstatus!=1 +* + + +*<_occup_isco_> + gen occup_isco = isco_1 + replace occup_isco = "" if lstatus!=1 + label var occup_isco "ISCO code of primary job 7 day recall" +* + + +*<_occup_skill_> + gen occup_skill = . + replace occup_skill = 1 if occup == 9 + replace occup_skill = 2 if inrange(occup, 4, 8) + replace occup_skill = 3 if inrange(occup, 1, 3) + replace occup_skill = . if lstatus != 1 + la de lblskill 1 "Low skill" 2 "Medium skill" 3 "High skill" + label values occup_skill lbloccupskill + label var occup_skill "Skill based on ISCO standard primary job 7 day recall" +* + + +*<_wage_no_compen_> + gen double wage_no_compen =. + replace wage_no_compen = coe2_p6b2 if lstatus==1 + + * There are also people who estimate their salary. We us the people in those + * categories to estimate that of others. Note that there are two salary zones + * so we need to run this twice + + foreach i of numlist 1/2 { + + preserve + + * First store minimum salaries + summ sdem_salario if sdem_zona == `i' + local min_sal_`i' `r(mean)' + + gen salary_cat = . + replace salary_cat = 1 if wage_no_compen < `min_sal_`i'' + replace salary_cat = 2 if wage_no_compen == `min_sal_`i'' + replace salary_cat = 3 if wage_no_compen > `min_sal_`i'' & wage_no_compen <= `min_sal_`i''*2 + replace salary_cat = 4 if wage_no_compen > `min_sal_`i''*2 & wage_no_compen <= `min_sal_`i''*3 + replace salary_cat = 5 if wage_no_compen > `min_sal_`i''*3 & wage_no_compen <= `min_sal_`i''*5 + replace salary_cat = 6 if wage_no_compen > `min_sal_`i''*5 & wage_no_compen <= `min_sal_`i''*10 + replace salary_cat = 7 if wage_no_compen > `min_sal_`i''*10 & !mi(wage_no_compen) + + * Collapse, prep data + collapse (p50) wage_no_compen, by(salary_cat) + rename wage_no_compen salary_estimate + rename salary_cat coe2_p6c + gen sdem_zona = `i' + + * If first round, save; if second, append and save + if `i' == 1 { + + tempfile wage_helper_1 + save "`wage_helper_1'" + + } + + else { + + append using "`wage_helper_1'" + tempfile wage_helper + save "`wage_helper'" + + } + + + restore + + } + + merge m:1 coe2_p6c sdem_zona using "`wage_helper'", assert(match master) nogen + + * Now assign salary by category estimates with the medians of those in that category + replace wage_no_compen = salary_estimate if !mi(salary_estimate) & mi(wage_no_compen) + + * Assign minimum salary for those (very few, not in categories) who claim to get exactly + * the minimum salary (coe2_p6c == 2) + foreach i of numlist 1/2 { + + summ sdem_salario if sdem_zona == `i' + local min_sal `r(mean)' + replace wage_no_compen = `min_sal' if mi(wage_no_compen) & sdem_zona == `i' & coe2_p6c == 2 + + } + + replace wage_no_compen = 0 if empstat==2 + replace wage_no_compen = . if lstatus!=1 + label var wage_no_compen "Last wage payment primary job 7 day recall" +* + + +*<_unitwage_> + * Questionnaire has different options, but salary is already made to + * fit monthly + gen byte unitwage = 5 + label var unitwage "Last wages' time unit primary job 7 day recall" + la de lblunitwage 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + replace unitwage = . if wage_no_compen==. + label values unitwage lblunitwage +* + + +*<_whours_> + * Var differs if extended or basic questionnaire + * Generate unified vars - values differ if extended or basic survey + gen hlp_whours_usual_bin = . + replace hlp_whours_usual_bin = coe1_p5c if inrange(quarter, 2, 4) + replace hlp_whours_usual_bin = coe1_p5d if quarter == 1 + + gen hlp_whours_lw = . + replace hlp_whours_lw = coe1_p5b_thrs if inrange(quarter, 2, 4) + replace hlp_whours_lw = coe1_p5c_thrs if quarter == 1 + + gen hlp_whours_nw = . + replace hlp_whours_nw = coe1_p5d_thrs if inrange(quarter, 2, 4) + replace hlp_whours_nw = coe1_p5e_thrs if quarter == 1 + + * Generate actual var + gen whours = hlp_whours_lw + *replace if not the usual hours in the week + replace whours = hlp_whours_nw if hlp_whours_usual_bin == 2 + replace whours = . if lstatus != 1 + replace whours = . if inlist(whours, 0, 999) + label var whours "Hours of work in last week primary job 7 day recall" + drop hlp_whours_* +* + + +*<_wmonths_> +* Var changes if extended or basic questionnaire, unify +foreach num of numlist 1/15 99 { + + gen hlp_wmonths_`num' = . + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5f`num') & inrange(quarter, 2, 4) + replace hlp_wmonths_`num' = 1 if !mi(coe1_p5g`num') & quarter == 1 + +} + + egen wmonths = rowtotal(hlp_wmonths_1 - hlp_wmonths_12), missing + replace wmonths = 12 if hlp_wmonths_14 == 1 + replace wmonths = . if hlp_wmonths_13 == 1 | hlp_wmonths_15 == 1 | hlp_wmonths_99 == 1 + replace wmonths = . if lstatus!=1 + label var wmonths "Months of work in past 12 months primary job 7 day recall" + drop hlp_wmonths_* +* + + +*<_wage_total_> +/* <_wage_total> + + Use gross wages when available and net wages only when gross wages are not available. + This is done to make it easy to compare earnings in formal and informal sectors. + + */ + gen double wage_total=. + replace wage_total = (wage_no_compen)*wmonths + replace wage_total = . if lstatus != 1 + label var wage_total "Annualized total wage primary job 7 day recall" +* + + +*<_contract_> + * Contract is 3J in extended, 3I in basic questionnaire + gen byte contract = . + replace contract = coe1_p3i if inrange(quarter,2,4) + replace contract = coe1_p3j if quarter == 1 + recode contract (2 = 0) (9 = .) + replace contract=. if lstatus!=1 + label var contract "Employment has contract primary job 7 day recall" + la de lblcontract 0 "Without contract" 1 "With contract" + label values contract lblcontract +* + + + +*<_healthins_> + gen byte healthins = . + label var healthins "Employment has health insurance primary job 7 day recall" + la de lblhealthins 0 "Without health insurance" 1 "With health insurance" + label values healthins lblhealthins +* + + +*<_socialsec_> + gen byte socialsec = . + label var socialsec "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec 1 "With social security" 0 "Without social secturity" + label values socialsec lblsocialsec +* + + +*<_union_> + * Only in extended questionnaire + gen byte union = coe1_p3i if quarter == 1 + recode union (2 = 0) (9 = .) + label var union "Union membership at primary job 7 day recall" + la de lblunion 0 "Not union member" 1 "Union member" + label values union lblunion +* + + +*<_firmsize_l_> + + * Firmsize for employees is 3Q in extended questionnaire, 3L in basic + gen helper_fs = . + replace helper_fs = coe1_p3l if inrange(quarter,2,4) + replace helper_fs = coe1_p3q if quarter == 1 + + gen byte firmsize_l = . + replace firmsize_l = 1 if helper_fs == 1 + replace firmsize_l = 2 if helper_fs == 2 + replace firmsize_l = 6 if helper_fs == 3 + replace firmsize_l = 11 if helper_fs == 4 + replace firmsize_l = 16 if helper_fs == 5 + replace firmsize_l = 21 if helper_fs == 6 + replace firmsize_l = 31 if helper_fs == 7 + replace firmsize_l = 51 if helper_fs == 8 + replace firmsize_l = 101 if helper_fs == 9 + replace firmsize_l = 251 if helper_fs == 10 + replace firmsize_l = 501 if helper_fs == 11 + + * Add self-employed + replace firmsize_l = 1 if empstat == 4 + + * Add employer + replace firmsize_l = 2 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_l = 6 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_l = 11 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_l = 16 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_l = 21 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_l = 31 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_l = 51 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_l = 101 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_l = 251 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_l = 501 if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_l=. if lstatus!=1 + + label var firmsize_l "Firm size (lower bracket) primary job 7 day recall" +* + + +*<_firmsize_u_> + gen byte firmsize_u = . + replace firmsize_u = 1 if helper_fs == 1 + replace firmsize_u = 5 if helper_fs == 2 + replace firmsize_u = 10 if helper_fs == 3 + replace firmsize_u = 15 if helper_fs == 4 + replace firmsize_u = 20 if helper_fs == 5 + replace firmsize_u = 30 if helper_fs == 6 + replace firmsize_u = 50 if helper_fs == 7 + replace firmsize_u = 100 if helper_fs == 8 + replace firmsize_u = 250 if helper_fs == 9 + replace firmsize_u = 500 if helper_fs ==10 + replace firmsize_u = . if helper_fs ==11 + + * Add self-employed + replace firmsize_u = 1 if empstat == 4 + + * Add employer + replace firmsize_u = 5 if inrange(coe1_p3g_tot, 1, 4) + replace firmsize_u = 10 if inrange(coe1_p3g_tot, 5, 9) + replace firmsize_u = 15 if inrange(coe1_p3g_tot, 10, 14) + replace firmsize_u = 20 if inrange(coe1_p3g_tot, 15, 19) + replace firmsize_u = 30 if inrange(coe1_p3g_tot, 20, 29) + replace firmsize_u = 50 if inrange(coe1_p3g_tot, 30, 49) + replace firmsize_u = 100 if inrange(coe1_p3g_tot, 50, 99) + replace firmsize_u = 250 if inrange(coe1_p3g_tot, 100, 249) + replace firmsize_u = 500 if inrange(coe1_p3g_tot, 250, 499) + replace firmsize_u = . if inrange(coe1_p3g_tot, 500, 999999) + + replace firmsize_u=. if lstatus!=1 + label var firmsize_u "Firm size (upper bracket) primary job 7 day recall" +* + +} + + +*----------8.3: 7 day reference secondary job------------------------------* +* Since labels are the same as main job, values are labelled using main job labels + + +{ +*<_empstat_2_> + gen byte empstat_2 = coe2_p7 + recode empstat_2 (4 5 = 1) (6 = 2) (1 2 3 = 4) (7 9 = .) + replace empstat_2 = . if lstatus!=1 + label var empstat_2 "Employment status during past week secondary job 7 day recall" + label values empstat_2 lblempstat +* + + +*<_ocusec_2_> + gen byte ocusec_2 = . + label var ocusec_2 "Sector of activity secondary job 7 day recall" + label values ocusec_2 lblocusec +* + + +*<_industry_orig_2_> + gen industry_orig_2 = coe2_p7c + replace industry_orig_2 = . if mi(empstat_2) + label var industry_orig_2 "Original survey industry code, secondary job 7 day recall" +* + + +*<_industrycat_isic_2_> + gen industrycat_isic_2 = isic_2 + replace industrycat_isic_2 = "" if mi(empstat_2) + label var industrycat_isic_2 "ISIC code of primary job 7 day recall" +* + + +*<_industrycat10_2_> + destring isic_2, gen(ind_helper) force + replace ind_helper = floor(ind_helper/100) + + * Use IND Helper to create categories + gen industrycat10_2 = . + replace industrycat10_2 = 1 if inrange(ind_helper, 1, 3) + replace industrycat10_2 = 2 if inrange(ind_helper, 5, 9) + replace industrycat10_2 = 3 if inrange(ind_helper, 10, 33) + replace industrycat10_2 = 4 if inrange(ind_helper, 35, 39) + replace industrycat10_2 = 5 if inrange(ind_helper, 41, 43) + replace industrycat10_2 = 6 if inrange(ind_helper, 45, 47) | inrange(ind_helper, 55, 56) + replace industrycat10_2 = 7 if inrange(ind_helper, 49, 53) | inrange(ind_helper, 58, 63) + replace industrycat10_2 = 8 if inrange(ind_helper, 64, 82) + replace industrycat10_2 = 9 if inrange(ind_helper, 84, 84) + replace industrycat10_2 = 10 if inrange(ind_helper, 85, 99) + + * Add in cases with letters + replace industrycat10_2 = 1 if inlist(isic_1, "A") & mi(industrycat10_2) + replace industrycat10_2 = 2 if inlist(isic_1, "B") & mi(industrycat10_2) + replace industrycat10_2 = 3 if inlist(isic_1, "C") & mi(industrycat10_2) + replace industrycat10_2 = 4 if inlist(isic_1, "D", "E") & mi(industrycat10_2) + replace industrycat10_2 = 5 if inlist(isic_1, "F") & mi(industrycat10_2) + replace industrycat10_2 = 6 if inlist(isic_1, "G", "I") & mi(industrycat10_2) + replace industrycat10_2 = 7 if inlist(isic_1, "H", "J") & mi(industrycat10_2) + replace industrycat10_2 = 8 if inlist(isic_1, "K", "L", "M", "N") & mi(industrycat10_2) + replace industrycat10_2 = 9 if inlist(isic_1, "O") & mi(industrycat10_2) + replace industrycat10_2 = 10 if inlist(isic_1, "P", "Q", "R", "S", "T", "U") & mi(industrycat10_2) + + replace industrycat10_2 = . if mi(empstat_2) + drop ind_helper + + label values industrycat10_2 lblindustrycat10 +* + + +*<_industrycat4_2_> + gen byte industrycat4_2 = industrycat10_2 + recode industrycat4_2 (1 = 1) (2 3 4 5 = 2) (6 7 8 9 = 3) (10 = 4) + label var industrycat4_2 "1 digit industry classification (Broad Economic Activities), secondary job 7 day recall" + label values industrycat4_2 lblindustrycat4 +* + + +*<_occup_orig_2_> + gen occup_orig_2 = coe2_p7a + label var occup_orig_2 "Original occupation record secondary job 7 day recall" +* + + +*<_occup_2_> + destring isco_2, gen(occup_helper_2) + gen byte occup_2 = floor(occup_helper_2/1000) + replace occup_2 = 10 if occup_2 == 0 + drop occup_helper_2 + label var occup_2 "1 digit occupational classification secondary job 7 day recall" + label values occup_2 lbloccup +* + + +*<_occup_isco_2_> + gen occup_isco_2 = isco_2 + replace occup_isco_2 = "" if mi(empstat_2) + label var occup_isco_2 "ISCO code of secondary job 7 day recall" +* + + +*<_occup_skill_2_> + gen occup_skill_2 = . + replace occup_skill_2 = 1 if occup_2 == 9 + replace occup_skill_2 = 2 if inrange(occup_2, 4, 8) + replace occup_skill_2 = 3 if inrange(occup_2, 1, 3) + replace occup_skill_2 = . if mi(empstat_2) + label var occup_skill_2 "Skill based on ISCO standard secondary job 7 day recall" + label values occup_skill_2 lbloccupskill +* + + +*<_wage_no_compen_2_> + gen double wage_no_compen_2 = . + label var wage_no_compen_2 "Last wage payment secondary job 7 day recall" +* + + +*<_unitwage_2_> + gen byte unitwage_2 = . + label var unitwage_2 "Last wages' time unit secondary job 7 day recall" + label values unitwage_2 lblunitwage +* + + +*<_whours_2_> + gen whours_2 = . + label var whours_2 "Hours of work in last week secondary job 7 day recall" +* + + +*<_wmonths_2_> + gen wmonths_2 = . + label var wmonths_2 "Months of work in past 12 months secondary job 7 day recall" +* + + +*<_wage_total_2_> + gen wage_total_2 = . + label var wage_total_2 "Annualized total wage secondary job 7 day recall" +* + + +*<_firmsize_l_2_> +/* <_firmsize_l_2_note> + + Firm size of second job only available in first quarter (expanded + questionnaire) and not for employers + + */ + gen byte firmsize_l_2 = . + replace firmsize_l_2=1 if coe2_p7e==01 + replace firmsize_l_2=2 if coe2_p7e==02 + replace firmsize_l_2=6 if coe2_p7e==03 + replace firmsize_l_2=11 if coe2_p7e==04 + replace firmsize_l_2=16 if coe2_p7e==05 + replace firmsize_l_2=21 if coe2_p7e==06 + replace firmsize_l_2=31 if coe2_p7e==07 + replace firmsize_l_2=51 if coe2_p7e==08 + replace firmsize_l_2 = 101 if coe2_p7e==09 + replace firmsize_l_2 = 251 if coe2_p7e==10 + replace firmsize_l_2 = 501 if coe2_p7e==11 + replace firmsize_l_2 = . if mi(empstat_2) + label var firmsize_l_2 "Firm size (lower bracket) secondary job 7 day recall" +* + + +*<_firmsize_u_2_> + gen byte firmsize_u_2 = . + replace firmsize_u_2=1 if coe2_p7e==01 + replace firmsize_u_2=5 if coe2_p7e==02 + replace firmsize_u_2=10 if coe2_p7e==03 + replace firmsize_u_2=15 if coe2_p7e==04 + replace firmsize_u_2=20 if coe2_p7e==05 + replace firmsize_u_2=30 if coe2_p7e==06 + replace firmsize_u_2=50 if coe2_p7e==07 + replace firmsize_u_2=100 if coe2_p7e==08 + replace firmsize_u_2 = 250 if coe2_p7e==09 + replace firmsize_u_2 = 500 if coe2_p7e==10 + replace firmsize_u_2 = . if coe2_p7e==11 + replace firmsize_u_2 = . if mi(empstat_2) + label var firmsize_u_2 "Firm size (upper bracket) secondary job 7 day recall" +* + +} + +*----------8.4: 7 day reference additional jobs------------------------------* + +*<_t_hours_others_> + gen t_hours_others = . + label var t_hours_others "Annualized hours worked in all but primary and secondary jobs 7 day recall" +* + + +*<_t_wage_nocompen_others_> + gen t_wage_nocompen_others = . + label var t_wage_nocompen_others "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_others_> + gen t_wage_others = . + label var t_wage_others "Annualized wage in all but primary and secondary jobs (12-mon ref period)" +* + + +*----------8.5: 7 day reference total summary------------------------------* + + +*<_t_hours_total_> +/* approximate hours worked in a year 48 ILO standard */ + gen t_hours_total =(whours*4)*wmonths + label var t_hours_total "Annualized hours worked in all jobs 7 day recall" +* + + +*<_t_wage_nocompen_total_> + gen t_wage_nocompen_total = wage_total + label var t_wage_nocompen_total "Annualized wage in all jobs excl. bonuses, etc. 7 day recall" +* + + +*<_t_wage_total_> + gen t_wage_total = t_wage_nocompen_total + label var t_wage_total "Annualized total wage for all jobs 7 day recall" +* + + +*----------8.6: 12 month reference overall------------------------------* + +{ + +*<_lstatus_year_> + gen byte lstatus_year = . + replace lstatus_year=. if age < minlaborage & age != . + label var lstatus_year "Labor status during last year" + la de lbllstatus_year 1 "Employed" 2 "Unemployed" 3 "Non-LF" + label values lstatus_year lbllstatus_year +* + +*<_potential_lf_year_> + gen byte potential_lf_year = . + replace potential_lf_year=. if age < minlaborage & age != . + replace potential_lf_year = . if lstatus_year != 3 + label var potential_lf_year "Potential labour force status" + la de lblpotential_lf_year 0 "No" 1 "Yes" + label values potential_lf_year lblpotential_lf_year +* + + +*<_underemployment_year_> + gen byte underemployment_year = . + replace underemployment_year = . if age < minlaborage & age != . + replace underemployment_year = . if lstatus_year == 1 + label var underemployment_year "Underemployment status" + la de lblunderemployment_year 0 "No" 1 "Yes" + label values underemployment_year lblunderemployment_year +* + + +*<_nlfreason_year_> + gen byte nlfreason_year=. + label var nlfreason_year "Reason not in the labor force" + la de lblnlfreason_year 1 "Student" 2 "Housekeeper" 3 "Retired" 4 "Disable" 5 "Other" + label values nlfreason_year lblnlfreason_year +* + + +*<_unempldur_l_year_> + gen byte unempldur_l_year=. + label var unempldur_l_year "Unemployment duration (months) lower bracket" +* + + +*<_unempldur_u_year_> + gen byte unempldur_u_year=. + label var unempldur_u_year "Unemployment duration (months) upper bracket" +* + +} + +*----------8.7: 12 month reference main job------------------------------* + +{ + +*<_empstat_year_> + gen byte empstat_year = . + label var empstat_year "Employment status during past week primary job 12 month recall" + la de lblempstat_year 1 "Paid employee" 2 "Non-paid employee" 3 "Employer" 4 "Self-employed" 5 "Other, workers not classifiable by status" + label values empstat_year lblempstat_year +* + +*<_ocusec_year_> + gen byte ocusec_year = . + label var ocusec_year "Sector of activity primary job 12 day recall" + la de lblocusec_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_year lblocusec_year +* + +*<_industry_orig_year_> + gen industry_orig_year = . + label var industry_orig_year "Original industry record main job 12 month recall" +* + + +*<_industrycat_isic_year_> + gen industrycat_isic_year = . + label var industrycat_isic_year "ISIC code of primary job 12 month recall" +* + +*<_industrycat10_year_> + gen byte industrycat10_year = . + label var industrycat10_year "1 digit industry classification, primary job 12 month recall" + la de lblindustrycat10_year 1 "Agriculture" 2 "Mining" 3 "Manufacturing" 4 "Public utilities" 5 "Construction" 6 "Commerce" 7 "Transport and Comnunications" 8 "Financial and Business Services" 9 "Public Administration" 10 "Other Services, Unspecified" + label values industrycat10_year lblindustrycat10_year +* + + +*<_industrycat4_year_> + gen byte industrycat4_year=industrycat10_year + recode industrycat4_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_year "1 digit industry classification (Broad Economic Activities), primary job 12 month recall" + la de lblindustrycat4_year 1 "Agriculture" 2 "Industry" 3 "Services" 4 "Other" + label values industrycat4_year lblindustrycat4_year +* + + +*<_occup_orig_year_> + gen occup_orig_year = . + label var occup_orig_year "Original occupation record primary job 12 month recall" +* + + +*<_occup_isco_year_> + gen occup_isco_year = . + label var occup_isco_year "ISCO code of primary job 12 month recall" +* + + +*<_occup_skill_year_> + gen occup_skill_year = . + label var occup_skill_year "Skill based on ISCO standard primary job 12 month recall" +* + + +*<_occup_year_> + gen byte occup_year = . + label var occup_year "1 digit occupational classification, primary job 12 month recall" + la de lbloccup_year 1 "Managers" 2 "Professionals" 3 "Technicians" 4 "Clerks" 5 "Service and market sales workers" 6 "Skilled agricultural" 7 "Craft workers" 8 "Machine operators" 9 "Elementary occupations" 10 "Armed forces" 99 "Others" + label values occup_year lbloccup_year +* + + +*<_wage_no_compen_year_> + gen double wage_no_compen_year = . + label var wage_no_compen_year "Last wage payment primary job 12 month recall" +* + + +*<_unitwage_year_> + gen byte unitwage_year = . + label var unitwage_year "Last wages' time unit primary job 12 month recall" + la de lblunitwage_year 1 "Daily" 2 "Weekly" 3 "Every two weeks" 4 "Bimonthly" 5 "Monthly" 6 "Trimester" 7 "Biannual" 8 "Annually" 9 "Hourly" 10 "Other" + label values unitwage_year lblunitwage_year +* + + +*<_whours_year_> + gen whours_year = . + label var whours_year "Hours of work in last week primary job 12 month recall" +* + + +*<_wmonths_year_> + gen wmonths_year = . + label var wmonths_year "Months of work in past 12 months primary job 12 month recall" +* + + +*<_wage_total_year_> + gen wage_total_year = wage_total + label var wage_total_year "Annualized total wage primary job 12 month recall" +* + + +*<_contract_year_> + gen byte contract_year = . + label var contract_year "Employment has contract primary job 12 month recall" + la de lblcontract_year 0 "Without contract" 1 "With contract" + label values contract_year lblcontract_year +* + + +*<_healthins_year_> + gen byte healthins_year = . + label var healthins_year "Employment has health insurance primary job 12 month recall" + la de lblhealthins_year 0 "Without health insurance" 1 "With health insurance" + label values healthins_year lblhealthins_year +* + + +*<_socialsec_year_> + gen byte socialsec_year = . + label var socialsec_year "Employment has social security insurance primary job 7 day recall" + la de lblsocialsec_year 1 "With social security" 0 "Without social secturity" + label values socialsec_year lblsocialsec_year +* + + +*<_union_year_> + gen byte union_year = . + label var union_year "Union membership at primary job 12 month recall" + la de lblunion_year 0 "Not union member" 1 "Union member" + label values union_year lblunion_year +* + + +*<_firmsize_l_year_> + gen byte firmsize_l_year = . + label var firmsize_l_year "Firm size (lower bracket) primary job 12 month recall" +* + + +*<_firmsize_u_year_> + gen byte firmsize_u_year = . + label var firmsize_u_year "Firm size (upper bracket) primary job 12 month recall" +* + +} + + +*----------8.8: 12 month reference secondary job------------------------------* + +{ + +*<_empstat_2_year_> + gen byte empstat_2_year = . + label var empstat_2_year "Employment status during past week secondary job 12 month recall" + label values empstat_2_year lblempstat_year +* + + +*<_ocusec_2_year_> + gen byte ocusec_2_year = . + label var ocusec_2_year "Sector of activity secondary job 12 day recall" + la de lblocusec_2_year 1 "Public Sector, Central Government, Army" 2 "Private, NGO" 3 "State owned" 4 "Public or State-owned, but cannot distinguish" + label values ocusec_2_year lblocusec_2_year +* + + + +*<_industry_orig_2_year_> + gen industry_orig_2_year = . + label var industry_orig_2_year "Original survey industry code, secondary job 12 month recall" +* + + + +*<_industrycat_isic_2_year_> + gen industrycat_isic_2_year = . + label var industrycat_isic_2_year "ISIC code of secondary job 12 month recall" +* + + +*<_industrycat10_2_year_> + gen byte industrycat10_2_year = . + label var industrycat10_2_year "1 digit industry classification, secondary job 12 month recall" + label values industrycat10_2_year lblindustrycat10_year +* + + +*<_industrycat4_2_year_> + gen byte industrycat4_2_year=industrycat10_2_year + recode industrycat4_2_year (1=1)(2 3 4 5 =2)(6 7 8 9=3)(10=4) + label var industrycat4_2_year "1 digit industry classification (Broad Economic Activities), secondary job 12 month recall" + label values industrycat4_2_year lblindustrycat4_year +* + + +*<_occup_orig_2_year_> + gen occup_orig_2_year = . + label var occup_orig_2_year "Original occupation record secondary job 12 month recall" +* + + +*<_occup_isco_2_year_> + gen occup_isco_2_year = . + label var occup_isco_2_year "ISCO code of secondary job 12 month recall" +* + + +*<_occup_skill_2_year_> + gen occup_skill_2_year = . + label var occup_skill_2_year "Skill based on ISCO standard secondary job 12 month recall" +* + + +*<_occup_2_year_> + gen byte occup_2_year = . + label var occup_2_year "1 digit occupational classification, secondary job 12 month recall" + label values occup_2_year lbloccup_year +* + + +*<_wage_no_compen_2_year_> + gen double wage_no_compen_2_year = . + label var wage_no_compen_2_year "Last wage payment secondary job 12 month recall" +* + + +*<_unitwage_2_year_> + gen byte unitwage_2_year = . + label var unitwage_2_year "Last wages' time unit secondary job 12 month recall" + label values unitwage_2_year lblunitwage_year +* + + +*<_whours_2_year_> + gen whours_2_year = . + label var whours_2_year "Hours of work in last week secondary job 12 month recall" +* + + +*<_wmonths_2_year_> + gen wmonths_2_year = . + label var wmonths_2_year "Months of work in past 12 months secondary job 12 month recall" +* + + +*<_wage_total_2_year_> + gen wage_total_2_year = . + label var wage_total_2_year "Annualized total wage secondary job 12 month recall" +* + +*<_firmsize_l_2_year_> + gen byte firmsize_l_2_year = . + label var firmsize_l_2_year "Firm size (lower bracket) secondary job 12 month recall" +* + + +*<_firmsize_u_2_year_> + gen byte firmsize_u_2_year = . + label var firmsize_u_2_year "Firm size (upper bracket) secondary job 12 month recall" +* + +} + + +*----------8.9: 12 month reference additional jobs------------------------------* + + +*<_t_hours_others_year_> + gen t_hours_others_year = . + label var t_hours_others_year "Annualized hours worked in all but primary and secondary jobs 12 month recall" +* + +*<_t_wage_nocompen_others_year_> + gen t_wage_nocompen_others_year = . + label var t_wage_nocompen_others_year "Annualized wage in all but primary & secondary jobs excl. bonuses, etc. 12 month recall)" +* + +*<_t_wage_others_year_> + gen t_wage_others_year = . + label var t_wage_others_year "Annualized wage in all but primary and secondary jobs 12 month recall" +* + + +*----------8.10: 12 month total summary------------------------------* + + +*<_t_hours_total_year_> + gen t_hours_total_year = . + label var t_hours_total_year "Annualized hours worked in all jobs 12 month month recall" +* + + +*<_t_wage_nocompen_total_year_> + gen t_wage_nocompen_total_year = wage_total + label var t_wage_nocompen_total_year "Annualized wage in all jobs excl. bonuses, etc. 12 month recall" +* + + +*<_t_wage_total_year_> + gen t_wage_total_year = wage_total + label var t_wage_total_year "Annualized total wage for all jobs 12 month recall" +* + + +*----------8.11: Overall across reference periods------------------------------* + + +*<_njobs_> + gen njobs = sdem_t_tra + replace njobs = 1 if njobs == 0 & lstatus == 1 + replace njobs = . if lstatus != 1 + label var njobs "Total number of jobs" +* + + +*<_t_hours_annual_> + gen t_hours_annual = t_hours_total + label var t_hours_annual "Total hours worked in all jobs in the previous 12 months" +* + + +*<_linc_nc_> + gen linc_nc = wage_total + label var linc_nc "Total annual wage income in all jobs, excl. bonuses, etc." +* + + +*<_laborincome_> + gen laborincome = wage_total + label var laborincome "Total annual individual labor income in all jobs, incl. bonuses, etc." +* + + + +*----------8.13: Labour cleanup------------------------------* + +{ +*<_% Correction min age_> + +** Drop info for cases under the age for which questions to be asked (do not need a variable for this) + local lab_var "minlaborage lstatus nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome" + + foreach v of local lab_var { + cap confirm numeric variable `v' + if _rc == 0 { // is indeed numeric + replace `v'=. if ( age < minlaborage & !missing(age) ) + } + else { // is not + replace `v'= "" if ( age < minlaborage & !missing(age) ) + } + + } + +* +} + + +/*%%============================================================================================= + 9: Final steps +==============================================================================================%%*/ + +quietly{ + +*<_% KEEP VARIABLES - ALL_> + + keep countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% ORDER VARIABLES_> + + order countrycode survname survey icls_v isced_version isco_version isic_version year vermast veralt harmonization int_year int_month hhid pid weight weight_m weight_q psu strata wave panel visit_no type_of_interview urban subnatid1 subnatid2 subnatid3 subnatidsurvey subnatid1_prev subnatid2_prev subnatid3_prev gaul_adm1_code gaul_adm2_code gaul_adm3_code hsize age male relationharm relationcs marital eye_dsablty hear_dsablty walk_dsablty conc_dsord slfcre_dsablty comm_dsablty migrated_mod_age migrated_ref_time migrated_binary migrated_years migrated_from_urban migrated_from_cat migrated_from_code migrated_from_country migrated_reason ed_mod_age school literacy educy educat7 educat5 educat4 educat_orig educat_isced vocational vocational_type vocational_length_l vocational_length_u vocational_field_orig vocational_financed minlaborage lstatus potential_lf underemployment nlfreason unempldur_l unempldur_u empstat ocusec industry_orig industrycat_isic industrycat10 industrycat4 occup_orig occup_isco occup_skill occup wage_no_compen unitwage whours wmonths wage_total contract healthins socialsec union firmsize_l firmsize_u empstat_2 ocusec_2 industry_orig_2 industrycat_isic_2 industrycat10_2 industrycat4_2 occup_orig_2 occup_isco_2 occup_skill_2 occup_2 wage_no_compen_2 unitwage_2 whours_2 wmonths_2 wage_total_2 firmsize_l_2 firmsize_u_2 t_hours_others t_wage_nocompen_others t_wage_others t_hours_total t_wage_nocompen_total t_wage_total lstatus_year potential_lf_year underemployment_year nlfreason_year unempldur_l_year unempldur_u_year empstat_year ocusec_year industry_orig_year industrycat_isic_year industrycat10_year industrycat4_year occup_orig_year occup_isco_year occup_skill_year occup_year wage_no_compen_year unitwage_year whours_year wmonths_year wage_total_year contract_year healthins_year socialsec_year union_year firmsize_l_year firmsize_u_year empstat_2_year ocusec_2_year industry_orig_2_year industrycat_isic_2_year industrycat10_2_year industrycat4_2_year occup_orig_2_year occup_isco_2_year occup_skill_2_year occup_2_year wage_no_compen_2_year unitwage_2_year whours_2_year wmonths_2_year wage_total_2_year firmsize_l_2_year firmsize_u_2_year t_hours_others_year t_wage_nocompen_others_year t_wage_others_year t_hours_total_year t_wage_nocompen_total_year t_wage_total_year njobs t_hours_annual linc_nc laborincome + +* + +*<_% DROP UNUSED LABELS_> + + * Store all labels in data + label dir + local all_lab `r(names)' + + * Store all variables with a label, extract value label names + local used_lab = "" + ds, has(vallabel) + + local labelled_vars `r(varlist)' + + foreach varName of local labelled_vars { + local y : value label `varName' + local used_lab `"`used_lab' `y'"' + } + + * Compare lists, `notused' is list of labels in directory but not used in final variables + local notused : list all_lab - used_lab // local `notused' defines value labs not in remaining vars + local notused_len : list sizeof notused // store size of local + + * drop labels if the length of the notused vector is 1 or greater, otherwise nothing to drop + if `notused_len' >= 1 { + label drop `notused' + } + else { + di "There are no unused labels to drop. No value labels dropped." + } + + +* + +} + + +*<_% DELETE MISSING VARIABLES_> + +quietly: describe, varlist +local kept_vars `r(varlist)' + +foreach var of local kept_vars { + capture assert missing(`var') + if !_rc drop `var' +} + +* + + +*<_% COMPRESS_> + +compress + +* + + +*<_% SAVE_> + +save "`path_output'/`out_file'", replace + +* diff --git a/Support/B - Country Survey Details/MEX/ENOE/1. Introduction to ENOE.md b/Support/B - Country Survey Details/MEX/ENOE/1. Introduction to ENOE.md index 54a3289c8..4cef83076 100644 --- a/Support/B - Country Survey Details/MEX/ENOE/1. Introduction to ENOE.md +++ b/Support/B - Country Survey Details/MEX/ENOE/1. Introduction to ENOE.md @@ -10,40 +10,44 @@ Introduction to the Mexican Labour Force Survey (ENOE) ## What is the MEX ENOE? -The Mexican Labour Force and Unemployment Survey (ENOE) is the Mexican Labour Force Survey run as part of Mexico’s National Surveys series from 2005 to 2020. +The Mexican Labour Force and Unemployment Survey (ENOE) is the Mexican Labour Force Survey run as part of Mexico’s National Surveys series from 2005 to 2023. The survey ran as "new ENOE" (ENOE-N) from Q3 2020 to 2022 due to the CoVid-19 Pandemic (see details below). ## What does the MEX ENOE cover? -The Mexican ENOE is a labour force survey collecting information on demographic details (age, sex, location), education (academic), social security, labour market activities over the past quarter, as well as time use and activities over the previous 7 days. The years and sample size of ENOE harmonized for GLD are: - -| Year | # of Individuals | # of Households | -| :------- | :-------- | :-------- | -| 2005 | 1,649,291 | 126,481 -| 2006 | 1,663,902 | 127,784 -| 2007 | 1,643,644 | 127,562 -| 2008 | 1,619,352 | 126,713 -| 2009 | 1,590,077 | 125,773 -| 2010 | 1,593,114 | 126,092 -| 2011 | 1,574,013 | 125,882 -| 2012 | 1,563,171 | 125,780 -| 2013 | 1,552,325 | 179,943 -| 2014 | 1,590,748 | 126,799 -| 2015 | 1,579,514 | 126,985 -| 2016 | 1,548,185 | 127,381 -| 2017 | 1,543,995 | 129,937 -| 2018 | 1,535,217 | 129,158 -| 2019 | 1,590,785 | 134,522 -| 2020 | 1,142,227 | 132,788 +The Mexican ENOE is a labour force survey collecting information on demographic details (age, sex, location), education (academic), social security, labour market activities over the past quarter, as well as time use and activities over the previous 7 days. The years and sample size of ENOE(-N) harmonized for GLD are: + +| Year | Survey type | # of Households | # of Individuals | # of Observations | +| :------- | :-------- | :-------- | :-------- | :-------- | +| 2005 | ENOE | 126,488 | 564,061 | 1,649,542 | +| 2006 | ENOE | 127,788 | 562,800 | 1,664,008 | +| 2007 | ENOE | 127,566 | 556,767 | 1,643,760 | +| 2008 | ENOE | 126,719 | 550,495 | 1,619,532 | +| 2009 | ENOE | 125,779 | 542,328 | 1,590,193 | +| 2010 | ENOE | 126,099 | 541,856 | 1,593,239 | +| 2011 | ENOE | 125,888 | 536,283 | 1,574,197 | +| 2012 | ENOE | 125,785 | 531,803 | 1,563,375 | +| 2013 | ENOE | 179,964 | 682,182 | 1,552,567 | +| 2014 | ENOE | 126,802 | 535,298 | 1,590,927 | +| 2015 | ENOE | 126,994 | 531,375 | 1,579,632 | +| 2016 | ENOE | 127,383 | 525,881 | 1,548,364 | +| 2017 | ENOE | 129,946 | 530,317 | 1,544,167 | +| 2018 | ENOE | 129,176 | 524,787 | 1,535,415 | +| 2019 | ENOE | 134,545 | 542,014 | 1,591,056 | +| 2020 | ENOE | 116,367 | 409,268 | 409,268 | +| 2020 | ENOE-N | 113,649 | 406,679 | 641,607 | +| 2021 | ENOE-N | 157,660 | 604,797 | 1,565,332 | +| 2022 | ENOE-N | 141,252 | 546,271 | 1,574,939 | +| 2023 | ENOE | 163,116 | 613,576 | 1,700,438 | Note that the ENOE is a panel survey where households are visited up to five times, explaining the low number of households for the sample size. ## Where can the data be found? -The microdata is free and publicly available on the National Institute of Statistics and Geography (INEGI). INEGI created a [dedicated website](https://www.inegi.org.mx/programas/enoe/15ymas/#Microdatos) that records ENOE and all previous versions, besides it contains complete information to understand the framework of the ENOE. Data from 2019 onwards can only be circulated within the World Bank. For further information kindly get in touch with the World Bank Jobs Group. +The microdata is free and publicly available on the National Institute of Statistics and Geography (INEGI). INEGI created a [dedicated website](https://www.inegi.org.mx/programas/enoe/15ymas/#Microdatos) that records ENOE. ## What is the sampling procedure? -The ENOE uses a stratified two-stage design. The introductory section of ENOE provides ample detail on the breakdown and goals of the process. Below we share a sequence of images that will allow the user to access the information in the ENOE webpage. The text is in Spanish. Yet, we did a short summary in english at the bottom of this section to give the user a general idea of the information. +The ENOE uses a stratified two-stage design. The introductory section of ENOE provides ample detail on the breakdown and goals of the process. Below we share a sequence of images that will allow the user to access the information in the ENOE webpage. The text is in Spanish. Yet, we did a short summary in English at the bottom of this section to give the user a general idea of the information. Image 1. Steps to find the information in the webpage @@ -55,7 +59,7 @@ Image 1. Steps to find the information in the webpage

![](utilities/ENOE_intro3.png)

-Reference: Screenshots from ENOE- INEGI webapage. Further details in *Encuesta Nacional de Ocupación y Empleo* under the ["recent version"](https://www.inegi.org.mx/programas/enoe/15ymas/) +Reference: Screenshots from ENOE- INEGI webpage. Further details in *Encuesta Nacional de Ocupación y Empleo* under the ["recent version"](https://www.inegi.org.mx/programas/enoe/15ymas/) [Summarized Translation from the original version] @@ -66,7 +70,7 @@ Reference: Screenshots from ENOE- INEGI webapage. Further details in *Encuesta N Sampling unit: The private home. Analysis unit: The home and the residents of the dwelling. [...] - Sampling frame : The sampling frame used for the ENOE is INEGI's 2012 National Housing Framework, built from the cartographic and demographic information obtained during the 2010 Population and Housing Census, which is updated with each new census survey. [...] + Sampling frame: The sampling frame used for the ENOE is INEGI's 2012 National Housing Framework, built from the cartographic and demographic information obtained during the 2010 Population and Housing Census, which is updated with each new census survey. [...] ## What is the geographic significance level? @@ -82,71 +86,51 @@ However, in [2016 the name changed officially](https://dof.gob.mx/nota_detalle.p ### Evolution of the ENOE questionnaires -In the past fifteen years, the Mexican national statistics institute -(INEGI) published five updates (Table 1) of the labor force questionnaire or -ENOE. The ENOE has two versions: the extended version and the basic -version. Every quarter, the INEGI conducts labor surveys using either -version. +Over the years, the Mexican national statistics institute (INEGI) published a series of updates to the questionnaires. The changes are at times introduced from one quarter to the next within a year. The precise details can be seen on the [INEGI website](https://www.inegi.org.mx/programas/enoe/15ymas/#documentacion) under the drop-down menu "Cuestionarios" (Questionnaires). -Figure 1. Type of questionnaire used in ENOE -

-![](utilities/ENOEversions.png) -

-Note.- Image taken from ["Conociendo la base de datos de la ENOE"](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/con_basedatos_proy2010.pdf) by INEGI +### Effect of the CoVid Pandemic -Table 1. ENOE questionnaire revision by year +The CoVid 19 Pandemic interrupted regular surveys procedure. The data for 2020 was only collected as expected in the first quarter of 2020. -| Year | Version Q1 | -| ------------ | ----------------------------------------------------------------------------------------------------- | -| 2005 to 2006 | [First Extended Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_amp_v1.pdf) | -| 2007 | [First Basic Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_bas_v1.pdf) | -| 2008 | [Second Basic Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_bas_v2.pdf) | -| 2009 | [Second Extended Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_amp_v2.pdf) | -| 2010 to 2012 | [Third Extended Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_amp_v3.pdf) | -| 2013 to 2015 | [Fourth Extended Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_amp_v4.pdf) | -| 2016 to 2020 | [Fifth Extended Version](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/c_amp_v5.pdf) | +From the third trimester of 2020 to the fourth trimester of 2022 INEGI operated a different survey (called ENOE_N) that contained a smaller sample size and a larger reliance on phone interviews. -— [Author made. based on ENOE -Questionnaires](https://www.inegi.org.mx/programas/enoe/15ymas/) +The data is available on the INEGI website but is not used in GLD. From the first trimester of 2023 the ENOE continued as before with some small methodological changes. The latest methodological note can be found [here](https://www.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/nueva_estruc/889463909743.pdf). -### Effect of the CoVid Pandemic +### Classifications of industry and occupation used in ENOE and ENOE-N -The CoVid 19 Pandemic interrupted regular surveys procedure. The data for 2020 was only collected as expected in the first quarter of 2020. Data thereafter must be used with precaution. +In the Mexican National Survey of Occupation and Employment (Encuesta Nacional de Ocupación y Empleo - ENOE) as well as then "New" ENOE (ENOE-N) following the years immediately after the pandemic (2020 Q3 to 2022 Q4) uses national classifications to code the industry and occupation of workers. -From the third trimester of 2020 to the fourth trimester of 2022 INEGI operated a different survey (called ENOE_N) that contained a smaller sample size and a larger reliance on phone interviews. - -The data is available on the INEGI website but is not used in GLD. From the first trimester of 2023 the ENOE continued (largely) as before. +#### Overview of industry codes used in ENOE(-N) -### Coding of industry and occupation codes +The below table shows the classifications used at different points in time in the ENOE survey to code the industry workers are in. -The ENOE codes occupation based on the "Mexican Classification of Occupations" (Clasificación Mexicana de Ocupaciones - CMO) from 2005 to 2012 and from 2013 to 2020 on the "National System of Classification of Occupations" (Sistema Nacional de Clasificación de Ocupaciones - SINCO). These are mapped to ISCO-08. +| From | To | Survey | Version Used | Notes | +| -------- | ------- | ------ | -------------| --------------------------------------------- | +| Q1 2005 | Q2 2012 | ENOE | SCIAN 04 | | +| Q3 2005 | Q4 2022 | ENOE | SCIAN 07 | ENOE de facto not run from Q2 2020 to Q4 2022 | +| Q3 2020 | Q2 2021 | ENOE-N | SCIAN 07 | | +| Q3 2021 | Q4 2022 | ENOE-N | SCIAN 18 | | +| Q1 2023 | Current | ENOE | SCIAN 18 | | -On the industry side, ENOE codifies industry over the years based on four different versions of the North American System of Industrial Classification (Sistema de Clasificación Industrial de América del Norte - SCIAN), namely the 2007 versions, all data is mapped to ISIC-4. +The classification document (see [example here](https://www.inegi.org.mx/contenidos/programas/enoe/15ymas/doc/clasificaciones_enoe.pdf)) states that these versions are reduced versions of the actual SCIAN versions (i.e., with less detail) as respondents will not be able to describe their industries with total accuracy. These classifications contain about 180 unique codes. The precise details of the mapping can be found [here on separate document](Correspondence_NAICS_ISIC.md) -The table below provides an overview of the different versions underlying the survey as well as what version they have been mapped to. The precise details of how the mapping was done is covered [here in a separate document on occupations](Correspondence_occup_ISCO.md) as well as [here on industry classification](Correspondence_NAICS_ISIC.md). +#### Overview of occupation codes used in ENOE(-N) -| Year of survey | National occup version | ISCO version | National industry version | ISIC version | -| :----: | :----: | :----: | :----: | :----: | -| 2005 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2006 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2007 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2008 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2009 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2010 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2011 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2012 | CMO | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2013 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2014 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2015 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2016 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2017 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2018 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2019 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | -| 2020 | SINCO 2011 | ISCO-08 | SCIAN 2007 | ISIC-4 | +The below table shows the classifications used at different points in time in the ENOE survey to code the occupation workers hold. -### Relevant information from INEGI on the ISIC codes used by ENOE +| From | To | Survey | Version Used | Notes | +| -------- | ------- | ------ | -------------| --------------------------------------------- | +| Q1 2005 | Q2 2012 | ENOE | CMO (09?) | Exact version of CMO unknown | +| Q3 2005 | Q4 2022 | ENOE | SINCO 11 | ENOE de facto not run from Q2 2020 to Q4 2022 | +| Q3 2020 | Q2 2021 | ENOE-N | SINCO 11 | | +| Q3 2021 | Q4 2022 | ENOE-N | SINCO 19 | | +| Q1 2023 | Current | ENOE | SINCO 19 | | -Please check the following [document](https://github.com/worldbank/gld/blob/1ff9697fbfe571a1b95c6d10c4f8ce5e0d6a7568/Support/B%20-%20Country%20Survey%20Details/MEX/ENOE/utilities/Comentario%20aplicado%20a%20la%20versi%C3%B3n%202(spa-eng).pdf) to get more insight on the ENOE SCIAN codes and the meaning of the digits used in the raw data. +The classification breakdown for the first surveys (2005 to Q2 2012) is listed as CMO-09. The GLD team expects that another systems must have been used prior (i.e., using CMO-2009 in 2005) but could not ascertain the details. We expect (hope) any CMO version prior to CMO-09 is not significantly different from it. The precise details of the mapping can be found [here on separate document](Correspondence_occup_ISCO.md) Further information or questions about the microdata in this webpage can be directed to [World Bank GLD Focal Point](mailto:gld@worldbank.org). + +### ENOE Panel + +The ENOE survey revisits households over five consecutive quarters (with a longer period for individuals on phone surveys since CoVid-19). The GLD team has created code to generate a single file out of the individual harmonized files with unique panel identifiers. You may find the codes [here](). diff --git a/Support/B - Country Survey Details/MEX/ENOE/Correspondence_NAICS_ISIC.md b/Support/B - Country Survey Details/MEX/ENOE/Correspondence_NAICS_ISIC.md index a32ef7e3e..5598719e3 100644 --- a/Support/B - Country Survey Details/MEX/ENOE/Correspondence_NAICS_ISIC.md +++ b/Support/B - Country Survey Details/MEX/ENOE/Correspondence_NAICS_ISIC.md @@ -1,135 +1,27 @@ -# Correspondence between NAICS Mexico and ISIC +# Correspondence of Mexican Industry Classification to International Codes -Information regarding the industry respondents are employed in is coded in the Encuesta Nacional de Ocupación y Empleo (ENOE) using the codes of the [North American Industry Classification System](http://en.www.inegi.org.mx/app/scian/) (shortened as NAICS in English and SCIAN in Spanish). +## Overview of industry codes used in ENOE(-N) -This document first describes the logic of the process and then provides users with the underlying conversions tables, conversion algorithms, as well as the generated `dta` files used in the harmonization codes. +The below table shows the classifications used at different points in time in the ENOE(-N) surveys to code the industry workers are in. -## Data as present in survey raw data +| From | To | Survey | Version Used | Notes | +| -------- | ------- | ------ | -------------| --------------------------------------------- | +| Q1 2005 | Q2 2012 | ENOE | SCIAN 04 | | +| Q3 2005 | Q4 2022 | ENOE | SCIAN 07 | ENOE de facto not run from Q2 2020 to Q4 2022 | +| Q3 2020 | Q2 2021 | ENOE-N | SCIAN 07 | | +| Q3 2021 | Q4 2022 | ENOE-N | SCIAN 18 | | +| Q1 2023 | Current | ENOE | SCIAN 18 | | -The image below shows the answers to the relevant question (`p4a1` asks for the industry the company the respondent works for is in) for the dataset from the first quarter of 2005: +## Detail of classification -

-![SCIAN ENOE example](utilities/intro_p4a.PNG) -

+The SCIAN (NAICS in the English acronym) is a detailed system of organising industry shared by Mexico, the United Stated of America, and Canada. It reaches six levels of (six digits) of aggregation, going from broad categories to narrow niches. Given that the survey only uses people's descriptions of their work and transforms these into codes, the Mexican statistical offices (INEGI) chose to use a reduced, idiosyncratic classification system (of around 180 distinct codes). -All years from 2005 to 2020 (in the first quarter) use the 2007 SCIAN version and in all year `p4a` is a four-digit code while SCIAN is a six-digit code. However, the information contained is actually only useable at three digits, as the ENOE coding uses the three digits (to the level of subsector) and uses the fourth digit not to designate the next level (industry group) but rather is a subsector disaggregation not in line with SCIAN, as the email below from the Mexican Statistics Institute INEGI shows (in Spanish). +## Source of information -

-![SCIAN ENOE example](utilities/SCIAN_Email_INEGI.png) -

+The codes used for SCIAN 07 and SCIAN 18 are available online on the INEGI website. Users can find it [here](https://www.inegi.org.mx/programas/enoe/15ymas/#documentacion) under the drop down menu option "Clasificadores" (Classifiers). -## Correspondance information available +We have, moreover, received comparison tables between [Scian 2004 and 2007](utilities/Tabla%20comparativa%20SCIAN-2004%20y%202007.xlsx) and between [SCIAN 2007 and 2018](utilities/Tabla%20comparativa%20SCIAN%202007%20-%202018.xlsx) from INEGI after reaching out to the (very helpful) team in Mexico. -INEGI has [website dedicated to NAICS](https://www.inegi.org.mx/app/scian/) where it stores general information in the classificaiton and - most importantly for concordance purposes - comparative tables between the different SCIAN versions and the different ISCO versions. The image below shows the available comparisons in March 2022: +## Processing of information -

-![SCIAN available options](utilities/scian_options.png) -

- -The information is available as both a PDF and an Excel File. The image below shows the first lines of the first sheet of the 2007 to ISIC 4 Excel document: - -

-![SCIAN Excel example](utilities/scian_07_example_xlsx.PNG) -

- -Note how the first sheet contains the SCIAN to ISIC mapping, while the second sheet maps the inverse relation. Note further that SCIAN codes are all at 6 digit level in the comparison tables provided by the National Statistics Office (NSO) while the ISIC codes are just at 4 digits. - -The last piece of information to understand before proceeding with creating a mapping `.dta` that can be used in the harmonization is the fact that mapping is not perfect in the correspondence tables provided by the NSO. In the above image this is the case (e.g., 111121 maps to 0111) but this is not always so. The image below shows how SCIAN code 111410 maps to five (!) different and distinct ISIC codes. - -

-![SCIAN Imperfect Matching](utilities/scian_imperfect_match.png) -

- -## Creating a map between NAICS and ISIC - -### Overall mapping logic - -The overall mapping is done in two steps. The first step is to create an `R` code that reads in the Excel file from the NSO, cleans it (note in the image how there are empty lines between two SCIAN codes) and equates three-digit SCIAN codes (since information in ENOE is useable at three-digits, as per the email) to an ISIC code. The code generates a `.dta` file that lists all possible unique SCIAN codes and provides the corresponding ISIC code. - -The second step is to use the `.dta` created in the first step in the harmonization. That is to merge in the correspondance table when harmonizing and use matched ISIC codes to generate the GLD `industrycat_isic` variable. - -### Generating the `R` code and resulting `.dta` file - -The mapping of NAICS to ISIC codes is performed by a user written `R` code. It reads from the relevant NSO correpsondence Excel file stored under `MEX_[YYYY]_ENOE\MEX_[YYYY]_ENOE_v01_M\Doc` and writes the comparison `.dta` file merged in the harmonization under `MEX_[YYYY]_ENOE\MEX_[YYYY]_ENOE_v[##]_M\Data\Stata`. The corresponding `R` itself is stored under `MEX_[YYYY]_ENOE\MEX_[YYYY]_ENOE_v[##]_M\Programs`. Note that the actual files are stored on a World Bank server - the conversion files are, however, availabe [in the utilities folder here](utilities/Additional%20Data). - -The first step in the process is to reduce the NSO correspondece six-digit system to the three digits covered in the ENOE. This creates duplicates as the, for example, 14 codes between `461110` and `46122` that can be reduced to the three-digit `461` maps to 27 distinct ISIC codes. There are 94 unique three-digit codes in SCIAN 2007. - -The second step is to compare the correspondence of SCIAN three-digit codes to ISIC three-digit codes and count the number of total cases and the number of matches to each code. The image below shows this process for some of the first codes: - -

-![SCIAN Reducation Logic](utilities/match_1.png) -

- -In the above image the aforementioned code `461` has a total of 27 mappings, one of which starts with ISIC code `471`, and 13 cases each start with `472` and `478`. In the case of SCIAN `462` all three cases map directly to ISIC `471` (red box in the above image). In the case of SCIAN `464` the seven total cases are much more spread out (orange box in the above image). - -At this stage of the algorithm, only perfect matches are map from three-digit SCIAN codes to three-digit ISIC codes. This applies to 17 of the 94 unique SCIAN three-digit codes, leaving 77 yet to map. - -The third step matches each three-digit NAICS code to the reduced two-digit ISIC equivalent. This is exemplified in the snapshot below: - -

-![SCIAN Reducation Logic](utilities/match_2.png) -

- -In the case of SCIAN `464` (blue box in the above image) the mapping is now at 100%, meaning that all seven ISIC codes start with codes `47`. In the case of SCIAN `468` (orange box in the above image), the options are more evenly split even though there is a majority option. In the case of the SCIAN `222` each of the four ISIC codes has the same number of mappings - no clear assignment can be made. - -At this third step assignments SCIAN to ISIC two-digits are made if there is a single option with >50% cases assigned to it. In the case above SCIAN `468` would not be assigned at this stage. This is because there may be two mappings with each 50.0% each, which would lead to a non-unique assignment. This logic maps a further 60 unique codes, leaving 17 codes still to match. - -The fourth step looks at all steps without an absolute majority. This step itself involves two sub-steps. This is best illustrated looking at the codes for SCIAN `222`, `487`, and `551` below. - -

-![SCIAN Reducation Logic](utilities/match_3.png) -

- -The overall idea at this step is to select a mapping based on simple majority – and chose randomly in the case of a tie. For code `487` this is mapping to ISIC code `49` as this is the mapping category in 3 out of 7 possible mappings (sum the number of possible mappings denoted in column `n`). - -For `222` there is no single best category, but, if we look at the Sections the codes belong to – the top level ISIC aggregations – two of the codes are section `E` (Water supply; sewerage, waste management and remediation activities) while each one is from section `D` (Electricity, gas, steam, and air conditioning supply) and `H` (Transportation and storage). When selecting a mapping this sectional relevance should be taken into account to reduce any potential randomness in the mapping. - -Thus, the first sub-step is to assign the ISIC two-digit codes to their sections and see if there is a single section where a single value has at least 50% of the mappings. This is the case for SCIAN `222`, where section `E` represents 50% of the mappings. For SCIAN `551`, each possible mapping has a 50% weight and thus no sub-selection can be made. For SCIAN `487` the selection is even stronger as 6 out of the 7 mappings are from section `H`. The possible mapping choices are hence reduced to the following: - -

-![SCIAN Reducation Logic](utilities/match_4.png) -

- -At the second sub-step, within each SCIAN code the simple majority is selected. This allows a unique mapping of 13 of the remaining 17 codes. In just four cases (such as `222` and `551`) a random selection is made between equally likely mappings – in three of the four cases (such as `551` the selection is between codes of different ISIC sections). - -### Merging the correspondence with the survey data - -The data is merged in the harmonization at the first stage of database assembly (see individual harmonization codes). In the case of the 2017 ENOE there are 167,033 individuals for which the survey has an industry SCIAN codes. The correspondence process is able to match to 162,374 of those (97.2%). The image below shows the quality of the matches made: - -

-![SCIAN Reducation Logic](utilities/merge_hist_17_cumul_w.png) -

- -The graph depicts weighted cumulative distribution by match quality. It shows that only 10% of all observations have a match quality of 47% or worse (green circle), while 80% have a quality of 77% or higher (blue circle). Two thirds of all cases have a quality of 90% or better (red circle). - -## Caveats and extensions - -### Caveat - What the mapping does and does not do - -Overall, the quality of the mapping seems to be very good. However, the metric used to evaluate matching quality, while sensible, contains potential pitfalls. The most obvious one is that it is evaluating importance of a map by number of existing codes and not relevance of the codes. As an example, see the following excerpt from NAICS: - -| NAICS Code | NAICS Description | ISIC Code | -| :------------ | :-------------------------------: | --------: | -| 312131 | Grape alcoholic drinks | 1101 | -| 312132 | Pulque (fermented agave) | 1102 | -| 312139 | Cider & other fermented drinks | 1102 | -| 312141 | Rum & sugar cane drinks | 1101 | -| 312142 | Distilled agave drinks | 1101 | - - -The way the correspondence has proceeded, it treats every entry equally. However, given that tequila, probably the economically most important drink in Mexico is made from agave, NAICS code `312142` should be weighted more strongly in this context. If we think of Cuba, code `312141` should probably be more important. This information, however, is not avaialable to us. Furthermore, note that the process of matching less than perfectly at only the lowest level of ISIC solves the issue here. All these NAICS codes starting with `3121` don't match to ISIC at four digits but do so perfectly to `110`. - -In this case no problem has arisen and as small niches grow, they can be expected to obtain more codes (as clothing grows, groups are created for shirts, trousers, ...) so it can be assumed that a single category is not significantly larger than any other category in the economy, but it still should be kept in mind that the evaluation of the mapping is based only on the number of categories, regardless of the economic relevance. - -### Extension - What you may add if you would be available - -A further extension, which may help in creating better matches is to use the text descriptions, provided in the NSO correspondence document, which define in more detail what the NAICS and ISIC codes cover. This is beyond our current capacity, though. If you, dear Reader, think you may be able to support this, please contact the team here on GitHub. We really would appreciate any help! - -## Underlying data for emulating process -The harmonization codes merge in `dta` files created from the correspondence tables shown above using the algorithmic logic described in this document. In particular we use: - -- [The correspondence table between SCIAN 07 and ISIC 4](utilities/SCIAN_07_ISIC_4.xlsx); - -- [The `R` code to map SCIAN 07 to ISIC 4](utilities/SCIAN_07_3D_ISIC_4.R); - -- [The `dta` file with codes for SCIAN 07 and ISIC 4](utilities/SCIAN_07_3D_ISIC_4.dta); +The correspondence tables where converted into separate files for each SCIAN version. Then the codes were manually recoded to the 4th revision of ISIC. The individual files are avaiable for [SCIAN 04](utilities/ENOE_SCIAN_2004_Codes.xslx), [SCIAN 07](utilities/ENOE_SCIAN_2007_Codes.xslx), and [SCIAN 18](utilities/ENOE_SCIAN_2018_Codes.xslx). These are converted into `.dta` files using Stata do files ([for 2004](utilities/Convert_SCIAN_04_ISIC_4_to_dta.do), [for 2007](utilities/Convert_SCIAN_07_ISIC_4_to_dta.do), and [for 2018](utilities/Convert_SCIAN_18_ISIC_4_to_dta.do)). The `.dta` files are also made available ([for 2004](utilities/SCIAN_04_ISIC_4.dta), [2007](utilities/SCIAN_07_ISIC_4.dta), and [2018](utilities/SCIAN_18_ISIC_4.dta)). \ No newline at end of file diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_04_ISIC_4_to_dta.do b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_04_ISIC_4_to_dta.do new file mode 100644 index 000000000..868b5124a --- /dev/null +++ b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_04_ISIC_4_to_dta.do @@ -0,0 +1,17 @@ + +*========================================================================* +* Code to convert the manual correspondence in the SCIAN 2007 spreadsheet +*========================================================================* + +* Define paths +local spreadsheet_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Input/ENOE_SCIAN_2004_Codes.xlsx" +local output_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Output/SCIAN_04_ISIC_4.dta" + +* Import file +import excel "`spreadsheet_path'", sheet("Manual correspondences") cellrange(A7:F186) firstrow clear + +* Rename variables, keep only relevant, save +rename (Clave Code) (scian isic) +keep scian isic +destring scian, replace +save "`output_path'", replace \ No newline at end of file diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_07_ISIC_4_to_dta.do b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_07_ISIC_4_to_dta.do new file mode 100644 index 000000000..519281d29 --- /dev/null +++ b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_07_ISIC_4_to_dta.do @@ -0,0 +1,17 @@ + +*========================================================================* +* Code to convert the manual correspondence in the SCIAN 2007 spreadsheet +*========================================================================* + +* Define paths +local spreadsheet_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Input/ENOE_SCIAN_2007_Codes.xlsx" +local output_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Output/SCIAN_07_ISIC_4.dta" + +* Import file +import excel "`spreadsheet_path'", sheet("Manual correspondences") cellrange(A7:F185) firstrow clear + +* Rename variables, keep only relevant, save +rename (Clave Code) (scian isic) +keep scian isic +destring scian, replace +save "`output_path'", replace \ No newline at end of file diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_18_ISIC_4_to_dta.do b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_18_ISIC_4_to_dta.do new file mode 100644 index 000000000..67ca33d31 --- /dev/null +++ b/Support/B - Country Survey Details/MEX/ENOE/utilities/Convert_SCIAN_18_ISIC_4_to_dta.do @@ -0,0 +1,17 @@ + +*========================================================================* +* Code to convert the manual correspondence in the SCIAN 2018 spreadsheet +*========================================================================* + +* Define paths +local spreadsheet_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Input/ENOE_SCIAN_2018_Codes.xlsx" +local output_path "Y:/GLD-Harmonization/529026_MG/Countries/MEX/SCIAN codes/Output/SCIAN_18_ISIC_4.dta" + +* Import file +import excel "`spreadsheet_path'", sheet("Manual correspondences") cellrange(A7:F190) firstrow clear + +* Rename variables, keep only relevant, save +rename (Clave Code) (scian isic) +keep scian isic +destring scian, replace +save "`output_path'", replace \ No newline at end of file diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/ENOE_SCIAN_2004_Codes.xlsx b/Support/B - Country Survey Details/MEX/ENOE/utilities/ENOE_SCIAN_2004_Codes.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..aec42c333c0524cbc43ba9b1a7afc3953c5b5c4e GIT binary patch literal 120075 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≠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%0AD`z~k#mNIb`(FOT*reR5FbbFToV7sxl3 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 htf6=b}-N9Bu&MHDk9y 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%0A*wyQ8jtuOL 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≀9$_?+9_@N5j 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 ax$P~1miisZDQvn7uV?Y@Z~g*nBmO_cC$XLY literal 0 HcmV?d00001 diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/SCIAN_04_ISIC_4.dta b/Support/B - Country Survey Details/MEX/ENOE/utilities/SCIAN_04_ISIC_4.dta new file mode 100644 index 0000000000000000000000000000000000000000..3e301c70177ab741837d38e306ec51ab41e94518 GIT binary patch literal 2909 zcmeH}Piz!b9LLAHG+UiDbh~S7O4urt5HRd-W@q*fJ_l$^m6ldZMTy2N)9uh*-R(9z zOSKoddGO@H$e{@bO$-+-p$DQMQ7{U{7($E}|8XLSfT)#d)Z%x3Gt(_?Owh!OangL= z@BRM0-}}8cvlVvLteV;3s%eP4We!^vLsYDyW!jdZC}|P*Ct_%#YLzRF!}h^$5wA@} zuTdw7c&{P)jcLh!M7-Y+MRUk18WL=-B&vmyh4o5fMx&y)by>MKl~fJbsAWXFW)*S2 zl#)4y1nzUd8}GZr6%23OS?A8jyzysmTp4inr|RADqBpkR?anoC9Pq|xy-~!SRmHej zDVRe=D_flyvuxwnn*nTOk!hL`#B!tvnAiCg?!Tfr{mBqCKRk8T}Y=w6fm-2%8dZZm{ku2hQ!yUJ&`cDIPn zE5x31rDRrZqg|m5G*T<>Hl&+)=JvH`Z0YaCNp7Hs`)lLaihHdr-^#38@@*{tA9r!i zZ*f;@F9G+;Had&uxFzk7Zj>MHaPDykf0LV}`T1M-M7T}Yr_TM=HD~*)Z|=LLo%v%Y zWJlpfOVardU*F;+@LuJ4Uq9*kw*74P{b$d*b3cziUNQ>&4!u9=uIJ?YU~{eBi-$fv zvT*J%nW743I)(f*K74D527G0aA(fLRM%T`V_qs*n+c~0!sxW zNJ*k?LDGqOf|Mfa4N{tDAlLz)!60Rbo&Xiv&zd)a30!33h-hOAPiLBon0nGZ2L z8Z@lf*Ptbc`kC2=Ze&{{!;wf<9DiAXwTsy=qgdJ{E2!ZWSwZI4WRyt0i>xB5E~LU!4ylN}H>4uAEuz@cD8r znV<`xrd$SzW|?!$V55d?;YLRvXWkjsQYr<&G|8Ys&0vaJSaUzi53sx*Owxla>!3zS zmN$VqZDx5}*va3++yM>IGt8MVno6IAHT3!GFkI*oWHs?4Nc20Hp!z09Zfru!Da>5e z^eA?;p-IOk)1XQn&?|JKNk=!Nhz|di5p0FlM)b6jQ6ovLA|hx2b%PmtEYgDvPe;%U z#R7@;Fh`hqW+~DOpHY@yj3iOqG|ML`BY09CGKKonI?0HSztcT*@{e?IoUFR z9ev!2^67Ldj*HH;rf^_0tU1d(*NWq%FJM*a%hn9e@hj%K6*}tFSLmoM$xJb)Vj2$n za4dmrM`K7Yy%Wp8=iQjDs>(689*;R)eJ|$p@MJ856Z|BWLH*g)X~?^oCUb~6!pt*| cGDVy}9KxYlS}6WT6sBrcrRq3r9qJRx;#Oph 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 literal 0 HcmV?d00001