# Instalar y cargar las bibliotecas necesarias
#install.packages("readxl")
#install.packages("dplyr")
#install.packages("ggplot2")
#install.packages("tidyr")
library(readxl)
library(dplyr)
library(ggplot2)
library(tidyr)
# Cargar los datos desde el archivo Excel
file_path <- "Base_Boletin.xlsx" # Cambia esta ruta por la ruta correcta del archivo
df <- read_excel(file_path, sheet = "Hoja1", skip = 2)
# Renombrar las columnas para mayor claridad
colnames(df) <- c('Departamento', 'Zona Urbana', 'Zona Rural', 'Total Población',
'Acueducto Población Servida', 'Acueducto %', 'Alcantarillado Población Servida', 'Alcantarillado %',
'Número de Municipios con Acueducto - ANDA', 'Número de Municipios con Acueducto - Descentralizados',
'Número de Municipios con Acueducto - Total', 'Número de Municipios con Acueducto - Otros Operadores',
'Número de Municipios con Acueducto - Total Municipios',
'Número de Municipios con Alcantarillado - ANDA', 'Número de Municipios con Alcantarillado - Descentralizados',
'Número de Municipios con Alcantarillado - Total', 'Número de Municipios con Alcantarillado - Municipios sin Sistema',
'Número de Municipios con Alcantarillado - Total Municipios',
'Municipios con y sin sistema de alcantarillado', 'Total Municipios')
# Convertir las columnas numéricas al tipo adecuado
df <- df %>%
mutate(across(`Zona Urbana`:`Total Municipios`, as.numeric))
# Resumen estadístico de la población por departamento
summary(df)
## Departamento Zona Urbana Zona Rural Total Población
## Length:15 Min. : 57325 Min. : 97791 Min. : 174094
## Class :character 1st Qu.: 89370 1st Qu.: 147495 1st Qu.: 243602
## Mode :character Median : 187419 Median : 191292 Median : 375796
## Mean : 570469 Mean : 331632 Mean : 902100
## 3rd Qu.: 352586 3rd Qu.: 214553 3rd Qu.: 561707
## Max. :4278514 Max. :2487239 Max. :6765753
##
## Acueducto Población Servida Acueducto % Alcantarillado Población Servida
## Min. : 17957 Min. :31.30 Min. : 16813
## 1st Qu.: 82490 1st Qu.:79.45 1st Qu.: 31804
## Median : 138557 Median :85.10 Median : 47285
## Mean : 516197 Mean :83.62 Mean : 344062
## 3rd Qu.: 313564 3rd Qu.:97.70 3rd Qu.: 136351
## Max. :3871479 Max. :99.60 Max. :2580465
##
## Alcantarillado % Número de Municipios con Acueducto - ANDA
## Min. :26.90 Min. : NA
## 1st Qu.:30.35 1st Qu.: NA
## Median :40.80 Median : NA
## Mean :46.61 Mean :NaN
## 3rd Qu.:53.85 3rd Qu.: NA
## Max. :99.70 Max. : NA
## NA's :15
## Número de Municipios con Acueducto - Descentralizados
## Min. : 2.0
## 1st Qu.: 8.5
## Median : 10.0
## Mean : 20.4
## 3rd Qu.: 16.5
## Max. :153.0
##
## Número de Municipios con Acueducto - Total
## Min. : 0
## 1st Qu.: 1
## Median : 1
## Mean : 2
## 3rd Qu.: 2
## Max. :15
##
## Número de Municipios con Acueducto - Otros Operadores
## Min. : 4.0
## 1st Qu.: 9.0
## Median : 12.0
## Mean : 22.4
## 3rd Qu.: 17.0
## Max. :168.0
##
## Número de Municipios con Acueducto - Total Municipios
## Min. : 1.00
## 1st Qu.: 2.50
## Median : 4.00
## Mean :12.53
## 3rd Qu.: 8.00
## Max. :94.00
##
## Número de Municipios con Alcantarillado - ANDA
## Min. : 9.00
## 1st Qu.: 14.50
## Median : 19.00
## Mean : 34.93
## 3rd Qu.: 22.50
## Max. :262.00
##
## Número de Municipios con Alcantarillado - Descentralizados
## Min. : NA
## 1st Qu.: NA
## Median : NA
## Mean :NaN
## 3rd Qu.: NA
## Max. : NA
## NA's :15
## Número de Municipios con Alcantarillado - Total
## Min. : 1.00
## 1st Qu.: 3.00
## Median : 4.00
## Mean :10.13
## 3rd Qu.: 8.00
## Max. :76.00
##
## Número de Municipios con Alcantarillado - Municipios sin Sistema
## Min. :0.0
## 1st Qu.:0.0
## Median :1.0
## Mean :1.2
## 3rd Qu.:1.0
## Max. :9.0
##
## Número de Municipios con Alcantarillado - Total Municipios
## Min. : 2.00
## 1st Qu.: 3.50
## Median : 5.00
## Mean :11.33
## 3rd Qu.: 8.50
## Max. :85.00
##
## Municipios con y sin sistema de alcantarillado Total Municipios
## Min. : 4.0 Min. : 9.00
## 1st Qu.: 7.5 1st Qu.: 14.50
## Median : 12.0 Median : 19.00
## Mean : 23.6 Mean : 34.93
## 3rd Qu.: 16.0 3rd Qu.: 22.50
## Max. :177.0 Max. :262.00
##
# Visualización de la distribución de la población por zonas urbanas y rurales
df_population <- df %>%
select(Departamento, `Zona Urbana`, `Zona Rural`) %>%
pivot_longer(cols = c(`Zona Urbana`, `Zona Rural`), names_to = "Zona", values_to = "Población")
ggplot(df_population, aes(x = Departamento, y = Población, fill = Zona)) +
geom_bar(stat = "identity", position = "stack") +
labs(title = "Distribución de la Población por Departamento (Zona Urbana y Rural)",
x = "Departamento",
y = "Número de Habitantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Análisis de la cobertura de servicios de acueducto y alcantarillado
df_coverage <- df %>%
select(Departamento, `Acueducto Población Servida`, `Acueducto %`, `Alcantarillado Población Servida`, `Alcantarillado %`)
# Visualización de la población servida por acueducto y alcantarillado
df_coverage_served <- df_coverage %>%
select(Departamento, `Acueducto Población Servida`, `Alcantarillado Población Servida`) %>%
pivot_longer(cols = c(`Acueducto Población Servida`, `Alcantarillado Población Servida`), names_to = "Servicio", values_to = "Población Servida")
ggplot(df_coverage_served, aes(x = Departamento, y = `Población Servida`, fill = Servicio)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Población Servida por Acueducto y Alcantarillado por Departamento",
x = "Departamento",
y = "Número de Habitantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Visualización de los porcentajes de cobertura de acueducto y alcantarillado
df_coverage_percentage <- df_coverage %>%
select(Departamento, `Acueducto %`, `Alcantarillado %`) %>%
pivot_longer(cols = c(`Acueducto %`, `Alcantarillado %`), names_to = "Servicio", values_to = "Porcentaje")
ggplot(df_coverage_percentage, aes(x = Departamento, y = Porcentaje, fill = Servicio)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Porcentaje de Cobertura de Acueducto y Alcantarillado por Departamento",
x = "Departamento",
y = "Porcentaje (%)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Crear un dataframe con los datos proporcionados
data <- data.frame(
Departamento = c("AHUACHAPAN", "SANTA ANA", "SONSONATE", "CHALATENANGO", "LA LIBERTAD", "SAN SALVADOR",
"CUSCATLAN", "LA PAZ", "CABAÑAS", "SAN VICENTE", "USULUTAN", "SAN MIGUEL",
"MORAZAN", "LA UNION"),
ANDA = c(10, 9, 8, 7, 16, 17, 10, 18, 5, 11, 19, 10, 2, 11),
Descentralizados = c(1, 1, 0, 1, 1, 0, 2, 1, 1, 1, 2, 2, 2, 0),
Otros_Operadores = c(1, 3, 8, 25, 5, 2, 4, 3, 3, 1, 2, 8, 22, 7),
Total_Municipios = c(12, 13, 16, 33, 22, 19, 16, 22, 9, 13, 23, 20, 26, 18)
)
# Pivotar el dataframe para gráficos
data_long <- data %>%
pivot_longer(cols = c(ANDA, Descentralizados, Otros_Operadores), names_to = "Sistema", values_to = "Número_de_Municipios")
# Gráfico de barras apiladas
ggplot(data_long, aes(x = Departamento, y = Número_de_Municipios, fill = Sistema)) +
geom_bar(stat = "identity", position = "stack") +
geom_text(aes(label = Número_de_Municipios), position = position_stack(vjust = 0.5), size = 3) +
labs(title = "Número de Municipios con Sistemas de Acueducto por Departamento",
x = "Departamento",
y = "Número de Municipios") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Gráfico de barras lado a lado
ggplot(data_long, aes(x = Departamento, y = Número_de_Municipios, fill = Sistema)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.9)) +
geom_text(aes(label = Número_de_Municipios), position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Número de Municipios con Sistemas de Acueducto por Departamento",
x = "Departamento",
y = "Número de Municipios") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
theme(legend.position = "bottom")

# Datos para sistemas de alcantarillado
data_alcantarillado <- data.frame(
Departamento = c("AHUACHAPAN", "SANTA ANA", "SONSONATE", "CHALATENANGO", "LA LIBERTAD", "SAN SALVADOR",
"CUSCATLAN", "LA PAZ", "CABAÑAS", "SAN VICENTE", "USULUTAN", "SAN MIGUEL",
"MORAZAN", "LA UNION"),
ANDA = c(4, 6, 8, 2, 11, 15, 3, 8, 2, 4, 6, 3, 1, 3),
Descentralizados = c(1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0),
Total_Alcantarillado = c(5, 6, 8, 3, 12, 15, 4, 9, 3, 4, 7, 4, 2, 3),
Municipios_con_y_sin_sistema = c(7, 7, 8, 30, 10, 4, 12, 13, 6, 9, 16, 16, 24, 15),
Total_Municipios = c(12, 13, 16, 33, 22, 19, 16, 22, 9, 13, 23, 20, 26, 18)
)
data_alcantarillado_long <- data_alcantarillado %>%
pivot_longer(cols = c(ANDA, Descentralizados), names_to = "Sistema", values_to = "Número_de_Municipios")
# Gráficos de sistemas de alcantarillado
# Gráfico de barras apiladas
ggplot(data_alcantarillado_long, aes(x = Departamento, y = Número_de_Municipios, fill = Sistema)) +
geom_bar(stat = "identity", position = "stack") +
geom_text(aes(label = Número_de_Municipios), position = position_stack(vjust = 0.5), size = 3) +
labs(title = "Número de Municipios con Sistemas de Alcantarillado por Departamento",
x = "Departamento",
y = "Número de Municipios") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Gráfico de barras lado a lado
ggplot(data_alcantarillado_long, aes(x = Departamento, y = Número_de_Municipios, fill = Sistema)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.9)) +
geom_text(aes(label = Número_de_Municipios), position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Número de Municipios con Sistemas de Alcantarillado por Departamento",
x = "Departamento",
y = "Número de Municipios") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
theme(legend.position = "bottom")
