# # Verificar y crear directorios faltantes
# ruta_base <- "D:/OneDrive/VMGWconsultoria/rsconnect/documents/Base-JyP-20mil_procesado.Rmd/rpubs.com/rpubs"
# 
# # Verificar si la ruta base existe, si no, crearla
# if (!dir.exists(ruta_base)) {
#   dir.create(ruta_base, recursive = TRUE)
#   print(paste("Directorio creado:", ruta_base))
# } else {
#   print(paste("Directorio ya existe:", ruta_base))
# }
# 
# # Verificar la existencia del archivo final
# archivo_final <- file.path(ruta_base, "Document.dcf")
# 
# if (!file.exists(archivo_final)) {
#   # Intentar crear el archivo final
#   file.create(archivo_final)
#   print(paste("Archivo creado:", archivo_final))
# } else {
#   print(paste("Archivo ya existe:", archivo_final))
# }

R Markdown

rm(list = ls())
import pandas as pd


# Cargar la base de datos desde el archivo Excel usando pandas
file_path = r'D:/OneDrive/VMGWconsultoria/basejubilados.xlsx'
df = pd.read_excel(file_path, sheet_name='Base JyP 20mil')

# Imprimir los nobres de los campos
print("Nombres de los campos en la base de datos:")
## Nombres de los campos en la base de datos:
print(df.columns)
## Index(['anio', 'mes', 'sexo', 'cod_asignacion', 'jubpen', 'tipojubilacion',
##        'regimen', 'edad', 'fecha_ing', 'mov_asignado_mensual', 'anio_ingreso',
##        'n_id', 'fecha_nac', 'estadocivil', 'dias_rec', 'mes_rec', 'anios_rec',
##        'gs_1haber', 'gs_lhaber', 'fecha_1haber', 'fecha_lhaber', 'sector1',
##        'genero_mgc', 'fnac_mgc', '_merge_mgc'],
##       dtype='object')
# Crear el nuevo campo sector1_imput basado en las reglas especificadas


# Crear el nuevo campo llaveidsector concatenando n_id y sector1_imput
df['llaveidtipojubregimen'] =   df['tipojubilacion'] + df['regimen']+ df['n_id'].astype(str) 

# Crear el nuevo campo periodo concatenando anio y mes
df['periodo'] = df['anio'].astype(str) + '-' + df['mes'].astype(str).str.zfill(2)

# Primero eliminar duplicados en df
# Realizar el reshape de la base de datos
df_pivot = df.pivot_table(index='llaveidtipojubregimen', columns='periodo', values='mov_asignado_mensual', aggfunc='sum', fill_value=0)
print("Primeras filas del DataFrame pivot:")
## Primeras filas del DataFrame pivot:
print(df_pivot.head())
## periodo                                             2019-01  ...  2023-12
## llaveidtipojubregimen                                        ...         
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA...        0  ...  4173356
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA...  1338170  ...  1623126
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA...  1164648  ...        0
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA...        0  ...  6718200
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA...        0  ...  3523699
## 
## [5 rows x 60 columns]
# pasar periodo a formato fecha

#oredenar las columnas por fecha mas reciente a mas antigua
df_pivot = df_pivot.reindex(sorted(df_pivot.columns), axis=1)
# Reset index para facilitar el merge
df_pivot = df_pivot.reset_index()
# Reset index para facilitar el merge
# Ordenar las columnas df_pivot por llaveidtipojubregimen y sector1_imput (de z a a)
df_pivot_sorted = df_pivot.sort_values(by=['llaveidtipojubregimen'], ascending=[True])
# Añadir de vuelta todas las columnas iniciales de la base df a df_pivot
# Ordenar las columnas df_pivot por la llave  llaveidtipojubregimen y el campo sector1 de modo que el valor del campo sector1 se ordene de z a a

# Ordenar las columnas df_pivot por llaveidtipojubregimen y sector1_imput (de z a a)
df_sort = df.sort_values(by=['n_id','regimen', 'tipojubilacion',  'sector1'], ascending=[True,True,True, False])
df_desdup = df_sort.drop_duplicates(subset=['llaveidtipojubregimen'])

# Ordenar las columnas df_pivot por llaveidtipojubregimen
df_desdup = df_desdup.sort_values(by=['llaveidtipojubregimen'])


# Realizar el merge asegurando que solo se traen las columnas necesarias y evitando duplicación
columns_to_merge = ['llaveidtipojubregimen'] + df_pivot.columns.tolist()[1:]
df_pivot_completo = df_desdup.merge(df_pivot_sorted[columns_to_merge], on='llaveidtipojubregimen', how='left')
## si sector1 esta en blanco completar con elvalor del campo regimen
df_pivot_completo['sector1'] = df_pivot_completo['sector1'].fillna(df_pivot_completo['regimen'])
#guardar en excel los resultados

#df_pivot_completo.to_excel(r'D:/OneDrive/VMGWconsultoria/df_pivot_completo.xlsx', index = False)
# carga libreria pra prestnacion de tabla interactiva en html

library(DT)
## Warning: package 'DT' was built under R version 4.3.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
# Cargar la base de datos desde el archivo Excel usando pandas

df_pivot_completo <- read_excel("D:/OneDrive/VMGWconsultoria/df_pivot_completo.xlsx")

# Imprimir los nobres de los campos

print("Nombres de los campos en la base de datos:")
## [1] "Nombres de los campos en la base de datos:"
print(names(df_pivot_completo))
##  [1] "anio"                  "mes"                   "sexo"                 
##  [4] "cod_asignacion"        "jubpen"                "tipojubilacion"       
##  [7] "regimen"               "edad"                  "fecha_ing"            
## [10] "mov_asignado_mensual"  "anio_ingreso"          "n_id"                 
## [13] "fecha_nac"             "estadocivil"           "dias_rec"             
## [16] "mes_rec"               "anios_rec"             "gs_1haber"            
## [19] "gs_lhaber"             "fecha_1haber"          "fecha_lhaber"         
## [22] "sector1"               "genero_mgc"            "fnac_mgc"             
## [25] "_merge_mgc"            "llaveidtipojubregimen" "periodo"              
## [28] "2019-01"               "2019-02"               "2019-03"              
## [31] "2019-04"               "2019-05"               "2019-06"              
## [34] "2019-07"               "2019-08"               "2019-09"              
## [37] "2019-10"               "2019-11"               "2019-12"              
## [40] "2020-01"               "2020-02"               "2020-03"              
## [43] "2020-04"               "2020-05"               "2020-06"              
## [46] "2020-07"               "2020-08"               "2020-09"              
## [49] "2020-10"               "2020-11"               "2020-12"              
## [52] "2021-01"               "2021-02"               "2021-03"              
## [55] "2021-04"               "2021-05"               "2021-06"              
## [58] "2021-07"               "2021-08"               "2021-09"              
## [61] "2021-10"               "2021-11"               "2021-12"              
## [64] "2022-01"               "2022-02"               "2022-03"              
## [67] "2022-04"               "2022-05"               "2022-06"              
## [70] "2022-07"               "2022-08"               "2022-09"              
## [73] "2022-10"               "2022-11"               "2022-12"              
## [76] "2023-01"               "2023-02"               "2023-03"              
## [79] "2023-04"               "2023-05"               "2023-06"              
## [82] "2023-07"               "2023-08"               "2023-09"              
## [85] "2023-10"               "2023-11"               "2023-12"
datatable(df_pivot_completo, options = list(pageLength = 5))