library(tidyverse)
library(leaflet)
library(leaflet.extras)
library(leafsync)
library(htmltools)
library(leaflet.extras2)
library(leaflet.providers)Tarea 1: Curso de R con orientación Geoespacial
Realizar un panel con 4 mapas usando los datos de carpetas de víctimas de la PGJ de la Ciudad de México.
Voy a considerar datos de 4 años diferentes. Dado que los datos de 2024 no están completos (la fuente indica que son de enero a julio de 2024) no los voy a considerar. Tampoco uno las bases en una sola dado que los datos pueden tener diferentes campos, por cambios metodológicos.
# Cargar los datos
linkfgj23 <- "https://archivo.datos.cdmx.gob.mx/FGJ/victimas/victimasFGJ_2023.csv"
linkfgj22 <- "https://archivo.datos.cdmx.gob.mx/FGJ/victimas/victimasFGJ_2022.csv"
linkfgj21 <- "https://archivo.datos.cdmx.gob.mx/FGJ/victimas/victimasFGJ_2021.csv"
linkfgj20 <- "https://archivo.datos.cdmx.gob.mx/FGJ/victimas/victimasFGJ_2020.csv"
d23 <- read_csv(linkfgj23)
d22 <- read_csv(linkfgj22)
d21 <- read_csv(linkfgj21)
d20 <- read_csv(linkfgj20)La siguiente estructura repite el análisis para cada uno de los años.
datos <- paste("d",20:23,sep="")
mapas <- list(NULL)
colores <- c("black","red","blue","yellow")
for (i in 1:length(datos)){
A <- get(datos[i]) %>%
filter(!is.na(latitud) & !is.na(longitud)) %>%
filter(categoria_delito == "HOMICIDIO DOLOSO")
rr <- tags$div(HTML(eval(parse(text = "paste('<p> Año',datos[i],'</p>')"))))
mapas[[i]] <- leaflet() %>%
addProviderTiles(providers$OpenStreetMap) %>% # siempre va
addCircleMarkers(data = A,
lng = ~longitud,
lat = ~latitud,
radius = 5,
color = colores[i],
opacity = 0.7,
weight = 1) %>%
addControl(rr, position = "bottomleft")
}
sync(mapas,ncol=2)Finalmente, se guarda el archivo en un documento html para consulta.
save_html(sync(mapas,ncol=2),"mapa_homicidios_por_año.html")