Cargar librerias necesarias
#install.packages("Nombre_D_libreria")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(data.table)
##
## Adjuntando el paquete: 'data.table'
##
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
##
## The following objects are masked from 'package:dplyr':
##
## between, first, last
##
## The following object is masked from 'package:purrr':
##
## transpose
library(ggplot2)
#
ruta=("G:/Mi unidad/FACEN_BIGDATA/FACEN_BIG_DATA_2DO_SEM_2026/FACEN_BIG_DATA_2DO_SEM_2026/datos_funcion_publica_py/")
#
# # cargar julio del 2015
#
# fp2015jul = fread(paste0(ruta, "funcionarios_2015_7.csv"))
# fp2016jul = fread(paste0(ruta, "funcionarios_2016_7.csv"))
# fp2017jul = fread(paste0(ruta, "funcionarios_2017_7.csv"))
# fp2018jul = fread(paste0(ruta, "funcionarios_2018_7.csv"))
# fp2019jul = fread(paste0(ruta, "funcionarios_2019_7.csv"))
# fp2020jul = fread(paste0(ruta, "funcionarios_2020_7.csv"))
# fp2021jul = fread(paste0(ruta, "funcionarios_2021_7.csv"))
# fp2022jul = fread(paste0(ruta, "funcionarios_2022_7.csv"))
# fp2023jul = fread(paste0(ruta, "funcionarios_2023_7.csv"))
# fp2024jul = fread(paste0(ruta, "funcionarios_2024_7.csv"))
# fp2025jul = fread(paste0(ruta, "funcionarios_2025_7.csv"))
# fp2026jul = fread(paste0(ruta, "funcionarios_2026_7.csv"))
# codigo para juntar todos los meses
# fp=rbind(fp2015jul, fp2016jul, fp2017jul, fp2018jul, fp2019jul, fp2020jul, fp2021jul, fp2022jul, fp2023jul, fp2024jul, fp2025jul, fp2026jul)
#
# nrow(fp)
Verificar campos
#names(fp)
#table(fp$anho)
#cbind(sort(table(fp$descripcion_entidad),decreasing= TRUE))
#fpsalud=fp[descripcion_entidad=="MINISTERIO DE SALUD PUBLICA Y BIENESTAR SOCIAL"]
#nrow(fpsalud)
guardar la base filtrada en un formato optimo
#install.packages(fst)
#library(fst)
#write_fst(fpsalud, paste0(ruta, "fpsalud_filtrada.fst"), compress = 50)
cargar la base guardada
library(fst)
fps=read_fst(paste0(ruta, "fpsalud_filtrada.fst"))
names(fps)
## [1] "anho" "mes" "nivel"
## [4] "descripcion_nivel" "entidad" "descripcion_entidad"
## [7] "oee" "descripcion_oee" "documento"
## [10] "nombres" "apellidos" "funcion"
## [13] "estado" "carga_horaria" "anho_ingreso"
## [16] "sexo" "discapacidad" "tipo_discapacidad"
## [19] "fuente_financiamiento" "objeto_gasto" "concepto"
## [22] "linea" "categoria" "cargo"
## [25] "presupuestado" "devengado" "movimiento"
## [28] "lugar" "fecha_nacimiento" "fec_ult_modif"
## [31] "uri" "fecha_acto" "correo"
## [34] "profesion" "motivo_movimiento"
nrow(fps)
## [1] 1191762
revisamos los campos documento y devengado
library(data.table)
setDT(fps) # Convierte fps a data.table
str(fps$documento)
## chr [1:1191762] "VAC985064" "VAC985065" "VAC985066" "VAC985067" ...
str(fps$devengado)
## int [1:1191762] 0 0 0 0 0 0 0 0 0 0 ...
Calcular el salario total por persona
Eliminar las filas donde es salario es nulo
nrow(fps)
## [1] 1191762
fps=fps[devengado>0]
nrow(fps)
## [1] 1145391
# calcula la suma de los salarios en el mes para cada nro de documento
fpsd <- fps[, .(salariotot = sum(devengado)), by = .(documento, mes, anho)]
nrow(fpsd)
## [1] 507679
explorar la distribucion de salarios
summary(fpsd$salariotot)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1 2850000 3861520 4930502 5689534 57030302
hist(fpsd$salariotot)
boxplot(fpsd$salariotot)
calcular la variacion interanual de los salarios individuales
# 1. Es crucial ordenar los datos cronológicamente por persona
setorder(fpsd, documento, mes, anho)
# 2. Calcular la variación ( (Salario Actual / Salario Anterior) - 1 )
fpsd[, varisal := (salariotot / shift(salariotot, type = "lag")) - 1, by = .(documento, mes)]
distribucion de los incrementos
summary(fpsd$varisal)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.99 -0.02 0.00 0.07 0.08 239.96 71873
dibujar el valor medio del incremento salarial por año
tabla de valores promedio de variacion por año
tabla1 <- fpsd[, .(varisalmedio = mean(varisal, na.rm = TRUE)), by = anho]
tabla1
## anho varisalmedio
## <int> <num>
## 1: 2016 NaN
## 2: 2017 0.020919274
## 3: 2018 0.063337230
## 4: 2019 0.105013401
## 5: 2020 0.003453315
## 6: 2021 0.132835056
## 7: 2022 0.041352240
## 8: 2023 0.129581840
## 9: 2024 0.159169008
## 10: 2025 0.057148109
## 11: 2026 -0.091414759
barplot(varisalmedio ~ anho, data = tabla1)