Diseñá tu tabla de gt con indicadores condición de actividad de eph

Ejercicios de Práctica

En este taller vamos a aprender a:

  1. Cargar los datos directamente desde nuestra consola de R usando el paquete {eph}
  2. Manipularlos usando dplyr de {tidyverse} para observar indicadores básicos de trabajo
  3. Construir una tabla usando la librería de gramática de tablas {gt}

Antes de arrancar

Para poder trabajar ordenadamente te recomendamos:

Tener instaladas las librerías que vamos a usar con la función install.packages(): {tidyerse},{gt},{gtExtras}, {Janitor} & {eph}

# install.packages("tidyverse")
# install.packages("gt")
# install.packages("gtExtras")
# install.packages("janitor")
# install.packages("eph")

Una buena práctica siempre que trabajes con encuestas es tener a mano:

  • Los cuestionarios (te van a permitir entender bien la estructura y pases)
  • El registro de diseño: donde tenes la referencia del código de pregunta, estructura y en caso que corresponda las categorías posibles que tiene que adoptar.
  • Definiciones operacionales que realiza INDEC sobre condición de actividad, subocupación horaria y categoría ocupacional disponible aquí

Setup librerías

El primer paso es llamar a las librerías que vamos a usar que por lo general siempre las colocamos al principio de nuestro script

library(tidyverse) # para manipular los datos
library(eph) # para levantar los datos de la encuesta 
library(janitor) # nos permite limpiar y acomodar facilmente los nombres de las variables (entre otras cosas)
library(gt) # para hermosear nuestras tablas
library(gtExtras) # para hermosear todavía más nuestras tablas 

Obtener datos

Vamos a arrancar descargando los datos con la función get_microdata(). En este caso vamos a descargar los resultados de la base de individuos del primer trimestre de 2022. Si quisieramos especificar una serie de variables en particular con las cuales vamos a trabajar

TIP: Para revisar los parámetros de una función siempre podemos consultar la la ayuda de R posicionándonos sobre la función y presionando la tecla F1.

ind_2023_1 <- get_microdata(
  year = 2023,
  trimester = 1,
  type = "individual",
  vars = "all",
  destfile = NA
)

En caso que no quieras o puedas usar este paquete podes descargar las bases de microdatos en el sitio del indec en la sección Bases de datos y descargar EPH continua

Vamos a reproducir la tabla 1.1 del Informe de Mercado de trabajo del primer trimestre 2023:

Definiciones Básicas

Antes de cálcular los indicadores tengamos en cuenta las siguientes definiciones básicas:

  • Población: es el total de unidades al que expande la muestra [PONDERA].
  • Población Ocupada: conjunto de personas que tienen por lo menos una ocupación
  • Población Desocupada: personas que, no teniendo ocupación, están buscando activamente trabajo y están disponibles para trabajar.
  • Población Economicamente Activa(PEA): la integran las personas que tienen una ocupación o que, sin tenerla, la están buscando activamente. Está compuesta por la población ocupada más la población desocupada.
  • Población Ocupada demandante de empleo: población ocupada que busca activamente otra ocupación.
  • Población Subocupada: se refiere a la subocupación por insuficiencia de horas, visible u horaria, y comprende a las personas ocupadas que trabajan menos de 35 horas semanales por causas involuntarias y que están dispuestas a trabajar más horas.
    • Población Subocupada demandante: población subocupada (por causas involuntarias y dispuesta a trabajar más horas) que además busca activamente otra ocupación.
    • Población Subocupada no demandante: población subocupada (por causas involuntarias y dispuesta a trabajar más horas) que no está en la búsqueda activa de otra ocupación.

Tanto la ocupación como la desocupación constituyen lo que se denomina condición de actividad que define la situación en que se encuentran las personas con respecto a su participación o no en la actividad económica.

Manos al código

Primero creamos una tabla con los siguientes indicadores de resumen (tomamos de base las definiciones mencionadas anteriormente):

  • Población
  • Ocupados
  • Desocupados
  • Población Economicamente Activa (PEA)
  • Ocupados demandantes
  • Subocupados (demandantes, no demandantes y total)

Estos niveles nos van a permitir calcular las tasas de forma sencilla.

Para obtener cualquier tasa necesitamos crear un numerador y un denominador. Por ejemplo: \(\text{Tasa de empleo: } Ocupados/Población\).

Al ser una muestra en la EPH trabajamos con el total expandido por su ponderador, en este caso lo encontramos en la variable PONDERA.

Variables de la Base EPH

Para hacer la tabla vamos a trabajar con las siguientes variables de la base EPH:

  • PONDERA: Es el factor de expansión para cada unidad de análisis
  • ESTADO: Indica la condición de actividad y puede tomar los valores:
    • 0 = Entrevista individual no realizada (no respuesta al cuestionario individual)
    • 1 = Ocupado
    • 2 = Desocupado
    • 3 = Inactivo
    • 4 = Menor de 10 años
  • PP03J: Es la pregunta: Aparte de este/os trabajo/s, ¿estuvo buscando algún empleo / ocupación /actividad?, que toma los valores:
    • 1 = Sí
    • 2 = No
    • 9 = Ns/Nr
  • INTENSI: Refiere a la intensidad de la carga horaria laboral y cuyas categorías son:
    • 1 = Subocupado por insuficiencia horaria
    • 2 = Ocupado pleno
    • 3 = Sobreocupado
    • 4 = Ocupado que no trabajó en la semana
    • 9 = Ns/Nr

Tabla resumen

Con la función summarise del paquete {tidyerse} podemos realizar distintas operaciones de resumen sobre las variables de nuestro análisis con la base que estamos trabajando:

tabla_1 <- ind_2023_1 |> 
  summarise(Poblacion          = sum(PONDERA),
            Ocupacion          = sum(PONDERA[ESTADO == 1]),
            Desocupacion       = sum(PONDERA[ESTADO == 2]),
            PEA                = Ocupacion + Desocupacion,
            Ocupacion_demandate = sum(PONDERA[ESTADO == 1 & PP03J ==1]),
            Suboc_demandante   = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J==1]),
            Suboc_no_demand    = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J %in% c(2,9)]),
            Subocupacion       = Suboc_demandante + Suboc_no_demand)

tabla_1
## # A tibble: 1 × 8
##   Poblacion Ocupacion Desocupacion      PEA Ocupacion_demandate Suboc_demandante
##       <int>     <int>        <int>    <int>               <int>            <int>
## 1  29335155  13191361       973787 14165148             2096890           898820
## # ℹ 2 more variables: Suboc_no_demand <int>, Subocupacion <int>

Ahora vamos a calcular las tasas creando una serie de nuevas columnas, usando la función mutate

tabla_1 <- tabla_1 |> 
  mutate('Actividad'                  = PEA/Poblacion,
         'Empleo'                     = Ocupacion/Poblacion,
         'Desocupación'               = Desocupacion/PEA,
         'Ocupación demandante'       = Ocupacion_demandate/PEA,
         'Subocupación'               = Subocupacion/PEA,
         'Subocupación demandante'    = Suboc_demandante/PEA,
         'Subocupación no demandante' = Suboc_no_demand/PEA)

tabla_1
## # A tibble: 1 × 15
##   Poblacion Ocupacion Desocupacion      PEA Ocupacion_demandate Suboc_demandante
##       <int>     <int>        <int>    <int>               <int>            <int>
## 1  29335155  13191361       973787 14165148             2096890           898820
## # ℹ 9 more variables: Suboc_no_demand <int>, Subocupacion <int>,
## #   Actividad <dbl>, Empleo <dbl>, Desocupación <dbl>,
## #   `Ocupación demandante` <dbl>, Subocupación <dbl>,
## #   `Subocupación demandante` <dbl>, `Subocupación no demandante` <dbl>

Y ahora nos vamos a quedar solamente con las variables de las tasas seleccionándolas con la función select

tabla_1 <- tabla_1 |> 
  select(Actividad:'Subocupación no demandante') |> 
  mutate(ANO4 = 2023,
         TRIMESTRE = 1) |> 
  relocate(c(ANO4,TRIMESTRE), .before = 'Actividad')

tabla_1
## # A tibble: 1 × 9
##    ANO4 TRIMESTRE Actividad Empleo Desocupación `Ocupación demandante`
##   <dbl>     <dbl>     <dbl>  <dbl>        <dbl>                  <dbl>
## 1  2023         1     0.483  0.450       0.0687                  0.148
## # ℹ 3 more variables: Subocupación <dbl>, `Subocupación demandante` <dbl>,
## #   `Subocupación no demandante` <dbl>

Ahora repetimos la operación con lo datos de 2022

# obtener los datos
ind_2022 <- get_microdata(
  year = 2022,
  trimester = c(1:4), # le decimos que traiga todos
  type = "individual",
  vars = "all",
  destfile = NA
)


tabla_2 <- ind_2022 |> 
  group_by(ANO4,TRIMESTRE) |> 
  summarise(Poblacion          = sum(PONDERA),
            Ocupacion          = sum(PONDERA[ESTADO == 1]),
            Desocupacion       = sum(PONDERA[ESTADO == 2]),
            PEA                = Ocupacion + Desocupacion,
            Ocupacion_demandate = sum(PONDERA[ESTADO == 1 & PP03J ==1]),
            Suboc_demandante   = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J==1]),
            Suboc_no_demand    = sum(PONDERA[ESTADO == 1 & INTENSI ==1 & PP03J %in% c(2,9)]),
            Subocupacion       = Suboc_demandante + Suboc_no_demand) |> 
  mutate('Actividad'                  = PEA/Poblacion,
         'Empleo'                     = Ocupacion/Poblacion,
         'Desocupación'               = Desocupacion/PEA,
         'Ocupación demandante'       = Ocupacion_demandate/PEA,
         'Subocupación'               = Subocupacion/PEA,
         'Subocupación demandante'    = Suboc_demandante/PEA,
         'Subocupación no demandante' = Suboc_no_demand/PEA) |> 
  select(ANO4,TRIMESTRE,Actividad:'Subocupación no demandante') |> 
  as_tibble()
## `summarise()` has grouped output by 'ANO4'. You can override using the
## `.groups` argument.
tabla_2
## # A tibble: 4 × 9
##    ANO4 TRIMESTRE Actividad Empleo Desocupación `Ocupación demandante`
##   <int>     <int>     <dbl>  <dbl>        <dbl>                  <dbl>
## 1  2022         1     0.465  0.433       0.0697                  0.155
## 2  2022         2     0.479  0.446       0.0686                  0.163
## 3  2022         3     0.476  0.442       0.0711                  0.160
## 4  2022         4     0.476  0.446       0.0628                  0.154
## # ℹ 3 more variables: Subocupación <dbl>, `Subocupación demandante` <dbl>,
## #   `Subocupación no demandante` <dbl>

Unimos ambas tablas usando la función bind_rows

tabla_3 <- bind_rows(tabla_1,tabla_2)

tabla_3
## # A tibble: 5 × 9
##    ANO4 TRIMESTRE Actividad Empleo Desocupación `Ocupación demandante`
##   <dbl>     <dbl>     <dbl>  <dbl>        <dbl>                  <dbl>
## 1  2023         1     0.483  0.450       0.0687                  0.148
## 2  2022         1     0.465  0.433       0.0697                  0.155
## 3  2022         2     0.479  0.446       0.0686                  0.163
## 4  2022         3     0.476  0.442       0.0711                  0.160
## 5  2022         4     0.476  0.446       0.0628                  0.154
## # ℹ 3 more variables: Subocupación <dbl>, `Subocupación demandante` <dbl>,
## #   `Subocupación no demandante` <dbl>

Ya tenemos los datos que necesitamos pero parece que la tabla estuviera “acostada”. Para que se ponga de pie o estire a lo largo vamos a usar la función pivot_longer

tabla_3 <- tabla_3 |> 
  pivot_longer(cols = -c(ANO4,TRIMESTRE), #Las columnas que queremos estirar en este caso son todas excepto el año y el trimestre
               names_to = "Tasas", # El nombre que le queremos poner
               values_to = "Valor") # el valor en cuestión que hay que repartir


tabla_3
## # A tibble: 35 × 4
##     ANO4 TRIMESTRE Tasas                       Valor
##    <dbl>     <dbl> <chr>                       <dbl>
##  1  2023         1 Actividad                  0.483 
##  2  2023         1 Empleo                     0.450 
##  3  2023         1 Desocupación               0.0687
##  4  2023         1 Ocupación demandante       0.148 
##  5  2023         1 Subocupación               0.0941
##  6  2023         1 Subocupación demandante    0.0635
##  7  2023         1 Subocupación no demandante 0.0306
##  8  2022         1 Actividad                  0.465 
##  9  2022         1 Empleo                     0.433 
## 10  2022         1 Desocupación               0.0697
## # ℹ 25 more rows

Vamos multiplicar por 100 el valor de la tasa ya que por lo general se expresa de esta forma, el cual redondeamos a un decimal.

tabla_3 <- tabla_3 |> 
  mutate(Valor = round(Valor*100,1))

tabla_3
## # A tibble: 35 × 4
##     ANO4 TRIMESTRE Tasas                      Valor
##    <dbl>     <dbl> <chr>                      <dbl>
##  1  2023         1 Actividad                   48.3
##  2  2023         1 Empleo                      45  
##  3  2023         1 Desocupación                 6.9
##  4  2023         1 Ocupación demandante        14.8
##  5  2023         1 Subocupación                 9.4
##  6  2023         1 Subocupación demandante      6.3
##  7  2023         1 Subocupación no demandante   3.1
##  8  2022         1 Actividad                   46.5
##  9  2022         1 Empleo                      43.3
## 10  2022         1 Desocupación                 7  
## # ℹ 25 more rows

Ahora vamos a crear una variable que combina el año y trimestre, desechando año y trimestre como variables por separado y vamos a “estirar” la tabla colocando al 1er trimestre de 2021 al final, tal cual se presenta en el reporte de INDEC

#('Actividad','Empleo','Desocupación','Ocupación demandante','Subocupación','Subocupación demandante','Subocupación no demandante')

tabla_3 <- tabla_3 |> 
  mutate(ano_trimestre = paste(ANO4,TRIMESTRE)) |> # creamos la variable que concatena las etiquetas año y trimestre
  select(-c(ANO4,TRIMESTRE)) |> # eliminamos las variables originales de año y trimestre
  pivot_wider(names_from = c("ano_trimestre"), values_from = Valor) |> # estiramos la variable que creamos
  relocate("2023 1",.after = "2022 4" ) # ubicamos al 1er trimestre de 2023 al final de la tabla

tabla_3
## # A tibble: 7 × 6
##   Tasas                      `2022 1` `2022 2` `2022 3` `2022 4` `2023 1`
##   <chr>                         <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
## 1 Actividad                      46.5     47.9     47.6     47.6     48.3
## 2 Empleo                         43.3     44.6     44.2     44.6     45  
## 3 Desocupación                    7        6.9      7.1      6.3      6.9
## 4 Ocupación demandante           15.5     16.3     16       15.4     14.8
## 5 Subocupación                   10       11.1     11       10.9      9.4
## 6 Subocupación demandante         6.9      7.7      7.6      7.1      6.3
## 7 Subocupación no demandante      3.1      3.5      3.4      3.8      3.1

Las funciones pivot_longer y pivot_wider nos ayudan a estirar y alargar los datos para saber más sobre ellas te recomendamos la lectura de esta viñeta donde vas a encontrar varios ejemplos.

Comunicación del dato

Ahora vamos a darle un poco de estilo y color con el paquete de “gramática de tablas” {gt}

tabla_4 <- tabla_3 |> 
  gt() |> 
  # ponemos un título y subtitulo
  tab_header(
    title = md("**Principales tasas del mercado de trabajo. Total 31 aglomerados urbanos.**"),
    subtitle = "Primer trimestre 2022-primer trimestre 2023") |> 
  # Elegimos una tipografía y tamaños
  opt_table_font(
    font = list(
      google_font(name = "Montserrat"),
      labels = list(
        title = list(weight = "bold", size = 9),
        header = list(weight = "bold", size = 8),
        footnote = list(weight = "bold", size = 8),
        source = list(weight = "bold", size = 8)
      )
    )
  ) |> 
  # centramos las columnas del cuerpo
  cols_align(
    align = "center",
    columns = 2:6
  ) |> 
  # creamos una cabecera que agrupe cada año
  gt::tab_spanner(
    label = "2022",
    columns = starts_with("2022")
  ) |> 
  gt::tab_spanner(
    label = "2023",
    columns = starts_with("2023")
  ) |> 
  # cambiamos las etiquetas de las columnas
  cols_label("2022 1" = "1er Trimestre",
             "2022 2" = "2do Trimestre",
             "2022 3" = "3er Trimestre",
             "2022 4" = "4to Trimestre",
             "2023 1" = "1er Trimestre") |>
  #agregamos un pié con la fuente y una aclaración indicando que nuestros datos están ponderados
  tab_source_note('Fuente: INDEC, Encuesta Permanente de Hogares.') |> 
  tab_footnote("Datos ponderados.")
  
tabla_4  
Principales tasas del mercado de trabajo. Total 31 aglomerados urbanos.
Primer trimestre 2022-primer trimestre 2023
Tasas20222023
1er Trimestre2do Trimestre3er Trimestre4to Trimestre1er Trimestre
Actividad46.547.947.647.648.3
Empleo43.344.644.244.645.0
Desocupación7.06.97.16.36.9
Ocupación demandante15.516.316.015.414.8
Subocupación10.011.111.010.99.4
Subocupación demandante6.97.77.67.16.3
Subocupación no demandante3.13.53.43.83.1
Fuente: INDEC, Encuesta Permanente de Hogares.
Datos ponderados.

Licencia

Este taller está a disposición del público bajo licencias de código abierto. Toda la documentación y los materiales publicados están disponibles bajo una licencia CC BY-SA-NC.

A continuación, puedes leer más sobre la licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.

Licencia de Creative Commons
Licencia de Creative Commons
Betsabé Cohen
Betsabé Cohen

Socióloga & analista de datos

Andrea Gómez Vargas
Andrea Gómez Vargas

Socióloga & analista de datos

Related