Crear un mapa con las áreas representadas en los aglomerados urbanos muestreados por la encuesta permanente de hogares.
En ese mapa mostrar representados los resultados del análisis de la ecnomía popular realizado por el Equilab.
Estos son los datos geograficos disponibles.
# tabla con las opciones
individual_03.hoy
Este es el mapa final luego de combinar todas las áreas tomadas en las disntias EPHs
leaflet( radios.eph.aglom ) %>%
addTiles() %>%
addCircles(data = radios.eph.aglom$centroid)%>%
#agrego circulos con radio tamaño por economia popula pondih
addCircleMarkers(lat = radios.eph.aglom$lon,
lng= radios.eph.aglom$lat,
#radius = ~ sqrt(ECONOMIA_POPULAR_PONDIH),
stroke = FALSE, fillOpacity = 0.5,radius = 3,fillColor = "black"
)%>%
#poligonos con los agromerados
addPolygons(popup = ~ paste( AGLOMERADO),highlightOptions = highlightOptions(color='white',weight=1,bringToFront = TRUE),fillColor = "coral1",color = "black",weight = 1)
Podemos representar casi cualquiera de los valores que calculamos.
Como datos de prueba voy a generar un mapa con la suma de las personas de la economia popular (ECONOMIA_POPULAR_PONDIH), de mas de 20 años, sin importar su situación económica, en la EPH durante 2020.
Esto es un ejemplo nomas para mostrarles las opciones y que me digan que les parece. Todas estas opciones van a ser controladas por el usuarie en el tablero final.
#tabla final con la suma
#x<- radios.eph.aglom.map %>% filter(YEAR=="2020") %>% group_by(c(AGLOMERADO,geometry)) %>% summarise(sumECONOMIA_POPULAR_PONDIH=sum(ECONOMIA_POPULAR_PONDIH))
x<- individual_03.hoy %>% filter(YEAR=="2020") %>% group_by(AGLOMERADO) %>% summarise(sumECONOMIA_POPULAR_PONDIH=sum(ECONOMIA_POPULAR_PONDIH))
x <- x[x$AGLOMERADO != "N/A",]
#Junto los radios con los datos
x <- left_join(x,radios.eph.aglom[,c(1:2)])
## Joining with `by = join_by(AGLOMERADO)`
#remuevo los datos que no tienen asignado aglomerado
x <- st_as_sf(as.data.frame(x),sf_column_name ="geometry",crs='+proj=longlat +datum=WGS84')
x
Mapa suma de trabajadores de la economia popular pondih en el 2020
#creo paleta de colores por cuantiles
qpal <- colorQuantile("Reds", x$sumECONOMIA_POPULAR_PONDIH, na.color = "black")
leaflet()%>%
addTiles()%>%
addPolygons(data=x,
popup = ~ paste( AGLOMERADO, "\n Suma economia popular pondiH = ",sumECONOMIA_POPULAR_PONDIH),
highlightOptions = highlightOptions(color='darkgrey',weight=1,bringToFront = TRUE),
color = ~ qpal(sumECONOMIA_POPULAR_PONDIH)) %>%
addLegend(position = "bottomright", pal = qpal, values = x$sumECONOMIA_POPULAR_PONDIH,
title = "Suma Eco Pop",
opacity = 0.3)
Lamentablemente aun no descule como colorear por dos cariables a la vez. Me tiraron la idea de colorear por correlation “alto-alto” etc. Esto sería hermoso para sumar la variable situación (pobre, etc)
Para eso tengo que jugar un poco con las tablas y juntarlas para tener un dato global y uno differenciado por sexo. Seguro que hay formas mas eficientes pero a las 12 am esto es lo que me salio
x.genero <- individual_03.hoy %>% filter(YEAR=="2020") %>% group_by(AGLOMERADO, SEXO ) %>% summarise(sumECONOMIA_POPULAR_PONDIH=sum(ECONOMIA_POPULAR_PONDIH))
## `summarise()` has grouped output by 'AGLOMERADO'. You can override using the
## `.groups` argument.
#Junto los radios con los datos
x.genero <- left_join(x.genero,radios.eph.aglom[,1:2])
## Joining with `by = join_by(AGLOMERADO)`
## Warning in left_join(x.genero, radios.eph.aglom[, 1:2]): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 57 of `x` matches multiple rows in `y`.
## ℹ Row 1 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
x.genero <- st_as_sf(x.genero,sf_column_name ="geometry",crs='+proj=longlat +datum=WGS84')
#remuevo los datos que no tienen asignado aglomerado
x.genero <- x.genero[x.genero$AGLOMERADO != "N/A",]
#calculo centroide
x.genero$centroid <- st_centroid(x.genero$geometry)
# agrego lat y long
x.genero <- x.genero %>% extract(centroid, c('lon', 'lat'), '\\((.*), (.*)\\)', convert = TRUE,remove = F)
x.genero.tabla <- x.genero%>% pivot_wider(names_from = SEXO,values_from = sumECONOMIA_POPULAR_PONDIH,names_prefix = "suma_EcoPop_")
x.genero.tabla
x.genero.tabla <- left_join(as.data.frame(x.genero.tabla),as.data.frame(x)[,c(1:2)],by="AGLOMERADO")
## Warning in left_join(as.data.frame(x.genero.tabla), as.data.frame(x)[, c(1:2)], : Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 29 of `x` matches multiple rows in `y`.
## ℹ Row 29 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
x.genero.tabla <- st_as_sf(x.genero.tabla,sf_column_name ="geometry",crs='+proj=longlat +datum=WGS84')
Mapa con tablas en popup separados por genero
leaflet()%>%
addTiles()%>%
addPolygons(data=x.genero.tabla,
popup = popupTable(x.genero.tabla, zcol = c("AGLOMERADO", "suma_EcoPop_MUJER","suma_EcoPop_VARON")),
highlightOptions = highlightOptions(color='darkgrey',weight=1,bringToFront = TRUE),
color = ~ qpal(sumECONOMIA_POPULAR_PONDIH)) %>%
addLegend(position = "bottomright", pal = qpal, values = x$sumECONOMIA_POPULAR_PONDIH,
title = "Suma Eco Pop",
opacity = 0.3)
Para generar el mapa base conseguí una base de datos con los polígonos de cada una de als encuestras realizadas. Dado que a nosotros nos interesa tener una representación de los distintos aglomerados y no nos interesa tener un detalle geográfico. Uní los diversos polígonos de cada aglomerado en un meta-aglomerado que une las áreas rastrilladas en el conjunto de las EPH.
Aquí el código
#librerias
library(leaflet)
library(leaflegend)
library(tidyverse)
library(sf)
'%!in%' <- function(x,y)!('%in%'(x,y))
#cargo los aglomerados de la EPH
radios.eph <- read_sf("radios_eph.json")
#transformo las escalas
radios.eph <- st_transform(radios.eph,'+proj=longlat +datum=WGS84') #4326) #pongo en codigo leaflet
#cree objectos con centroides
radios.eph$centroid <- st_centroid(radios.eph$geometry)
radios.eph <- cbind(radios.eph,st_coordinates(radios.eph$centroid ))
#reome thingswithout location
radios.eph <- radios.eph[!is.na(radios.eph$X),]
radios.eph <- distinct(radios.eph)
radios.eph$aglomerado_y_loc <- paste0(radios.eph$AGLOMERADO,"_",radios.eph$localidade)
#combinar geometrías por aglomerado
radios.eph.aglom <- radios.eph %>%
group_by(AGLOMERADO) %>%
summarize(geometry = st_union(geometry))
#agrego centroide
radios.eph.aglom$centroid <- st_centroid(radios.eph.aglom$geometry)
# agrego lat y long
radios.eph.aglom <- radios.eph.aglom %>% extract(centroid, c('lat', 'lon'), '\\((.*), (.*)\\)', convert = TRUE,remove = F)
#radios.eph.aglom$centroid <- st_centroid(radios.eph.aglom$geometry)
#pongo nuevamente la proyección de leaflet
radios.eph.aglom <- st_as_sf(radios.eph.aglom,sf_column_name ="geometry",crs='+proj=longlat +datum=WGS84')
leaflet( radios.eph.aglom ) %>%
addTiles() %>%
addCircles(data = radios.eph.aglom$centroid)%>%
#agrego circulos con radio tamaño por economia popula pondih
addCircleMarkers(lat = radios.eph.aglom$lon,
lng= radios.eph.aglom$lat,
#radius = ~ sqrt(ECONOMIA_POPULAR_PONDIH),
stroke = FALSE, fillOpacity = 0.5
)%>%
#poligonos con los agromerados
addPolygons(popup = ~ paste( AGLOMERADO),highlightOptions = highlightOptions(color='white',weight=1,bringToFront = TRUE))
#cargo los datos de la EPH resumen
load("base_ep_resumen.RData")
#Para juntar los datos tengo que asegurarme que los nombres de los municipios en el mapa y en los datos de la EPH sea igual
radios.eph$AGLOMERADO <- toupper(radios.eph$eph_aglome)
#tengo que editar los nombres
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="PARTIDOS DEL GBA" ] <- "PARTIDOS GBA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="GRAN PARANÁ"] <- "GRAN PARANA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="GRAN CÓRDOBA"] <- "GRAN CORDOBA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="GRAN TUCUMÁN - TAFI VIEJO"] <- "GRAN TUCUMAN - TAFI V."
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="SAN LUIS - EL CHORRILLO"] <- "GRAN SAN LUIS"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="SALTA"] <- "GRAN SALTA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="MAR DEL PLATA - BATÁN" ] <- "MAR DEL PLATA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="SANTIAGO DEL ESTERO - LA BANDA" ] <-"S. DEL ESTERO - LA BANDA"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO== "SAN NICOLAS - VILLA CONSTITUCIÓN" ] <- "SAN NICOLAS - V. CONSTITUCION"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO== "SAN NICOLAS - VILLA CONSTITIUCIÓN" ] <- "SAN NICOLAS - V. CONSTITUCION"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO== "VIEDMA - CARMEN DE PATAGONES" ] <- "VIEDMA - C. DE PATAGONES"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="COMODORO RIVADAVIA - RADA TILLY" ] <- "C. RIVADAVIA - R. TILLY"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="NEUQUÉN - PLOTTIER" ] <-"NEUQUEN - PLOTTIER"
radios.eph.aglom$AGLOMERADO[radios.eph.aglom$AGLOMERADO=="JUJUY - PALPALÁ" ] <- "JUJUY - PALPALA"
#Algunos datos no tienen aglomerado... los voy a dejar por fuer por ahora
individual_03.hoy[individual_03.hoy$AGLOMERADO == "N/A",]
individual_03.hoy$AGLOMERADO[individual_03.hoy$AGLOMERADO== "USUAHIA - RIO GRANDE" ] <- "USHUAIA - RIO GRANDE" #error en eph
#guardo los datos
saveRDS(radios.eph.aglom,"geoms.rds")
save(individual_03.hoy,file="base_ep_resumen.RData")