# 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")