5l{XYy0Cc{%Sr-
zIp8BlmpfLkQXbH4Kin-PqW%c@yQ1S?d}MU|+c!EgJ~t@yG1G6g^n)BQ5h
zjV_-=y7zBpH66qFCH_ty!neZ2w^%%LN|BPY^-^Ei(WRc8|8kLvcKXtA*uvIR+#XB!
z4$1PB{zZzIe7pm;cp?sL{-%FPN~!!3w_x)Ry+>M>qX)3(7kQpPx7=|2Efw$fi(QRV
zY`wiDr5Y0eVr24iTH%a;9UcEQc7B9XLPrVc`j+B~uAW+g$sMJ4(qJ8bC;oNu?Ob+#3eznrdX@oc
z*$;kBKZ^&cj6B;9j6Bmv+EI;V;IeuWU5oRt*iz#Rzx7wfBjgvYe-QGmf8|SpsJ_$+
z31j*bKCt>Xr)}fsElDnN()=UGMUCkXj^6h@Yg8X}Px4vzmuZ5J#-Hn!kK+%0h4CK+
zsPU6)TA=C!hF;<5{RKU(=$VG#*Ov<8ug=w9OKdt9A8@EK$O4@hwE5l)<=t1O99g&O+TUw
zy;J!VUybSSv~Z)--|2XUa|71+xAbPP*-JjLpXpCAw0v|u#RoR|T!T$M#RN9_B>xK2
zUmcy~K!4+x1gx?6$KuEN3)cK>$#43#;!gUti>KrUAJtE;`KbPKy~2rnbNm5*%MY&M
zxA@{KTA2A4Oo^L+InLO>b@Eb@BX030*SW@h&w8_mTb_bR7TH`CV#y!&)^H}3C>z(~{H}9_=fA>ybZ~*IiFaxjozsHwgjW1aE
zH6Ovk?{Vsxp%(u^YjBwA4-Pd(J`Oeh*!E6;hHo5h{SMx0ei7atAL)900XBP}flWUB
zxp)1%r*`^m=M~pP$N7W&7oVwo8l?El;kd#Hnc6RV=0)+D@ncLym;AGNr{~#Hd~W$tuK*y*#0zIu<_GOS6KKRoz1+zXqGGbiXVHKsdaxEWQ98#
z0xB+aTtmj$`9g6>!KnWzPZV%i4u5xkNwBK*_@Y{meSSUMGO($9FejdyPl1dSj!wey
z46x`c;|K$W!%3dF49n9=VdpVL6XXUkMK>
z>FAMpz~pguV~?X#-=viB(+@cx9nPG84pZ;+Z=*8~a=t01_UP|spPU6<(>Z#}dEzk6
zqMs_gCtc`C4okl={perND;!rit#Dr9Qek=<{mk|&JTEx?aVLMaTaqTm|Ndzd=L-JM
zzxnz4k0a_5GMhhT8mur>(nsZ!t0Y*3rCcubo00KZ%FpC8ANcuJ-j%h`wSG#|2gEbT$}2Qyz+m^T{B`kRqf%Y1HhW+(F5&RoqVnFnxA>c%PXt(yf3KftMzToPy6eff8?z9Sh_9ZF7dq{rFj_U_X)gvs4%l@
zji>PHdU`G0XOVX+`6%gY`IG5yim%7%;Sjv!59y!ViXMw$v8drYOh4InWQ||n6SYF@NxUVtm9i8lu-w(|5A^XYnp#6NtRG7(UytaNX
zbZLlAfBHA?KQHHv&`avIUkjFpcbf2GKMz~-K53rspeN#?{S{0dh;$Hg;@`-2a-TGlO{n~OkosSRlTg}V2`+p8{cLnYLll=gN?&j10
literal 0
HcmV?d00001
diff --git a/Support/B - Country Survey Details/MEX/ENOE/utilities/sinco_to_isco_correspondance.R b/Support/B - Country Survey Details/MEX/ENOE/utilities/sinco_to_isco_correspondance.R
index a738eed5b..b9dcb622e 100644
--- a/Support/B - Country Survey Details/MEX/ENOE/utilities/sinco_to_isco_correspondance.R
+++ b/Support/B - Country Survey Details/MEX/ENOE/utilities/sinco_to_isco_correspondance.R
@@ -51,6 +51,20 @@ df <- df[!(df$...1 < 1000 & !is.na(df$...1)),]
# Fill ISCO description down, Drop when SINCO has no correspondence with ISCO
df <- df %>% fill(...4, .direction = "down")
+
+# There are odd cases that require manual treatment, set them aside
+
+# First when there is a note instead of a correspondence code
+odd_nota <- df[(df$...4 %in% c("Nota: clasifica a los supervisores junto a los trabajadores que supervisa")),] %>%
+ # Keep only four digit codes, three digit ones should go
+ filter(...1 > 999)
+
+# Then for cases defined as "without correspondence"
+odd_no_correspond <- df[(df$...4 %in% c("No tiene correspondencia")),] %>%
+ # Keep only four digit codes
+ filter(...1 > 999)
+
+# Once saved, focus df only on what has correspondence
df <- df[!(df$...4 %in% c("No tiene correspondencia",
"Nota: clasifica a los supervisores junto a los trabajadores que supervisa")),]
@@ -176,4 +190,65 @@ concord <- bind_rows(match_1, match_2, match_3, match_4) %>%
isco = str_pad(isco, 4, pad = "0", side = "right"))
+#=========================================================================#
+# Step 7 - Add manual matches ---------------------------------------------
+#=========================================================================#
+
+# We manually assign codes to the codes present in SINCO but for which the
+# correspondence table gives us no information. This is based on SINCO
+# descriptions (1) and ISCO 08 ones (2)
+
+# Links below as of 2024/11/06
+# (1) http://internet.contenidos.inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/metodologias/est/sinco_2011.pdf
+# (2) https://www.ilo.org/sites/default/files/wcmsp5/groups/public/@dgreports/@dcomm/@publ/documents/publication/wcms_172572.pdf
+
+orphan_sinco_codes <- as.character(c(odd_nota$...1, odd_no_correspond$...1))
+orphan_isco_codes <- c("5152", # Supervisors of housework, same as workers
+ "5410", # Supervisors of protective service workers (psw) as psw
+ "6100", # Agro/fish supervisor as market ag workers
+ "6200", # Fish/aquaculture supervisor as market forest, fish
+ "7200", # Metalwork supervisors as metalworkers
+ "", # Don't have a good one, should be few people
+ "7510", # Food process (fp) supervisors as fp workers
+ "7310", # Handicraft supervisors as handicraft
+ "", # Don't have a good one, should be few people
+ "1100", # Other presidents, CEO as Chie Executives
+ "1300", # Public utilities Managers as Production Managers
+ "1300", # Coordinator public utilities as Production Managers
+ "1300", # Other coordinators as Production Managers
+ "1300", # Other coordinators in ITC PM
+ "", # Other directors, no code, should be few
+ "2654", # Set designers
+ "2300", # Alphabetisers as teachers
+ "2300", # Bilingual (indigenous) teacher as teacher
+ "2300", # Other teachers n.e.c. as teacher
+ "2200", # Biomedical engineers as health professionals
+ "", # Don't have a good one, should be few people
+ "3130", # Electrical technician supervisors as process control techs
+ "7400", # Electrical tecs n.e.c.as Eletrical Workers
+ "5312", # Auxiliary teaching as teachers' aides
+ "", # Too vague
+ "", # Too vague
+ "5249", # Mobile goods rental as sales n.e.c. (example is rental salesperson)
+ "5200", # Other sales workers as generic sales workers
+ "6100", # Other ag workers as market ag workers
+ "6100", # Other ag workers as market ag workers
+ "6100", # Other ag workers as market ag workers
+ "6200", # Other fish sector workers as market fishery
+ "6200", # Other fishery, water workers as market fishery
+ "", # Too vague
+ "8300", # Other drivers as drivers, mobile plant operators
+ "9100", # Car handler on tips as cleaners and helpers
+ "", # Unclear
+ "") # Too vague
+
+orphan_df <- data.frame(sinco = orphan_sinco_codes, isco = orphan_isco_codes, match = 999) %>%
+ filter(isco != "")
+
+#=========================================================================#
+# Step 8 - Combine manual, save -------------------------------------------
+#=========================================================================#
+
+concord <- bind_rows(concord, orphan_df)
+
write_dta(concord, path_out)