1. Curso para la creación de gráficas del CONEVAL

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))