hedtorresca commited on
Commit
776f39e
1 Parent(s): 9c58281

Upload Test_3 (1) (2).qmd

Browse files
Files changed (1) hide show
  1. src/notebooks/Test_3 (1) (2).qmd +237 -0
src/notebooks/Test_3 (1) (2).qmd ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: "Seguimiento Cifras Consumo Individual"
3
+ author: "Equipo IDN - Cristhian Buitrago"
4
+ format:
5
+ revealjs:
6
+ self-contained: true
7
+ theme: simple
8
+ css: styles.css
9
+ editor: visual
10
+ ---
11
+
12
+ ## Proceso
13
+
14
+ Actualmente el equipo de IDN - Gerencia de Soluciones - Subdirección Comercial consolida la información de Consumo Individual y Empresarial, ésto se realiza de acuerdo con la información que se tiene disponible en SAP4HANA.
15
+
16
+ La recopilación de este proceso se realiza de forma mensual, mes vencido y con un plazo de entrega de los equipos BI de la caja de máximo el día 25 de cada mes.
17
+
18
+ La metodología empleada para la recopilación de la información fue construida por el equipo BI.
19
+
20
+ El presente reporte ilustra el seguimiento general de cifras de Consumo Individual por UES.
21
+
22
+
23
+ ```{r setup, include=FALSE}
24
+ knitr::opts_chunk$set(echo = TRUE)
25
+
26
+ source('./Setup.R')
27
+
28
+ # **NIT: `r NIT` - `r nombreEmpresa`**
29
+
30
+ ```
31
+
32
+
33
+ ```{r cargue_bases, eval=TRUE, message=FALSE, warning=FALSE, include=FALSE, paged.print=FALSE}
34
+
35
+ Afiliados <- readRDS(file = './Consolidada Personas/Consol_Afiliados_MHE_2021_2024.rds')
36
+ Empresas <- readRDS(file = './Consolidada Empresas/Consol_Empresas_MHE_2021_2024.rds')
37
+
38
+ ```
39
+
40
+ ```{r filtro_empresa,echo=FALSE}
41
+
42
+ NIT <- "NIT8600073861"
43
+ MES <- as.Date.character('2024-04-01')
44
+
45
+ Data_Empresa <- Afiliados %>%
46
+ filter(id_empresa == NIT) %>%
47
+ mutate(Date = make_date(Year, Month, 1))
48
+
49
+ ```
50
+
51
+ ```{r variables_basicas,echo=FALSE}
52
+
53
+ # Num.afiliados
54
+ # Num.afiliados_cat_a
55
+ # Num.afiliados_cat_b
56
+ # Num.afiliados_cat_c
57
+ # Num.afiliados_basico
58
+ # Num.afiliados_medio
59
+ # Num.afiliados_joven
60
+ # Num.afiliados_alto
61
+ # Salario_Promedio
62
+ # RazonSocial
63
+
64
+ RazonSocial <- unique(Data_Empresa$RazonSocial)
65
+ NIT <- unique(Data_Empresa$id_empresa)
66
+
67
+ ## Variables auxiliares
68
+
69
+ last_date <- max(Data_Empresa$Date)
70
+
71
+ ```
72
+
73
+ ```{r calculo_salarios, echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE}
74
+
75
+ library(scales)
76
+
77
+ salario_promedio <- Data_Empresa %>%
78
+ filter(Date > last_date %m-% months(36)) %>% # Filtrar los últimos 36 meses
79
+ group_by(Periodo = case_when(
80
+ Date > last_date %m-% months(12) ~ "Últimos 12 meses",
81
+ Date > last_date %m-% months(24) ~ "Últimos 24 meses",
82
+ TRUE ~ "Últimos 36 meses"
83
+ )) %>%
84
+ summarise(Salario_Promedio = mean(Salario), .groups = 'drop')
85
+
86
+ # Formatear como valor monetario en millones
87
+ Salario.Prom.12 <- dollar(salario_promedio$Salario_Promedio[salario_promedio$Periodo == "Últimos 12 meses"] / 1e6, accuracy = 0.01, suffix = "M")
88
+ Salario.Prom.24 <- dollar(salario_promedio$Salario_Promedio[salario_promedio$Periodo == "Últimos 24 meses"] / 1e6, accuracy = 0.01, suffix = "M")
89
+ Salario.Prom.36 <- dollar(salario_promedio$Salario_Promedio[salario_promedio$Periodo == "Últimos 36 meses"] / 1e6, accuracy = 0.01, suffix = "M")
90
+
91
+
92
+ ```
93
+
94
+ ```{r Salarios_Promedio_date, message=FALSE, warning=FALSE, include=FALSE, paged.print=FALSE}
95
+
96
+ Data_Empresa$Date <- as.Date(Data_Empresa$Date)
97
+
98
+ Salario_Promedio_Fecha <- Data_Empresa %>%
99
+ group_by(Date) %>%
100
+ summarise(Promedio_Salarial = mean(Salario, na.rm = TRUE), .groups = 'drop') %>%
101
+ mutate(Promedio_Salarial_Formateado = dollar(Promedio_Salarial / 1e6, accuracy = 0.01, suffix = "M")) %>%
102
+ arrange(Date)
103
+
104
+ # Verificar la estructura de los datos ordenados
105
+ print(Salario_Promedio_Fecha)
106
+ ```
107
+
108
+ ```{r plot_salarios_mes, message=FALSE, warning=FALSE, include=FALSE, paged.print=FALSE}
109
+
110
+ library(ggplot2)
111
+
112
+ library(ggplot2)
113
+ library(plotly)
114
+ library(scales)
115
+
116
+ # Crear el gráfico con ggplot
117
+ ggplot_Salarios <- ggplot(Salario_Promedio_Fecha, aes(x = Date, y = Promedio_Salarial, group = 1)) + # 'group = 1' fuerza a ggplot a considerar todo como un solo grupo
118
+ geom_line(color = "blue", size = 1) +
119
+ geom_point(color = "red", size = 2, aes(text = paste("Fecha:", format(Date, "%d-%m-%Y"), "<br>Salario Promedio:", Promedio_Salarial_Formateado))) +
120
+ labs(x = "Fecha", y = "Promedio Salarial (Millones $)", title = "Promedio Salarial por Fecha", subtitle = "Evolución del salario promedio a lo largo del tiempo") +
121
+ theme_minimal() +
122
+ theme(plot.title = element_text(hjust = 0.5))
123
+
124
+
125
+ library(plotly)
126
+
127
+ # Convertir ggplot a plotly
128
+ Plot_Salarios_Interactive <- ggplotly(ggplot_Salarios, tooltip = "text")
129
+
130
+ # Ajustar el formato de fecha en el eje x
131
+ Plot_Salarios_Interactive <- Plot_Salarios_Interactive %>%
132
+ layout(xaxis = list(tickformat = "%d-%m-%Y"))
133
+
134
+
135
+ ```
136
+
137
+
138
+ ```{r num.promedio_afiliados,echo=FALSE}
139
+
140
+ # Contar afiliados únicos por mes y año
141
+ Afiliados_Mes <- Data_Empresa %>%
142
+ group_by(Year, Month) %>%
143
+ summarise(Afiliados_Unicos = n_distinct(id_persona), .groups = 'drop')
144
+
145
+ Afiliados_Promedio <- Data_Empresa %>%
146
+ filter(Date > last_date %m-% months(36)) %>% # Filtrar los últimos 36 meses
147
+ group_by(Periodo = case_when(
148
+ Date > last_date %m-% months(12) ~ "Últimos 12 meses",
149
+ Date > last_date %m-% months(24) ~ "Últimos 24 meses",
150
+ TRUE ~ "Últimos 36 meses"
151
+ )) %>%
152
+ summarise(Afiliados_Promedio = mean(n_distinct(id_persona)), .groups = 'drop')
153
+
154
+ Afiliados.Prom.12 <- Afiliados_Promedio$Afiliados_Promedio[Afiliados_Promedio$Periodo=='Últimos 12 meses']
155
+ Afiliados.Prom.24 <- Afiliados_Promedio$Afiliados_Promedio[Afiliados_Promedio$Periodo=='Últimos 36 meses']
156
+ Afiliados.Prom.36 <- Afiliados_Promedio$Afiliados_Promedio[Afiliados_Promedio$Periodo=='Últimos 36 meses']
157
+
158
+ # Edad Promedio
159
+
160
+ Edad_Promedio <- Data_Empresa %>%
161
+ filter(Date > last_date %m-% months(36)) %>% # Filtrar los últimos 36 meses
162
+ group_by(Periodo = case_when(
163
+ Date > last_date %m-% months(1) ~ "Último Mes",
164
+ Date > last_date %m-% months(12) ~ "Últimos 12 meses",
165
+ Date > last_date %m-% months(24) ~ "Últimos 24 meses",
166
+ TRUE ~ "Últimos 36 meses"
167
+ )) %>%
168
+ summarise(Edad_Promedio = mean(Edad), .groups = 'drop')
169
+
170
+ Edad.Prom.1 <- round(Edad_Promedio$Edad_Promedio[Edad_Promedio$Periodo == "Último Mes"],1)
171
+ Edad.Prom.12 <- round(Edad_Promedio$Edad_Promedio[Edad_Promedio$Periodo == "Últimos 12 meses"],1)
172
+ Edad.Prom.24 <- round(Edad_Promedio$Edad_Promedio[Edad_Promedio$Periodo == "Últimos 24 meses"],1)
173
+ Edad.Prom.36 <- round(Edad_Promedio$Edad_Promedio[Edad_Promedio$Periodo == "Últimos 36 meses"],1)
174
+
175
+ ```
176
+
177
+ ```{r genero, echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE}
178
+
179
+ Genero_Distribucion <- Data_Empresa %>%
180
+ group_by(Date, Genero) %>%
181
+ summarise(Count = n_distinct(id_persona), .groups = 'drop') %>%
182
+ group_by(Date) %>%
183
+ mutate(Total = sum(Count),
184
+ Porcentaje = (Count / Total) * 100,
185
+ Porcentaje_Formateado = paste0(format(round(Porcentaje, 1), nsmall = 1), "%"),
186
+ Tooltip = paste(format(Date, "%d-%m-%Y"), "\nGénero: ", Genero, "\n", Porcentaje_Formateado, " (", Count, " personas)"))
187
+
188
+
189
+ ```
190
+
191
+ ```{r plot_genero, message=FALSE, warning=FALSE, include=FALSE, paged.print=TRUE}
192
+
193
+ # Crear el gráfico con ggplot
194
+ ggplot_Generos <- ggplot(Genero_Distribucion, aes(x = Date, y = Porcentaje, fill = Genero, text = Tooltip)) +
195
+ geom_bar(stat = "identity", position = "fill") +
196
+ scale_fill_brewer(palette = "Set1") +
197
+ labs(x = "Fecha",
198
+ y = "Porcentaje",
199
+ title = "Distribución Porcentual por Género",
200
+ subtitle = "Distribución de género por fecha",
201
+ fill = "Género") +
202
+ theme_minimal() +
203
+ theme(plot.title = element_text(hjust = 0.5))
204
+
205
+ # Convertir ggplot a plotly con la configuración correcta de tooltips
206
+ Plot_Generos_Interactive <- plotly::ggplotly(ggplot_Generos, tooltip = "text")
207
+
208
+ # Ajustar formato de fecha en eje x y personalizar la presentación
209
+ # Plot_Generos_Interactive <- Plot_Generos_Interactive %>%
210
+ # layout(xaxis = list(tickformat = "%d-%m-%Y"))
211
+ #
212
+
213
+ ```
214
+
215
+ # Datos básicos de la empresa
216
+
217
+ - Razón Social: `r RazonSocial`
218
+ - Empresa: `r NIT`
219
+ - Mes en estudio: `r MES`
220
+ - Afiliados Promedio (12 meses): `r Afiliados.Prom.12`
221
+ - Afiliados Promedio (24 meses): `r Afiliados.Prom.24`
222
+ - Salario Promedio (12 meses): `r Salario.Prom.12`
223
+ - Salario Promedio (24 meses): `r Salario.Prom.24`
224
+ - Edad Promedio: `r Edad.Prom.1`
225
+
226
+ # Promedio Salarial en el tiempo
227
+
228
+ ```{r show_plot_salarios, echo=FALSE, message=FALSE, warning=FALSE, paged.print=FALSE}
229
+
230
+ # Visualizar el gráfico interactivo
231
+ Plot_Salarios_Interactive
232
+
233
+
234
+ ```
235
+
236
+
237
+