#ruta> https://datos.hacienda.gov.py/odmh-core/rest/nomina/datos/nomina_2023-05.zip

#install.packages("httr")
library(httr)

url <- "https://datos.hacienda.gov.py/odmh-core/rest/nomina/datos/nomina_2023-05.zip"  # Reemplaza con la URL real del archivo comprimido

response <- GET(url)
# Guarda el contenido descargado en un archivo temporal
tempfile <- tempfile(fileext = ".zip")
writeBin(response$content, tempfile)
# Descomprime el archivo en la ruta de destino
unzip(tempfile, exdir = "D:/OneDrive/FACEN_BIGDATA")  # Reemplaza "directorio_de_salida" con la ubicación deseada

# cargar el archivo
library(readxl)
library(readr)
variables=c("anio","mes","sexo","codigoPersona","montoDevengado")
baseFPfil=read_csv("D:/OneDrive/FACEN_BIGDATA/nomina_2023-05.csv",col_select=variables)
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
##   # Was:
##   data %>% select(variables)
## 
##   # Now:
##   data %>% select(all_of(variables))
## 
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Rows: 1110211 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): codigoPersona, sexo
## dbl (3): anio, mes, montoDevengado
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(baseFPfil)
## [1] "anio"           "mes"            "sexo"           "codigoPersona" 
## [5] "montoDevengado"
write.csv(baseFPfil,"D:/OneDrive/FACEN_BIGDATA/nomina_2023-05_fil.csv")
baseFPfil=read.csv("D:/OneDrive/FACEN_BIGDATA/nomina_2023-05_fil.csv",sep =",")
baseFPfil$cedula<-baseFPfil$codigoPersona
## incorporar la fecha de nacimiento a partir de otro registro

library(readr)
baseRCP21=read_csv("D:/OneDrive/FACEN_BIGDATA/padrontsje2021.csv")
## Rows: 4353936 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): sexo, fnacim
## dbl (1): cedula
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(baseRCP21)
## [1] "cedula" "sexo"   "fnacim"
str(baseRCP21)
## spc_tbl_ [4,353,936 × 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ cedula: num [1:4353936] 180 2319 3877 4995 10580 ...
##  $ sexo  : chr [1:4353936] "Hombres" "Mujeres" "Hombres" "Hombres" ...
##  $ fnacim: chr [1:4353936] "18/08/1888" "25/06/1908" "08/01/1919" "13/03/1913" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   cedula = col_double(),
##   ..   sexo = col_character(),
##   ..   fnacim = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>
#transformar el dato de la fecha de nacimiento a formato fecha
# Transformar a objeto de fecha

baseRCP21=read_csv("D:/OneDrive/FACEN_BIGDATA/padrontsje2021.csv")
## Rows: 4353936 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): sexo, fnacim
## dbl (1): cedula
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(baseRCP21)
## [1] "cedula" "sexo"   "fnacim"
# Transformar a objeto de fecha
baseRCP21$fnacim <- as.Date(baseRCP21$fnacim, format = "%d/%m/%Y")
str(baseRCP21)
## spc_tbl_ [4,353,936 × 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ cedula: num [1:4353936] 180 2319 3877 4995 10580 ...
##  $ sexo  : chr [1:4353936] "Hombres" "Mujeres" "Hombres" "Hombres" ...
##  $ fnacim: Date[1:4353936], format: "1888-08-18" "1908-06-25" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   cedula = col_double(),
##   ..   sexo = col_character(),
##   ..   fnacim = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>
# calcular la edad de cada persona a la fecha del 30 de mayo del 2023
fecha_referencia <- as.Date("2023-05-30")
baseRCP21$edad <- as.integer(difftime(fecha_referencia, baseRCP21$fnacim, units = "days") / 365.25)
hist(baseRCP21$edad)

#llevar estas edades a la base de funcionarios
library("dplyr")
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
funcionarios <- merge(baseRCP21, baseFPfil, by = "cedula", all.x = FALSE)
funcionarios <- funcionarios %>%
  distinct(cedula, .keep_all = TRUE)
funcionarios <- subset(funcionarios, edad >= 30 & edad <= 50 & montoDevengado > 0 & montoDevengado < 100000000 & (sexo.x == "Hombres" | sexo.x == "Mujeres"))
library(ggplot2)

tablasalarios=aggregate(funcionarios$montoDevengado,by=list(funcionarios$sexo.x,funcionarios$edad),FUN=mean)
tablasalarios
##    Group.1 Group.2       x
## 1  Hombres      30 2248045
## 2  Mujeres      30 2732687
## 3  Hombres      31 2225219
## 4  Mujeres      31 2806438
## 5  Hombres      32 2270357
## 6  Mujeres      32 2668649
## 7  Hombres      33 2400240
## 8  Mujeres      33 2693836
## 9  Hombres      34 2322131
## 10 Mujeres      34 2630645
## 11 Hombres      35 2283537
## 12 Mujeres      35 2545520
## 13 Hombres      36 2327972
## 14 Mujeres      36 2516669
## 15 Hombres      37 2314678
## 16 Mujeres      37 2458435
## 17 Hombres      38 2365277
## 18 Mujeres      38 2305024
## 19 Hombres      39 2247040
## 20 Mujeres      39 2254398
## 21 Hombres      40 2219596
## 22 Mujeres      40 2178373
## 23 Hombres      41 2174425
## 24 Mujeres      41 2060475
## 25 Hombres      42 2161797
## 26 Mujeres      42 1963057
## 27 Hombres      43 2116107
## 28 Mujeres      43 2029183
## 29 Hombres      44 2236066
## 30 Mujeres      44 1986663
## 31 Hombres      45 2279866
## 32 Mujeres      45 2013094
## 33 Hombres      46 2407189
## 34 Mujeres      46 2102167
## 35 Hombres      47 2488449
## 36 Mujeres      47 2068548
## 37 Hombres      48 2456156
## 38 Mujeres      48 2119765
## 39 Hombres      49 2463653
## 40 Mujeres      49 2153799
## 41 Hombres      50 2662449
## 42 Mujeres      50 2121242
# Supongamos que tienes una base de datos llamada 'datos' con las columnas 'salario', 'genero' y 'edad'
# Crear un gráfico de líneas que muestre el salario promedio de hombres y mujeres por edades
grafico_lineas <- ggplot(tablasalarios, aes(x = Group.2, y = x, color = Group.1, group = Group.1)) +
  geom_line() +
  labs(x = "Edad", y = "Salario Promedio", color = "Género") + 
  theme_minimal()

# Imprimir el gráfico
print(grafico_lineas)