Este va a ser mi espacio para mi cuarta gráfica.
Utilizamos la ENOE
El objetivo es describir el comportamiento de los ocupados por género.
\(y=mx+b\)
| CONEVAL | Mes |
|---|---|
| Enero | 1 |
| Febrero | 2 |
| Marzo | 3 |
#1. Cargar librerias -----
# Lista de paqetes a utilizar
paquetes=c("scales","survey","ggsurvey","forcats","haven","readxl","readxl","fastDummies","readr", "dplyr", "foreign", "tidyr", "ggplot2", "writexl","openxlsx","gridExtra")
?require
# Verificar e instalar paquetes faltantes
for (i in paquetes) {
if (!require(i, character.only = TRUE)) {
install.packages(i);library(i, character.only = TRUE)
} else {
library(i, character.only = TRUE)
}
}
#2. Directorio de trabajo ----
setwd("~/Curso_R")
enoe=read_dta("ENOE_SDEMT423.dta")
# Variable filtro
enoe <- enoe %>%
mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)
# r_def == 0, quiere decir que es cuestionario completo. En el caso del reango de edad, se toma en consideración la edad legal desde que empiezan a trabajar las personas. El número 99 es código de quien no responde. C_re == 1 residente y c_res == 3 (nuevo residente)
# Los %>% o pipes, nos ayudan a pegar código. Sale con control + shift + M. En el código se le dice toma la base de la ENOE, el mutate nos deja modificar los datos (agregar variables o modificar alguna al interior). En este caso agregaré la variable f (de filtro), y será una variable binaria. SI las condiciones se cumplen, agrega el número 1. Si no se cumplen, agrega 0.
enoe=enoe %>% filter(f==1)
#Estamos seleccionando a la población que nos interesa. Me quedo con los que cumplen con esa condición.
#3. Preparar datos ----
#3.1 Subconjuntos de datos ----
# CLASE2=Condicion de ocupacion
# Codigos: 1=Ocupado, 2=Desocupado, 3=Disponible, 4=No disponible
# Convertir la variable a dato numerico
enoe$clase2=as.numeric(enoe$clase2)
# Filtrar la base, necesitamos a los ocupados CLASE2=1
ocupados=enoe%>%filter(clase2==1) #registro de personas que declararon estar ocupadas en la semana de referencia.
#3.2 Etiquetado de variables ----
# Codigos: 1=Hombre, 2=Mujer
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
#Ejercicio: en este caso se graficarán las personas por el grado de estudios.
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
ocupados$cs_p13_1=as.numeric(ocupados$cs_p13_1)
ocupados_ejercicio <- ocupados %>%
mutate(cs_p13_1 = fct_recode(factor(cs_p13_1),
"Ninguna" = "0",
"Preescolar" = "1",
"Primaria" = "2",
"Secundaria" = "3",
"Preparatoria" = "4",
"Normal" = "5",
"Carrera técnica" = "6",
"Licenciatura" = "7",
"Maestría" = "8",
"Doctorado" = "9",
"No sabe" = "99",
))
# pos_ocu=Posicion en la ocupacion
# Codigos: 1=Suborninado, 2=Independiente, 3=Disponible, 0=No aplica
ocupados <- ocupados %>%
mutate(pos_ocu = fct_recode(factor(pos_ocu),
"No Aplica" = "0",
"Subordinado" = "1",
"Empleadores" = "2",
"Cuenta propia" = "3",
"Sin pago" = "4"))
#
# NOTA:
# Estamos recodificando en la misma
# variable, entonces se pierden los
# valores originales.
#
names(enoe)
## [1] "r_def" "loc" "mun" "est" "est_d_tri"
## [6] "est_d_men" "ageb" "t_loc_tri" "t_loc_men" "cd_a"
## [11] "ent" "con" "upm" "d_sem" "n_pro_viv"
## [16] "v_sel" "n_hog" "h_mud" "n_ent" "per"
## [21] "n_ren" "c_res" "par_c" "sex" "eda"
## [26] "nac_dia" "nac_mes" "nac_anio" "l_nac_c" "cs_p12"
## [31] "cs_p13_1" "cs_p13_2" "cs_p14_c" "cs_p15" "cs_p16"
## [36] "cs_p17" "n_hij" "e_con" "cs_p20a_1" "cs_p20a_c"
## [41] "cs_p20b_1" "cs_p20b_c" "cs_p20c_1" "cs_ad_mot" "cs_p21_des"
## [46] "cs_ad_des" "cs_nr_mot" "cs_p23_des" "cs_nr_ori" "ur"
## [51] "zona" "salario" "fac_tri" "fac_men" "clase1"
## [56] "clase2" "clase3" "pos_ocu" "seg_soc" "rama"
## [61] "c_ocu11c" "ing7c" "dur9c" "emple7c" "medica5c"
## [66] "buscar5c" "rama_est1" "rama_est2" "dur_est" "ambito1"
## [71] "ambito2" "tue1" "tue2" "tue3" "busqueda"
## [76] "d_ant_lab" "d_cexp_est" "dur_des" "sub_o" "s_clasifi"
## [81] "remune2c" "pre_asa" "tip_con" "dispo" "nodispo"
## [86] "c_inac5c" "pnea_est" "niv_ins" "eda5c" "eda7c"
## [91] "eda12c" "eda19c" "hij5c" "domestico" "anios_esc"
## [96] "hrsocup" "ingocup" "ing_x_hrs" "tpg_p8a" "tcco"
## [101] "cp_anoc" "imssissste" "ma48me1sm" "p14apoyos" "scian"
## [106] "t_tra" "emp_ppal" "tue_ppal" "trans_ppal" "mh_fil2"
## [111] "mh_col" "sec_ins" "tipo" "mes_cal" "f"
glimpse(enoe)
## Rows: 323,118
## Columns: 115
## $ r_def <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ loc <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ mun <dbl> 10, 13, 5, 7, 5, 14, 13, 7, 7, 7, 2, 14, 14, 11, 11, 13, 12…
## $ est <dbl> 30, 30, 20, 30, 20, 30, 30, 20, 20, 20, 20, 40, 30, 30, 20,…
## $ est_d_tri <dbl> 124, 124, 123, 124, 123, 124, 124, 123, 123, 123, 123, 125,…
## $ est_d_men <dbl> NA, NA, NA, NA, 115, 116, 116, 115, 115, 115, 115, 117, 116…
## $ ageb <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ t_loc_tri <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1…
## $ t_loc_men <dbl+lbl> NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cd_a <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ ent <dbl+lbl> 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9…
## $ con <dbl> 40002, 40013, 40032, 40035, 40071, 40081, 40085, 40087, 400…
## $ upm <dbl> 912033, 915488, 902860, 909615, 905080, 916744, 915917, 908…
## $ d_sem <dbl+lbl> 101, 201, 401, 401, 302, 402, 405, 402, 402, 402, 203, …
## $ n_pro_viv <dbl> 76, 54, 85, 36, 100, 114, 15, 61, 61, 61, 121, 20, 5, 129, …
## $ v_sel <dbl+lbl> 4, 3, 5, 4, 3, 2, 5, 5, 5, 5, 4, 4, 1, 5, 2, 3, 4, 4, 1…
## $ n_hog <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ h_mud <dbl+lbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ n_ent <dbl+lbl> 5, 4, 2, 2, 3, 2, 2, 2, 2, 2, 4, 3, 3, 1, 4, 4, 3, 1, 2…
## $ per <dbl+lbl> 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, …
## $ n_ren <dbl+lbl> 3, 1, 1, 4, 1, 1, 2, 1, 2, 6, 5, 1, 2, 1, 4, 1, 2, 1, 1…
## $ c_res <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ par_c <dbl> 401, 101, 101, 408, 101, 101, 301, 101, 201, 301, 408, 101,…
## $ sex <dbl+lbl> 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 2…
## $ eda <dbl> 93, 67, 43, 27, 53, 70, 33, 34, 35, 15, 17, 45, 65, 61, 34,…
## $ nac_dia <dbl+lbl> 10, 1, 15, 2, 6, 29, 15, 28, 25, 21, 23, 21, 26, 10,…
## $ nac_mes <dbl+lbl> 2, 9, 6, 7, 10, 11, 11, 3, 2, 1, 8, 9, 1, 3,…
## $ nac_anio <dbl> 1930, 1956, 1980, 1996, 1970, 1952, 1989, 1989, 1988, 2008,…
## $ l_nac_c <dbl+lbl> 21, 13, 9, 9, 9, 9, 9, 9, 21, 21, 9, 9, 15, 12,…
## $ cs_p12 <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ cs_p13_1 <dbl+lbl> 6, 2, 3, 4, 3, 8, 4, 3, 4, 4, 4, 7, 7, 6, 3, 2, 5, 7, 7…
## $ cs_p13_2 <dbl+lbl> 3, 6, 3, 3, 3, 2, 3, 3, 3, 1, 1, 4, 4, 3, 3, 6, 4, 4, 5…
## $ cs_p14_c <chr> " 21600", "", "", "", "", " 31200", "", "", "", "", "", " 3…
## $ cs_p15 <dbl+lbl> 1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3, 3, 2,…
## $ cs_p16 <dbl+lbl> 1, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 1, 1, 1,…
## $ cs_p17 <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2…
## $ n_hij <dbl+lbl> 7, 4, NA, 0, NA, NA, NA, NA, 5, NA, 0, NA, 0, 1,…
## $ e_con <dbl+lbl> 4, 2, 5, 6, 5, 5, 6, 5, 5, 6, 6, 6, 5, 6, 2, 5, 5, 5, 6…
## $ cs_p20a_1 <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cs_p20a_c <dbl> 9, 9, 9, 9, 9, 9, 9, 21, 21, 21, 9, 9, 9, 9, 9, 9, 9, 9, 9,…
## $ cs_p20b_1 <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cs_p20b_c <dbl> 10, 13, 5, 7, 5, 14, 13, 71, 71, 71, 2, 14, 14, 11, 11, 13,…
## $ cs_p20c_1 <dbl> NA, NA, NA, NA, NA, NA, NA, 1, 3, 3, NA, NA, NA, NA, NA, NA…
## $ cs_ad_mot <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_p21_des <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",…
## $ cs_ad_des <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_nr_mot <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_p23_des <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",…
## $ cs_nr_ori <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ur <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ zona <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ salario <dbl> 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223,…
## $ fac_tri <dbl> 1058, 1109, 907, 896, 419, 578, 687, 853, 853, 853, 1025, 2…
## $ fac_men <dbl> 0, 0, 0, 0, 1154, 1945, 2312, 2568, 2568, 2568, 3080, 6477,…
## $ clase1 <dbl+lbl> 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1…
## $ clase2 <dbl> 4, 1, 1, 1, 1, 4, 1, 1, 4, 4, 4, 1, 4, 1, 1, 1, 4, 1, 1, 4,…
## $ clase3 <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1…
## $ pos_ocu <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 3, 0, 1, 3, 3, 0, 3, 2…
## $ seg_soc <dbl+lbl> 0, 1, 2, 1, 1, 0, 1, 2, 0, 0, 0, 2, 0, 1, 2, 2, 0, 2, 2…
## $ rama <dbl+lbl> 0, 4, 3, 4, 4, 0, 4, 3, 0, 0, 0, 3, 0, 4, 4, 1, 0, 6, 4…
## $ c_ocu11c <dbl+lbl> 0, 8, 6, 4, 5, 0, 5, 10, 0, 0, 0, 6, 0, 1,…
## $ ing7c <dbl+lbl> 0, 2, 4, 2, 1, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 7, 2…
## $ dur9c <dbl+lbl> 0, 6, 6, 6, 6, 0, 7, 7, 0, 0, 0, 5, 0, 5, 8, 6, 0, 2, 7…
## $ emple7c <dbl+lbl> 0, 5, 2, 7, 6, 0, 4, 2, 0, 0, 0, 1, 0, 6, 1, 1, 0, 1, 2…
## $ medica5c <dbl+lbl> 0, 3, 4, 3, 3, 0, 3, 4, 0, 0, 0, 1, 0, 3, 1, 1, 0, 1, 1…
## $ buscar5c <dbl+lbl> 0, 4, 4, 4, 4, 0, 4, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 2, 4…
## $ rama_est1 <dbl+lbl> 0, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 3, 0, 3, 3, 2, 0, 1, 3…
## $ rama_est2 <dbl+lbl> 0, 10, 5, 8, 11, 0, 8, 5, 0, 0, 0, 5, 0, 11,…
## $ dur_est <dbl+lbl> 0, 4, 4, 4, 4, 0, 5, 5, 0, 0, 0, 4, 0, 4, 5, 4, 0, 2, 5…
## $ ambito1 <dbl+lbl> 0, 2, 2, 3, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 1, 2…
## $ ambito2 <dbl+lbl> 0, 4, 3, 0, 7, 0, 4, 3, 0, 0, 0, 2, 0, 7, 2, 2, 0, 0, 3…
## $ tue1 <dbl+lbl> 0, 2, 1, 1, 2, 0, 1, 3, 0, 0, 0, 3, 0, 2, 1, 3, 0, 1, 1…
## $ tue2 <dbl+lbl> 0, 3, 2, 1, 4, 0, 1, 5, 0, 0, 0, 5, 0, 4, 2, 5, 0, 2, 1…
## $ tue3 <dbl+lbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ busqueda <dbl+lbl> 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2…
## $ d_ant_lab <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ d_cexp_est <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ dur_des <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ sub_o <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ s_clasifi <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0…
## $ remune2c <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ pre_asa <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ tip_con <dbl+lbl> 0, 3, 5, 3, 3, 0, 2, 5, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0…
## $ dispo <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ nodispo <dbl+lbl> 3, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0…
## $ c_inac5c <dbl+lbl> 5, 0, 0, 0, 0, 3, 0, 0, 2, 1, 1, 0, 3, 0, 0, 0, 3, 0, 0…
## $ pnea_est <dbl+lbl> 6, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0…
## $ niv_ins <dbl+lbl> 2, 2, 3, 4, 3, 4, 4, 3, 4, 3, 3, 4, 4, 3, 3, 2, 3, 4, 4…
## $ eda5c <dbl+lbl> 4, 4, 2, 2, 3, 4, 2, 2, 2, 1, 1, 3, 4, 3, 2, 3, 4, 3, 2…
## $ eda7c <dbl+lbl> 6, 6, 4, 2, 5, 6, 3, 3, 3, 1, 1, 4, 6, 6, 3, 4, 6, 4, 3…
## $ eda12c <dbl+lbl> 11, 11, 6, 3, 8, 11, 4, 4, 5, 1, 1, 7, 11, 10,…
## $ eda19c <dbl+lbl> 18, 16, 11, 8, 13, 17, 9, 9, 10, 6, 6, 12, 16, 15,…
## $ hij5c <dbl+lbl> 4, 3, 0, 1, 0, 0, 0, 0, 3, 0, 1, 0, 1, 2, 0, 0, 3, 0, 1…
## $ domestico <dbl+lbl> 6, 3, 4, 3, 3, 8, 4, 4, 8, 7, 7, 3, 8, 3, 3, 3, 9, 3, 3…
## $ anios_esc <dbl> 9, 6, 9, 12, 9, 18, 12, 9, 12, 10, 10, 16, 16, 12, 9, 6, 13…
## $ hrsocup <dbl> 0, 45, 48, 44, 40, 0, 54, 56, 0, 0, 0, 36, 0, 35, 70, 40, 0…
## $ ingocup <dbl> 0, 0, 20000, 0, 6000, 0, 12000, 12040, 0, 0, 0, 8600, 0, 10…
## $ ing_x_hrs <dbl> 0.00000, 0.00000, 96.89922, 0.00000, 34.88372, 0.00000, 51.…
## $ tpg_p8a <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ tcco <dbl+lbl> 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3…
## $ cp_anoc <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0…
## $ imssissste <dbl+lbl> 0, 1, 4, 1, 2, 0, 1, 4, 0, 0, 0, 4, 0, 2, 4, 4, 0, 4, 4…
## $ ma48me1sm <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p14apoyos <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ scian <dbl+lbl> 0, 19, 7, 14, 20, 0, 14, 7, 0, 0, 0, 7, 0, 20,…
## $ t_tra <dbl+lbl> 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ emp_ppal <dbl+lbl> 0, 2, 1, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 2, 2, 1, 0, 1, 2…
## $ tue_ppal <dbl+lbl> 0, 2, 2, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 2, 2, 1, 0, 2, 2…
## $ trans_ppal <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ mh_fil2 <dbl+lbl> 0, 3, 3, 3, 3, 0, 3, 1, 0, 0, 0, 1, 0, 3, 3, 1, 0, 4, 3…
## $ mh_col <dbl+lbl> 0, 2, 1, 2, 2, 0, 2, 1, 0, 0, 0, 7, 0, 2, 8, 7, 0, 7, 6…
## $ sec_ins <dbl+lbl> 0, 6, 4, 2, 5, 0, 2, 8, 0, 0, 0, 8, 0, 5, 4, 8, 0, 3, 2…
## $ tipo <dbl+lbl> 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1…
## $ mes_cal <dbl+lbl> 99, 99, 99, 99, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,…
## $ f <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…
#4. Graficas (ggplot) ------
#4.1 Con 1 variable discreta
class(ocupados$sex)
## [1] "factor"
# Gráfico = Datos + Estética + Geometría.
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill ="dodgerblue3")
ggplot(ocupados) + aes(sex) + geom_bar(fill = "yellowgreen")
#va por capas, primero la base de datos, luego la estética (qué buscamos), y cerramos con la geometría.
# Gráfico = Datos + Estética + Geometría + Etiquetas
ggplot(ocupados) + aes(sex) + geom_bar(fill="yellowgreen") +
xlab("Sexo") + ylab("Personas") + ggtitle("Total de mujeres y hombres ocupados")
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill="dodgerblue3") +
xlab("Escolaridad") + ylab("Personas") + ggtitle("Grado de escolaridad de las personas ocupadas")
# Gráfico = Datos + Estética + Geometría + Etiquetas + Ajustes
ggplot(ocupados) + aes(sex) + geom_bar(fill="yellowgreen") +
xlab("Sexo") + ylab("Personas") + ggtitle("Total de mujeres y hombres ocupados")+
geom_text(aes(label = scales::comma(..count..)), stat = 'count', # Añade el número con comas
position = position_dodge(0.5), vjust = -0.5, size = 3.5) + # Ajusta la posición del texto moviéndolo ligeramente y ajustando su posición vertical
theme_minimal(base_size = 14) + # Ajusta la configuración del gráfico
theme(plot.title = element_text(hjust = 0.5)) # Centrar el título horizontalmente
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill="dodgerblue3") +
xlab("Escolaridad") + ylab("Personas") + ggtitle("Grado de escolaridad de la población de 15 años y más ocupada en 2024")+
geom_text(aes(label = scales::comma(..count..)), stat = 'count', # Añade el número con comas
position = position_dodge(0.5), vjust = -0.5, size = 3.5) + # Ajusta la posición del texto moviéndolo ligeramente y ajustando su posición vertical
theme_minimal(base_size = 14) + # Ajusta la configuración del gráfico
theme(plot.title = element_text(hjust = 0.5), # Centrar el título horizontalmente
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))
ggplot(ocupados, aes(x = sex, y = ..prop.. * 100, group = 1)) +
geom_bar(aes(fill = sex), position = "dodge", stat = "count") + # Crea barras con porcentajes
geom_text(aes(label = scales::percent(..prop..)), stat = 'count', # Ajusta el número mostrado arriba de las barras
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Sexo", y = "Porcentaje", title = "Porcentaje de mujeres y hombres ocuadas",
caption = "Nota: población de 15 años y más.\nElaborado por el CONEVAL.\nFuente: ENOE cuarto trimestre 2023") + # Añade la fuente y nota como pie de página
theme_minimal(base_size = 14) +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título horizontalmente
plot.caption = element_text(hjust = 0, size = 9)) + # Ajustes de estilo para la nota de fuente y la nota explicativa
scale_y_continuous(labels = scales::percent_format(scale = 1)) # Formatear el eje y como porcentaje
ggplot(ocupados_ejercicio, aes(x = cs_p13_1, y = ..prop..*100, group = 1)) +
geom_bar(aes(fill = cs_p13_1), position = "dodge", stat = "count") +
geom_text(aes(label = scales::percent(..prop..)), stat = 'count',
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Escolaridad", y = "Porcentaje", title = "Gráfica 2. Porcentaje de población ocupada de 15 años y más por grado de escolaridad en 2024.", caption = "Fuente: elaborado por el CONEVAL con información del INEGI (2024a)") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
#4.2 Con 2 variables discretas
# Ahora vamos a guardar la definición de la base de datos y la variable en un elemento llamado g1
g1<-ggplot(ocupados) + aes(pos_ocu) # Base de datos y variable
g1
class(ocupados$pos_ocu)
## [1] "factor"
# Ya no vamos a repetir la definición, solo vamos a usar g1
# Opción 1: Pantalla dividida
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
# facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# agregar más detalles
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+ # facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
geom_text(aes(label=..count..), stat='count',
position=position_dodge(0.5),
vjust=-0.5,
size=3.5)
ggplot(ocupados_ejercicio, aes(x = cs_p13_1, y = ..prop..*100, group = 1)) +
geom_bar(aes(fill = cs_p13_1), position = "dodge", stat = "count") +
geom_text(aes(label = scales::percent(..prop..)), stat = 'count',
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Escolaridad", y = "Porcentaje", title = "Gráfica 2. Porcentaje de población ocupada de 15 años y más por grado de escolaridad en 2024.", caption = "Fuente: elaborado por el CONEVAL con información del INEGI (2024a)") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Opción 2: Separa las barras
g2<-ggplot(ocupados,aes(x=pos_ocu,fill=sex)) # Base de datos y variable
g2
g2+geom_bar(position = "dodge")+
ggtitle("Gráfica 3. Ocupacion por sexo en el 1er trimestre de 2024")+ # position ajusta la posicion de las barras
xlab("Posicion de la ocupacion")+
ylab("Personas")+
labs(caption = "Fuente: elaborado por el CONEVAL por información del INEGI (2024)")+
scale_fill_brewer(palette = "Blues")+
scale_y_continuous(labels = scales::comma)+
theme_classic(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9))
# agregar más detalles
g2+geom_bar(position = "dodge", stat = "count") + # Barras con posición dodge y contando las ocurrencias
geom_text(aes(label = scales::comma(..count..)), stat = "count", position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) + # Añade etiquetas numeradas con comas
ggtitle("Ocupación por Sexo") + # Título del gráfico
xlab("Posición de la Ocupación") + # Etiqueta del eje X
ylab("Personas") + # Etiqueta del eje Y
scale_fill_brewer(palette = "Blues", name = "Sexo")
# Opción 3: Apila los elementos uno encima del otro
# Variable filtro
enoe <- enoe %>%
mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)
# r_def == 0, quiere decir que es cuestionario completo. En el caso del reango de edad, se toma en consideración la edad legal desde que empiezan a trabajar las personas. El número 99 es código de quien no responde. C_re == 1 residente y c_res == 3 (nuevo residente)
# Los %>% o pipes, nos ayudan a pegar código. Sale con control + shift + M. En el código se le dice toma la base de la ENOE, el mutate nos deja modificar los datos (agregar variables o modificar alguna al interior). En este caso agregaré la variable f (de filtro), y será una variable binaria. SI las condiciones se cumplen, agrega el número 1. Si no se cumplen, agrega 0.
enoe=enoe %>% filter(f==1)
#Estamos seleccionando a la población que nos interesa. Me quedo con los que cumplen con esa condición.
#3. Preparar datos ----
#3.1 Subconjuntos de datos ----
# CLASE2=Condicion de ocupacion
# Codigos: 1=Ocupado, 2=Desocupado, 3=Disponible, 4=No disponible
# Convertir la variable a dato numerico
enoe$clase2=as.numeric(enoe$clase2)
# Filtrar la base, necesitamos a los ocupados CLASE2=1
ocupados=enoe%>%filter(clase2==1) #registro de personas que declararon estar ocupadas en la semana de referencia.
#3.2 Etiquetado de variables ----
# Codigos: 1=Hombre, 2=Mujer
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
#Ejercicio: en este caso se graficarán las personas por el grado de estudios.
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
ocupados$cs_p13_1=as.numeric(ocupados$cs_p13_1)
ocupados_ejercicio <- ocupados %>%
mutate(cs_p13_1 = fct_recode(factor(cs_p13_1),
"Ninguna" = "0",
"Preescolar" = "1",
"Primaria" = "2",
"Secundaria" = "3",
"Preparatoria" = "4",
"Normal" = "5",
"Carrera técnica" = "6",
"Licenciatura" = "7",
"Maestría" = "8",
"Doctorado" = "9",
"No sabe" = "99",
))
# pos_ocu=Posicion en la ocupacion
# Codigos: 1=Suborninado, 2=Independiente, 3=Disponible, 0=No aplica
ocupados <- ocupados %>%
mutate(pos_ocu = fct_recode(factor(pos_ocu),
"No Aplica" = "0",
"Subordinado" = "1",
"Empleadores" = "2",
"Cuenta propia" = "3",
"Sin pago" = "4"))
#
# NOTA:
# Estamos recodificando en la misma
# variable, entonces se pierden los
# valores originales.
#
names(enoe)
## [1] "r_def" "loc" "mun" "est" "est_d_tri"
## [6] "est_d_men" "ageb" "t_loc_tri" "t_loc_men" "cd_a"
## [11] "ent" "con" "upm" "d_sem" "n_pro_viv"
## [16] "v_sel" "n_hog" "h_mud" "n_ent" "per"
## [21] "n_ren" "c_res" "par_c" "sex" "eda"
## [26] "nac_dia" "nac_mes" "nac_anio" "l_nac_c" "cs_p12"
## [31] "cs_p13_1" "cs_p13_2" "cs_p14_c" "cs_p15" "cs_p16"
## [36] "cs_p17" "n_hij" "e_con" "cs_p20a_1" "cs_p20a_c"
## [41] "cs_p20b_1" "cs_p20b_c" "cs_p20c_1" "cs_ad_mot" "cs_p21_des"
## [46] "cs_ad_des" "cs_nr_mot" "cs_p23_des" "cs_nr_ori" "ur"
## [51] "zona" "salario" "fac_tri" "fac_men" "clase1"
## [56] "clase2" "clase3" "pos_ocu" "seg_soc" "rama"
## [61] "c_ocu11c" "ing7c" "dur9c" "emple7c" "medica5c"
## [66] "buscar5c" "rama_est1" "rama_est2" "dur_est" "ambito1"
## [71] "ambito2" "tue1" "tue2" "tue3" "busqueda"
## [76] "d_ant_lab" "d_cexp_est" "dur_des" "sub_o" "s_clasifi"
## [81] "remune2c" "pre_asa" "tip_con" "dispo" "nodispo"
## [86] "c_inac5c" "pnea_est" "niv_ins" "eda5c" "eda7c"
## [91] "eda12c" "eda19c" "hij5c" "domestico" "anios_esc"
## [96] "hrsocup" "ingocup" "ing_x_hrs" "tpg_p8a" "tcco"
## [101] "cp_anoc" "imssissste" "ma48me1sm" "p14apoyos" "scian"
## [106] "t_tra" "emp_ppal" "tue_ppal" "trans_ppal" "mh_fil2"
## [111] "mh_col" "sec_ins" "tipo" "mes_cal" "f"
glimpse(enoe)
## Rows: 323,118
## Columns: 115
## $ r_def <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ loc <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ mun <dbl> 10, 13, 5, 7, 5, 14, 13, 7, 7, 7, 2, 14, 14, 11, 11, 13, 12…
## $ est <dbl> 30, 30, 20, 30, 20, 30, 30, 20, 20, 20, 20, 40, 30, 30, 20,…
## $ est_d_tri <dbl> 124, 124, 123, 124, 123, 124, 124, 123, 123, 123, 123, 125,…
## $ est_d_men <dbl> NA, NA, NA, NA, 115, 116, 116, 115, 115, 115, 115, 117, 116…
## $ ageb <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ t_loc_tri <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1…
## $ t_loc_men <dbl+lbl> NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cd_a <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ ent <dbl+lbl> 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9…
## $ con <dbl> 40002, 40013, 40032, 40035, 40071, 40081, 40085, 40087, 400…
## $ upm <dbl> 912033, 915488, 902860, 909615, 905080, 916744, 915917, 908…
## $ d_sem <dbl+lbl> 101, 201, 401, 401, 302, 402, 405, 402, 402, 402, 203, …
## $ n_pro_viv <dbl> 76, 54, 85, 36, 100, 114, 15, 61, 61, 61, 121, 20, 5, 129, …
## $ v_sel <dbl+lbl> 4, 3, 5, 4, 3, 2, 5, 5, 5, 5, 4, 4, 1, 5, 2, 3, 4, 4, 1…
## $ n_hog <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ h_mud <dbl+lbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ n_ent <dbl+lbl> 5, 4, 2, 2, 3, 2, 2, 2, 2, 2, 4, 3, 3, 1, 4, 4, 3, 1, 2…
## $ per <dbl+lbl> 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, …
## $ n_ren <dbl+lbl> 3, 1, 1, 4, 1, 1, 2, 1, 2, 6, 5, 1, 2, 1, 4, 1, 2, 1, 1…
## $ c_res <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ par_c <dbl> 401, 101, 101, 408, 101, 101, 301, 101, 201, 301, 408, 101,…
## $ sex <dbl+lbl> 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 2…
## $ eda <dbl> 93, 67, 43, 27, 53, 70, 33, 34, 35, 15, 17, 45, 65, 61, 34,…
## $ nac_dia <dbl+lbl> 10, 1, 15, 2, 6, 29, 15, 28, 25, 21, 23, 21, 26, 10,…
## $ nac_mes <dbl+lbl> 2, 9, 6, 7, 10, 11, 11, 3, 2, 1, 8, 9, 1, 3,…
## $ nac_anio <dbl> 1930, 1956, 1980, 1996, 1970, 1952, 1989, 1989, 1988, 2008,…
## $ l_nac_c <dbl+lbl> 21, 13, 9, 9, 9, 9, 9, 9, 21, 21, 9, 9, 15, 12,…
## $ cs_p12 <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ cs_p13_1 <dbl+lbl> 6, 2, 3, 4, 3, 8, 4, 3, 4, 4, 4, 7, 7, 6, 3, 2, 5, 7, 7…
## $ cs_p13_2 <dbl+lbl> 3, 6, 3, 3, 3, 2, 3, 3, 3, 1, 1, 4, 4, 3, 3, 6, 4, 4, 5…
## $ cs_p14_c <chr> " 21600", "", "", "", "", " 31200", "", "", "", "", "", " 3…
## $ cs_p15 <dbl+lbl> 1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3, 3, 2,…
## $ cs_p16 <dbl+lbl> 1, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, 1, 1, 1,…
## $ cs_p17 <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2…
## $ n_hij <dbl+lbl> 7, 4, NA, 0, NA, NA, NA, NA, 5, NA, 0, NA, 0, 1,…
## $ e_con <dbl+lbl> 4, 2, 5, 6, 5, 5, 6, 5, 5, 6, 6, 6, 5, 6, 2, 5, 5, 5, 6…
## $ cs_p20a_1 <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cs_p20a_c <dbl> 9, 9, 9, 9, 9, 9, 9, 21, 21, 21, 9, 9, 9, 9, 9, 9, 9, 9, 9,…
## $ cs_p20b_1 <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ cs_p20b_c <dbl> 10, 13, 5, 7, 5, 14, 13, 71, 71, 71, 2, 14, 14, 11, 11, 13,…
## $ cs_p20c_1 <dbl> NA, NA, NA, NA, NA, NA, NA, 1, 3, 3, NA, NA, NA, NA, NA, NA…
## $ cs_ad_mot <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_p21_des <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",…
## $ cs_ad_des <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_nr_mot <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ cs_p23_des <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",…
## $ cs_nr_ori <dbl+lbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ ur <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ zona <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ salario <dbl> 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223,…
## $ fac_tri <dbl> 1058, 1109, 907, 896, 419, 578, 687, 853, 853, 853, 1025, 2…
## $ fac_men <dbl> 0, 0, 0, 0, 1154, 1945, 2312, 2568, 2568, 2568, 3080, 6477,…
## $ clase1 <dbl+lbl> 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1…
## $ clase2 <dbl> 4, 1, 1, 1, 1, 4, 1, 1, 4, 4, 4, 1, 4, 1, 1, 1, 4, 1, 1, 4,…
## $ clase3 <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1…
## $ pos_ocu <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 3, 0, 1, 3, 3, 0, 3, 2…
## $ seg_soc <dbl+lbl> 0, 1, 2, 1, 1, 0, 1, 2, 0, 0, 0, 2, 0, 1, 2, 2, 0, 2, 2…
## $ rama <dbl+lbl> 0, 4, 3, 4, 4, 0, 4, 3, 0, 0, 0, 3, 0, 4, 4, 1, 0, 6, 4…
## $ c_ocu11c <dbl+lbl> 0, 8, 6, 4, 5, 0, 5, 10, 0, 0, 0, 6, 0, 1,…
## $ ing7c <dbl+lbl> 0, 2, 4, 2, 1, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 7, 2…
## $ dur9c <dbl+lbl> 0, 6, 6, 6, 6, 0, 7, 7, 0, 0, 0, 5, 0, 5, 8, 6, 0, 2, 7…
## $ emple7c <dbl+lbl> 0, 5, 2, 7, 6, 0, 4, 2, 0, 0, 0, 1, 0, 6, 1, 1, 0, 1, 2…
## $ medica5c <dbl+lbl> 0, 3, 4, 3, 3, 0, 3, 4, 0, 0, 0, 1, 0, 3, 1, 1, 0, 1, 1…
## $ buscar5c <dbl+lbl> 0, 4, 4, 4, 4, 0, 4, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 2, 4…
## $ rama_est1 <dbl+lbl> 0, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 3, 0, 3, 3, 2, 0, 1, 3…
## $ rama_est2 <dbl+lbl> 0, 10, 5, 8, 11, 0, 8, 5, 0, 0, 0, 5, 0, 11,…
## $ dur_est <dbl+lbl> 0, 4, 4, 4, 4, 0, 5, 5, 0, 0, 0, 4, 0, 4, 5, 4, 0, 2, 5…
## $ ambito1 <dbl+lbl> 0, 2, 2, 3, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 1, 2…
## $ ambito2 <dbl+lbl> 0, 4, 3, 0, 7, 0, 4, 3, 0, 0, 0, 2, 0, 7, 2, 2, 0, 0, 3…
## $ tue1 <dbl+lbl> 0, 2, 1, 1, 2, 0, 1, 3, 0, 0, 0, 3, 0, 2, 1, 3, 0, 1, 1…
## $ tue2 <dbl+lbl> 0, 3, 2, 1, 4, 0, 1, 5, 0, 0, 0, 5, 0, 4, 2, 5, 0, 2, 1…
## $ tue3 <dbl+lbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ busqueda <dbl+lbl> 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2…
## $ d_ant_lab <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ d_cexp_est <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ dur_des <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ sub_o <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ s_clasifi <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0…
## $ remune2c <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ pre_asa <dbl+lbl> 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0…
## $ tip_con <dbl+lbl> 0, 3, 5, 3, 3, 0, 2, 5, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0…
## $ dispo <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ nodispo <dbl+lbl> 3, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 0, 3, 0, 0, 0, 3, 0, 0…
## $ c_inac5c <dbl+lbl> 5, 0, 0, 0, 0, 3, 0, 0, 2, 1, 1, 0, 3, 0, 0, 0, 3, 0, 0…
## $ pnea_est <dbl+lbl> 6, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0…
## $ niv_ins <dbl+lbl> 2, 2, 3, 4, 3, 4, 4, 3, 4, 3, 3, 4, 4, 3, 3, 2, 3, 4, 4…
## $ eda5c <dbl+lbl> 4, 4, 2, 2, 3, 4, 2, 2, 2, 1, 1, 3, 4, 3, 2, 3, 4, 3, 2…
## $ eda7c <dbl+lbl> 6, 6, 4, 2, 5, 6, 3, 3, 3, 1, 1, 4, 6, 6, 3, 4, 6, 4, 3…
## $ eda12c <dbl+lbl> 11, 11, 6, 3, 8, 11, 4, 4, 5, 1, 1, 7, 11, 10,…
## $ eda19c <dbl+lbl> 18, 16, 11, 8, 13, 17, 9, 9, 10, 6, 6, 12, 16, 15,…
## $ hij5c <dbl+lbl> 4, 3, 0, 1, 0, 0, 0, 0, 3, 0, 1, 0, 1, 2, 0, 0, 3, 0, 1…
## $ domestico <dbl+lbl> 6, 3, 4, 3, 3, 8, 4, 4, 8, 7, 7, 3, 8, 3, 3, 3, 9, 3, 3…
## $ anios_esc <dbl> 9, 6, 9, 12, 9, 18, 12, 9, 12, 10, 10, 16, 16, 12, 9, 6, 13…
## $ hrsocup <dbl> 0, 45, 48, 44, 40, 0, 54, 56, 0, 0, 0, 36, 0, 35, 70, 40, 0…
## $ ingocup <dbl> 0, 0, 20000, 0, 6000, 0, 12000, 12040, 0, 0, 0, 8600, 0, 10…
## $ ing_x_hrs <dbl> 0.00000, 0.00000, 96.89922, 0.00000, 34.88372, 0.00000, 51.…
## $ tpg_p8a <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ tcco <dbl+lbl> 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3…
## $ cp_anoc <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0…
## $ imssissste <dbl+lbl> 0, 1, 4, 1, 2, 0, 1, 4, 0, 0, 0, 4, 0, 2, 4, 4, 0, 4, 4…
## $ ma48me1sm <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p14apoyos <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ scian <dbl+lbl> 0, 19, 7, 14, 20, 0, 14, 7, 0, 0, 0, 7, 0, 20,…
## $ t_tra <dbl+lbl> 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ emp_ppal <dbl+lbl> 0, 2, 1, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 2, 2, 1, 0, 1, 2…
## $ tue_ppal <dbl+lbl> 0, 2, 2, 2, 2, 0, 2, 1, 0, 0, 0, 1, 0, 2, 2, 1, 0, 2, 2…
## $ trans_ppal <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ mh_fil2 <dbl+lbl> 0, 3, 3, 3, 3, 0, 3, 1, 0, 0, 0, 1, 0, 3, 3, 1, 0, 4, 3…
## $ mh_col <dbl+lbl> 0, 2, 1, 2, 2, 0, 2, 1, 0, 0, 0, 7, 0, 2, 8, 7, 0, 7, 6…
## $ sec_ins <dbl+lbl> 0, 6, 4, 2, 5, 0, 2, 8, 0, 0, 0, 8, 0, 5, 4, 8, 0, 3, 2…
## $ tipo <dbl+lbl> 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1…
## $ mes_cal <dbl+lbl> 99, 99, 99, 99, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,…
## $ f <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,…
#4. Graficas (ggplot) ------
#4.1 Con 1 variable discreta
class(ocupados$sex)
## [1] "factor"
# Gráfico = Datos + Estética + Geometría.
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill ="dodgerblue3")
ggplot(ocupados) + aes(sex) + geom_bar(fill = "yellowgreen")
#va por capas, primero la base de datos, luego la estética (qué buscamos), y cerramos con la geometría.
# Gráfico = Datos + Estética + Geometría + Etiquetas
ggplot(ocupados) + aes(sex) + geom_bar(fill="yellowgreen") +
xlab("Sexo") + ylab("Personas") + ggtitle("Total de mujeres y hombres ocupados")
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill="dodgerblue3") +
xlab("Escolaridad") + ylab("Personas") + ggtitle("Grado de escolaridad de las personas ocupadas")
# Gráfico = Datos + Estética + Geometría + Etiquetas + Ajustes
ggplot(ocupados) + aes(sex) + geom_bar(fill="yellowgreen") +
xlab("Sexo") + ylab("Personas") + ggtitle("Total de mujeres y hombres ocupados")+
geom_text(aes(label = scales::comma(..count..)), stat = 'count', # Añade el número con comas
position = position_dodge(0.5), vjust = -0.5, size = 3.5) + # Ajusta la posición del texto moviéndolo ligeramente y ajustando su posición vertical
theme_minimal(base_size = 14) + # Ajusta la configuración del gráfico
theme(plot.title = element_text(hjust = 0.5)) # Centrar el título horizontalmente
ggplot(ocupados_ejercicio) + aes(cs_p13_1) + geom_bar(fill="dodgerblue3") +
xlab("Escolaridad") + ylab("Personas") + ggtitle("Grado de escolaridad de la población de 15 años y más ocupada en 2024")+
geom_text(aes(label = scales::comma(..count..)), stat = 'count', # Añade el número con comas
position = position_dodge(0.5), vjust = -0.5, size = 3.5) + # Ajusta la posición del texto moviéndolo ligeramente y ajustando su posición vertical
theme_minimal(base_size = 14) + # Ajusta la configuración del gráfico
theme(plot.title = element_text(hjust = 0.5), # Centrar el título horizontalmente
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))
ggplot(ocupados, aes(x = sex, y = ..prop.. * 100, group = 1)) +
geom_bar(aes(fill = sex), position = "dodge", stat = "count") + # Crea barras con porcentajes
geom_text(aes(label = scales::percent(..prop..)), stat = 'count', # Ajusta el número mostrado arriba de las barras
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Sexo", y = "Porcentaje", title = "Porcentaje de mujeres y hombres ocuadas",
caption = "Nota: población de 15 años y más.\nElaborado por el CONEVAL.\nFuente: ENOE cuarto trimestre 2023") + # Añade la fuente y nota como pie de página
theme_minimal(base_size = 14) +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título horizontalmente
plot.caption = element_text(hjust = 0, size = 9)) + # Ajustes de estilo para la nota de fuente y la nota explicativa
scale_y_continuous(labels = scales::percent_format(scale = 1)) # Formatear el eje y como porcentaje
ggplot(ocupados_ejercicio, aes(x = cs_p13_1, y = ..prop..*100, group = 1)) +
geom_bar(aes(fill = cs_p13_1), position = "dodge", stat = "count") +
geom_text(aes(label = scales::percent(..prop..)), stat = 'count',
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Escolaridad", y = "Porcentaje", title = "Gráfica 2. Porcentaje de población ocupada de 15 años y más por grado de escolaridad en 2024.", caption = "Fuente: elaborado por el CONEVAL con información del INEGI (2024a)") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
#4.2 Con 2 variables discretas
# Ahora vamos a guardar la definición de la base de datos y la variable en un elemento llamado g1
g1<-ggplot(ocupados) + aes(pos_ocu) # Base de datos y variable
g1
class(ocupados$pos_ocu)
## [1] "factor"
# Ya no vamos a repetir la definición, solo vamos a usar g1
# Opción 1: Pantalla dividida
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
# facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# agregar más detalles
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+ # facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
geom_text(aes(label=..count..), stat='count',
position=position_dodge(0.5),
vjust=-0.5,
size=3.5)
ggplot(ocupados_ejercicio, aes(x = cs_p13_1, y = ..prop..*100, group = 1)) +
geom_bar(aes(fill = cs_p13_1), position = "dodge", stat = "count") +
geom_text(aes(label = scales::percent(..prop..)), stat = 'count',
vjust = -0.5, position = position_dodge(0.5), size = 3.5) +
labs(x = "Escolaridad", y = "Porcentaje", title = "Gráfica 2. Porcentaje de población ocupada de 15 años y más por grado de escolaridad en 2024.", caption = "Fuente: elaborado por el CONEVAL con información del INEGI (2024a)") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9)) +
scale_y_continuous(labels = scales::percent_format(scale = 1))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Opción 2: Separa las barras
g2<-ggplot(ocupados,aes(x=pos_ocu,fill=sex)) # Base de datos y variable
g2
g2+geom_bar(position = "dodge")+
ggtitle("Gráfica 3. Ocupacion por sexo en el 1er trimestre de 2024")+ # position ajusta la posicion de las barras
xlab("Posicion de la ocupacion")+
ylab("Personas")+
labs(caption = "Fuente: elaborado por el CONEVAL por información del INEGI (2024)")+
scale_fill_brewer(palette = "Blues")+
scale_y_continuous(labels = scales::comma)+
theme_classic(base_size = 12) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9))
# agregar más detalles
g2+geom_bar(position = "dodge", stat = "count") + # Barras con posición dodge y contando las ocurrencias
geom_text(aes(label = scales::comma(..count..)), stat = "count", position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) + # Añade etiquetas numeradas con comas
ggtitle("Ocupación por Sexo") + # Título del gráfico
xlab("Posición de la Ocupación") + # Etiqueta del eje X
ylab("Personas") + # Etiqueta del eje Y
scale_fill_brewer(palette = "Blues", name = "Sexo")
# Opción 3: Apila los elementos uno encima del otro
# Preparación de los datos para calcular los porcentajes correctos
ocupados_r <- ocupados %>%
group_by(pos_ocu, sex) %>% #agrupar
summarise(count = n(), .groups = 'drop') %>% #contabilizar, y quitar los casos en donde haya missings
group_by(pos_ocu) %>%
mutate(percent = count / sum(count) * 100)
ocupados_tarea <- ocupados %>%
group_by(cs_p13_1, sex) %>%
summarise(count = n(), .groups = 'drop') %>%
group_by(cs_p13_1) %>%
mutate(percent = count / sum(count) *100) %>%
mutate(cs_p13_1 = fct_recode(factor(cs_p13_1),
"Ninguna" = "0",
"Preescolar" = "1",
"Primaria" = "2",
"Secundaria" = "3",
"Preparatoria" = "4",
"Normal" = "5",
"Carrera técnica" = "6",
"Licenciatura" = "7",
"Maestría" = "8",
"Doctorado" = "9",
"No sabe" = "99",
))
# Creación del gráfico con los datos preparados
g3 <- ggplot(ocupados_r, aes(x = pos_ocu, y = percent, fill = sex))
g3.1 <- ggplot(ocupados_tarea, aes(x = cs_p13_1, y = percent, fill = sex))
g3.1
g3.1+geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = scales::percent(percent / 100, accuracy = 0.1)), position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) +
ggtitle("Gráfica 4. Escolaridad por sexo en la población de 15 años y más, México, 2024") +
xlab("Escolaridad") +
ylab("Porcentaje") +
labs(caption = "Fuente: elaborado por el CONEVAL por información del INEGI (2024)") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = percent_format(scale = 1)) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
theme(plot.title = element_text (hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9))
library(scales)
g3+geom_bar(stat = "identity", position = "dodge") + # Usar barras con posición dodge
geom_text(aes(label = scales::percent(percent / 100)), position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Porcentaje") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = percent_format(scale = 1))
# Creación del gráfico con las cifras divididas entre 100
g3+geom_bar(stat = "identity", position = "fill") + # Usar barras con posición fill para apilar los porcentajes en una barra
geom_text(aes(label = scales::percent(percent / 100, accuracy = 0.1)), position = position_fill(vjust = 0.5), size = 3.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Porcentaje de Personas") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) + # Formatear el eje Y como porcentaje
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))