Spaces:
Runtime error
Runtime error
hedtorresca
commited on
Commit
•
e7f7ab3
1
Parent(s):
776f39e
Delete src/notebooks/Test_3 (1) (2).qmd
Browse files- src/notebooks/Test_3 (1) (2).qmd +0 -237
src/notebooks/Test_3 (1) (2).qmd
DELETED
@@ -1,237 +0,0 @@
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|