Advertisement
yayopoint

Untitled

Jan 9th, 2025
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 3.16 KB | None | 0 0
  1. ###                               ###
  2. #  Salario mínimo ajustado por IPC  #
  3. ###                               ###
  4. library(rvest)
  5. library(tidyverse)
  6. library(fpp3)
  7. library(readxl)
  8.  
  9. # Se lee los datos del IPC desde el INE.
  10. ipc <- read_csv2("https://www.ine.gob.cl/docs/default-source/%C3%ADndice-de-precios-al-consumidor/cuadros-estadisticos/series-empalmadas-y-antecedentes-historicos/series-empalmadas-diciembre-2009-a-la-fecha/serie-hist%C3%B3rica-empalmada-ipc-diciembre-2009-a-la-fecha-csv.csv",
  11.                  locale=locale(decimal_mark = ",", grouping_mark = ".", encoding="latin1"))
  12.  
  13. # Pequeños arreglos a los datos:
  14. #  - Se transforma la fecha en tipo Date.
  15. #  - Se selecciona sólo las columnas relevantes.
  16. ipc <- ipc %>%
  17.   mutate(Fecha = paste(`Año`, sprintf("%02.0f", Mes), "01", sep = "-") |> as.Date()) %>%
  18.   select(Fecha, `Índice`)
  19.  
  20. # Cargamos los datos del salario mínimo desde wikipedia.
  21. salario_minimo <- read_html("https://es.wikipedia.org/wiki/Anexo:Salario_m%C3%ADnimo_en_Chile") %>%
  22.   # Seleccionamos el tercer elemento tabla en la página web.
  23.   html_elements("table") %>%
  24.   .[3] %>%
  25.   # rescatamos los datos de la tabla.
  26.   html_table() %>%
  27.   .[[1]] %>%
  28.   # Seleccionamos las variables que nos interesan.
  29.   select(Fecha, `Monto bruto`) %>%
  30.   # Filtramos los encabezados.
  31.   filter(!Fecha == `Monto bruto`) %>%
  32.   # Transformamos las fechas en tipo Date. Sólo funciona en idioma español.
  33.   mutate(Fecha = str_replace_all(Fecha, "del", "de") |>
  34.            as.Date(Fecha, format="%d de %b de %Y")) %>%
  35.   # Filtramos las fechas que no vamos a encontrar en el INE
  36.   filter(Fecha >= "2009-01-01") %>%
  37.   # Transformamos el monto en numérico
  38.   mutate(`Monto bruto` = str_replace_all(`Monto bruto`, "([0-9]*)([.])([0-9]*).*", "\\1\\3") |> as.numeric()) %>%
  39.   add_row(Fecha=as.Date("2024-12-01"), `Monto bruto`=510500)
  40.  
  41. # Etiquetas para los nombres de presidentes.
  42. presidentes <- data.frame(
  43.   x = as.Date(c("2012-01-01", "2016-01-01", "2020-01-01", "2024-01-01")),
  44.   y = c(450000, 450000, 325000, 325000),
  45.   label = c("S. Piñera I", "M. Bachelet II",
  46.             "S. Piñera II", "G. Boric")
  47. )
  48.  
  49.  
  50. # Se unen las bases del IPC y el salario mínimo
  51. ipc %>%
  52.   left_join(salario_minimo) %>%
  53.   # Se agrega el dato que queda fuera debido al filtro.
  54.   (\(x) {
  55.     x$`Monto bruto`[1] <- 159000
  56.     x
  57.   }) %>%
  58.   # Se rellena los espacios en blanco.
  59.   fill(`Monto bruto`) %>%
  60.   # Creamos el ajuste por IPC.
  61.   mutate(Factor = `Índice`[n()]/`Índice`,
  62.          `Monto ajustado` = `Monto bruto`*Factor,
  63.          Fecha = yearmonth(Fecha)) %>%
  64.   as_tsibble(index = Fecha) %>%
  65.   model(stl=STL(`Monto ajustado`)) %>%
  66.   components() %>%
  67.   as_tsibble() %>%
  68.   autoplot(`Monto ajustado`) +
  69.   geom_label(data = presidentes, aes(x=x, y=y, label = label)) +
  70.   geom_line(aes(y=trend), colour = "blue") +
  71.   geom_vline(
  72.     xintercept=as.Date(c("2010-03-01", "2014-03-01", "2018-03-01", "2022-03-01")),
  73.     linetype='dashed', color='red') +
  74.   labs(
  75.     title = "Salario mínimo real en Chile",
  76.     subtitle = "Salario mínimo ajustado por IPC",
  77.     caption = "Fuentes: Ine y Wikipedia",
  78.     x = "Fecha",
  79.     y = "Salario mínimo"
  80.   )
  81.  
  82.  
Tags: Datos salario ipc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement