library(data.table)
library(tidyverse)
library(leaflet)
library(sp)
library(broom)
library(janitor)
library(rgbif)
library(sf)
library(chilemapas)
library(RColorBrewer)
library(classInt)
library(plotly)
Lynn Richards 04-10-2021 ## Formato El formato de respuesta es el siguiente:
Antes de la respuesta debes agregar un encabezado de tercer nivel (###) con P y el nĆŗmero de pregunta. Abajo del encabezado, debe estar escrita la pregunta. Agregar la linea de código. Agregar el output de ser necesario. Si requieres agregar alguna respuesta analĆtica, agregar al final de la pregunta (despuĆ©s del output). El nombre del archivo .rmd debe tener la siguiente forma: Control 2 - Apellido. El formato tiene un puntaje asignado dentro de la nota (3 puntos) Importante: Deben ser suprimidos los mensajes y warnings del informe. (3 puntos)
Se habilitarĆ” en webcursos un apartado para que envĆen el control publicada en su rpubs y el archivo .rmd. El plazo para enviar es hasta finalizar la clase. Limpie el entorno Cargue los paquetes
Cargue la base āmapa_zonasā, la cual proviene del paquete chilemapas. Transformelo a data.table y guarde este objeto como āmapaā y filtre sus filas para quedarse con la region ā13ā (character) y provincia ā131ā (character).
Cargue tambiĆ©n la base ācenso_2017_zonasā (tambiĆ©n de chilemapas), transformela a data.table y guardela como censo.
Por Ćŗltimo, haga un merge entre ambas bases, de forma que solo queden aquellas observaciones de la región ā13ā y provincia ā131ā.
mapa <- mapa_zonas
mapa <- data.table(mapa_zonas)
mapa <- mapa[codigo_region== "13"]
mapa <- mapa[codigo_provincia== "131"]
censo <- censo_2017_zonas
censo <- data.table(censo)
mapa <- merge(mapa, censo, by="geocodigo")
Realice un merge entre mapa y codigos_territoriales (la cual proviene del paquete chilemapas). ĀæQuĆ© comuna tiene una mayor población de edad == ā0 a 5ā?. Responda fuera del chunk.
codigos_territoriales <- codigos_territoriales
codigos_territoriales <- data.table(codigos_territoriales)
mapa <- merge(mapa, codigos_territoriales, by="codigo_comuna")
mapa[edad=="0 a 5"]
## codigo_comuna geocodigo codigo_provincia.x codigo_region.x geometry
## 1: 13101 13101011001 131 13 <XY[1]>
## 2: 13101 13101011002 131 13 <XY[1]>
## 3: 13101 13101011003 131 13 <XY[1]>
## 4: 13101 13101011004 131 13 <XY[1]>
## 5: 13101 13101011005 131 13 <XY[1]>
## ---
## 1428: 13132 13132041007 131 13 <XY[1]>
## 1429: 13132 13132041008 131 13 <XY[1]>
## 1430: 13132 13132051001 131 13 <XY[1]>
## 1431: 13132 13132051002 131 13 <XY[1]>
## 1432: 13132 13132051003 131 13 <XY[1]>
## edad poblacion nombre_comuna codigo_provincia.y nombre_provincia
## 1: 0 a 5 68 Santiago 131 Santiago
## 2: 0 a 5 86 Santiago 131 Santiago
## 3: 0 a 5 64 Santiago 131 Santiago
## 4: 0 a 5 58 Santiago 131 Santiago
## 5: 0 a 5 44 Santiago 131 Santiago
## ---
## 1428: 0 a 5 292 Vitacura 131 Santiago
## 1429: 0 a 5 229 Vitacura 131 Santiago
## 1430: 0 a 5 167 Vitacura 131 Santiago
## 1431: 0 a 5 185 Vitacura 131 Santiago
## 1432: 0 a 5 167 Vitacura 131 Santiago
## codigo_region.y nombre_region
## 1: 13 Metropolitana de Santiago
## 2: 13 Metropolitana de Santiago
## 3: 13 Metropolitana de Santiago
## 4: 13 Metropolitana de Santiago
## 5: 13 Metropolitana de Santiago
## ---
## 1428: 13 Metropolitana de Santiago
## 1429: 13 Metropolitana de Santiago
## 1430: 13 Metropolitana de Santiago
## 1431: 13 Metropolitana de Santiago
## 1432: 13 Metropolitana de Santiago
mapa[,.(nombre_comuna, poblacion),by=.(edad)]
## edad nombre_comuna poblacion
## 1: 0 a 5 Santiago 68
## 2: 0 a 5 Santiago 86
## 3: 0 a 5 Santiago 64
## 4: 0 a 5 Santiago 58
## 5: 0 a 5 Santiago 44
## ---
## 5724: 65 y mas Vitacura 532
## 5725: 65 y mas Vitacura 688
## 5726: 65 y mas Vitacura 538
## 5727: 65 y mas Vitacura 562
## 5728: 65 y mas Vitacura 457
comuna <- mapa[, list(poblacion= sum(poblacion)) , by = .(nombre_comuna)]
La comuna con mayor poblacion de edad entre 0 a 5 aƱos es Maipu, con 501388 individuos. Esto se puede ver simplemente abriendo la base creada (ācomunaā) y ordenando la poblacion de mayor a menor, ahĆ se verĆ” la comuna com mas poblacion dentro de la edad de 0 a 5 aƱos.
Realice un grĆ”fico de barras que muestre el nĆŗmero de personas por tramo de edad (āedadā). Para esto, cree un nuevo objeto llamado mapa2 (ya en el chuck), elimine la columna āgeometryā y despuĆ©s proceda a sumar personas por tramo de edad.
mapa2 <- mapa[, list(poblacion= sum(poblacion)) , by = .(edad)]
ggplot (mapa2,aes(x = edad, y = poblacion)) + geom_col(color="black", fill="lightblue", width = 1) + scale_y_continuous()
ggplot(mapa, aes(x=poblacion, fill="edad")) + geom_density() + facet_wrap(~edad,scale='free')
Filtre la base āmapaā para quedarse con aquellas filas que cumplen que edad == ā0 a 5ā. Luego utilice la función de classIntervals para crear 6 intervalos de la población. Utilice el style visto en clases . Por Ćŗltimo, haga un mapa de ggplot2 con el fill de la variable categórica creada (la de los intervalos).
mapa3 <- mapa[edad== "0 a 5"]
breaks_pretty <- classIntervals(mapa3$poblacion, style = "pretty",n=6)
mapa3$pretty <- cut(mapa3$poblacion,breaks = breaks_pretty$brks, include.lowest = T)
pregunta5 <- data.table(mapa3)
pregunta5.2 <- ggplot() + geom_sf(pregunta5, mapping = aes(geometry=geometry, fill=pretty, text = paste("Comuna:", nombre_comuna))) + theme_void() + labs(title="Poblacion de individuos entre 0 y 5 aƱos") + scale_fill_viridis_d(name="Intervalos")
mapa
## codigo_comuna geocodigo codigo_provincia.x codigo_region.x geometry
## 1: 13101 13101011001 131 13 <XY[1]>
## 2: 13101 13101011001 131 13 <XY[1]>
## 3: 13101 13101011001 131 13 <XY[1]>
## 4: 13101 13101011001 131 13 <XY[1]>
## 5: 13101 13101011002 131 13 <XY[1]>
## ---
## 5724: 13132 13132051002 131 13 <XY[1]>
## 5725: 13132 13132051003 131 13 <XY[1]>
## 5726: 13132 13132051003 131 13 <XY[1]>
## 5727: 13132 13132051003 131 13 <XY[1]>
## 5728: 13132 13132051003 131 13 <XY[1]>
## edad poblacion nombre_comuna codigo_provincia.y nombre_provincia
## 1: 0 a 5 68 Santiago 131 Santiago
## 2: 6 a 14 55 Santiago 131 Santiago
## 3: 15 a 64 1724 Santiago 131 Santiago
## 4: 65 y mas 299 Santiago 131 Santiago
## 5: 0 a 5 86 Santiago 131 Santiago
## ---
## 5724: 65 y mas 562 Vitacura 131 Santiago
## 5725: 0 a 5 167 Vitacura 131 Santiago
## 5726: 6 a 14 187 Vitacura 131 Santiago
## 5727: 15 a 64 1804 Vitacura 131 Santiago
## 5728: 65 y mas 457 Vitacura 131 Santiago
## codigo_region.y nombre_region
## 1: 13 Metropolitana de Santiago
## 2: 13 Metropolitana de Santiago
## 3: 13 Metropolitana de Santiago
## 4: 13 Metropolitana de Santiago
## 5: 13 Metropolitana de Santiago
## ---
## 5724: 13 Metropolitana de Santiago
## 5725: 13 Metropolitana de Santiago
## 5726: 13 Metropolitana de Santiago
## 5727: 13 Metropolitana de Santiago
## 5728: 13 Metropolitana de Santiago
ggplotly(pregunta5.2)
Repita el grƔfico anterior pero con el paquete de leaflet. Se incluyen los bins y paleta, pero usted debe crear los labels y el mapa. No se olvide de transformar la base a spatial.frame e incluir el zoom a Santiago.
mapa3 <- st_sf(mapa3)
bins <- seq(min(mapa3$poblacion),max(mapa3$poblacion),200)
paleta <- colorBin(palette = "Reds",domain = mapa3$poblacion,bins = bins)
mapa3 <- st_sf(mapa3)
labels <- sprintf(
"<strong>Comuna segun geocodigo: %s</strong><br/>Poblacion: %g",
mapa3$geocodigo, mapa3$poblacion
) %>% lapply(htmltools::HTML) # Labels al pasar el mouse arriba del mapa
leaflet(mapa3)%>%
addProviderTiles(provider = providers$OpenStreetMap.Mapnik)%>%
addPolygons(color = ~paleta(poblacion),
weight = 1,
fillOpacity = 0.8,
label = labels)%>%
addLegend(pal = paleta, values = ~bins, opacity = 1,position = "bottomright",title ="Poblacion de individuos entre 0 y 5 aƱos") %>%
setView(lng=-70.66005,lat =-33.44120, zoom = 10.4)