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)

Control 2

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

P1

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

P2

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)]

Respuesta

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.

P3

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()

P4

  • Volviendo al objeto ā€œmapaā€, haga un grĆ”fico de densidad del nĆŗmero de personas. Haga un color y facet_wrap por tramo de edad. Libere el eje X e Y en el facet.
ggplot(mapa, aes(x=poblacion, fill="edad")) + geom_density() +  facet_wrap(~edad,scale='free')

P5

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)

P6

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)