# Cargar librerías necesarias
library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.3.3
# Definir la nueva ruta del shapefile de Medellín
shapefile_path <- "C:/Users/Daniel Restrepo/Desktop/DAP FEBRERO2/LimiteComunaCorregimiento_2014.shp"
# Cargar el shapefile
medellin_map <- st_read(shapefile_path)
## Reading layer `LimiteComunaCorregimiento_2014' from data source
## `C:\Users\Daniel Restrepo\Desktop\DAP FEBRERO2\LimiteComunaCorregimiento_2014.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 23 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -75.71931 ymin: 6.162904 xmax: -75.47185 ymax: 6.374872
## Geodetic CRS: WGS 84
# Crear los datos del IMCV
data <- data.frame(
Cod = c(1, 90, 2, 3, 8, 60, 13, 6, 50, 4, 70, 80, 7, 9, 5, 15, 10, 16, 12, 11, 14),
Comunas = c(
"Popular", "Santa Elena", "Santa Cruz", "Manrique", "Villa Hermosa",
"San Cristóbal", "San Javier", "Doce de Octubre", "San Sebastián de Palmitas",
"Aranjuez", "Altavista", "San Antonio de Prado", "Robledo", "Buenos Aires",
"Castilla", "Guayabal", "La Candelaria", "Belén", "La América",
"Laureles Estadio", "El Poblado"
),
IMCV_2024 = c(35.07, 35.65, 37.77, 38.10, 38.95, 40.72, 41.23, 41.50, 42.11, 43.79,
44.32, 44.64, 45.07, 47.98, 48.41, 52.40, 52.96, 54.77, 60.09, 67.80, 76.26)
)
# 🔹 Normalizar nombres de los corregimientos para que coincidan con el shapefile
data <- data %>%
mutate(Comunas = case_when(
Comunas == "San Cristóbal" ~ "Corregimiento de San Cristóbal",
Comunas == "San Sebastián de Palmitas" ~ "Corregimiento de San Sebastián de Palmitas",
Comunas == "Altavista" ~ "Corregimiento de Altavista",
Comunas == "San Antonio de Prado" ~ "Corregimiento de San Antonio de Prado",
Comunas == "Santa Elena" ~ "Corregimiento de Santa Elena",
TRUE ~ Comunas
))
# Unir los datos del IMCV con el shapefile de Medellín
data_map <- medellin_map %>%
left_join(data, by = c("NOMBRE" = "Comunas"))
# 📌 Verificar si hay comunas sin datos después de la unión
comunas_sin_datos <- data_map %>% filter(is.na(IMCV_2024)) %>% select(NOMBRE)
print(comunas_sin_datos)
## Simple feature collection with 2 features and 1 field
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -75.6319 ymin: 6.176532 xmax: -75.52494 ymax: 6.309879
## Geodetic CRS: WGS 84
## NOMBRE geometry
## 1 Sin nombre 2 MULTIPOLYGON (((-75.55841 6...
## 2 Sin nombre 1 MULTIPOLYGON (((-75.60373 6...
# Crear el mapa interactivo en Leaflet
leaflet(data_map) %>%
addProviderTiles("OpenStreetMap") %>%
addPolygons(
fillColor = ~colorQuantile("YlOrRd", IMCV_2024, n = 5)(IMCV_2024),
weight = 2,
color = "black",
fillOpacity = 0.7,
label = ~paste("Comuna: ", NOMBRE, "<br>IMCV: ", IMCV_2024)
) %>%
addLegend(
pal = colorQuantile("YlOrRd", domain = data_map$IMCV_2024, n = 5),
values = data_map$IMCV_2024,
title = "Índice Multidimensional de Condiciones de Vida (IMCV)"
)