rm(list=ls())
install.packages("mapa_zonas")
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)
library(ggplot2)
library(hrbrthemes)
library(dplyr)
library(tidyr)
library(viridis)

Pregunta 1

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

mapa<- mapa_zonas
mapa <- data.table(chilemapas::mapa_zonas)

mapa<- mapa %>% filter(codigo_region==13, codigo_provincia==131)

censo <- censo_2017_zonas
censo <- data.table(chilemapas::censo_2017_zonas)
mapa1 <- merge(mapa,censo,by.x="geocodigo",by.y="geocodigo",all.x=T)

Pregunta 2

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

merge <- merge (mapa1, codigos_territoriales, by="codigo_comuna")
merge[,.N,by=c('codigo_comuna','edad')]

Pregunta 3

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 <- mapa1
mapa2 <- mapa1[,sum(poblacion),by='edad']
names(mapa2)[names(mapa2)=="V1"]<-"Personas"

ggplot(mapa2, aes(x=edad,y=Personas))+
  geom_bar(stat='identity')

Pregunta 4

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(mapa1,aes(poblacion, color=edad)) +
  geom_density() + facet_wrap(facets = 'edad')

Pregunta 5

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

mapa1 <- mapa1 %>%
  filter(edad=="0 a 5")

Intervalos <-  classIntervals(mapa1$poblacion, style = "pretty",n=6)
mapa1$pretty <-  cut(mapa1$poblacion,breaks = Intervalos$brks, include.lowest = T)

ggplot() +
  geom_sf(mapa1,mapping=aes(geometry=geometry, fill=pretty))+
  coord_sf(xlim = c(-71.8,-70), ylim = c(-34,-32))

Pregunta 6

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.

mapa1<- st_sf(mapa1)
bins <- seq(min(mapa1$poblacion),max(mapa1$poblacion),200)
paleta <- colorBin(palette = "Reds",domain = mapa1$poblacion,bins = bins)

labels <- sprintf("<strong>Comuna: %s</strong><br/>poblacion %g ",mapa1$codigo_comuna, mapa1$poblacion) %>% lapply(htmltools::HTML)

leaflet(mapa1)%>% 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")%>%setView(lng=-70.5,lat =-33.600, zoom = 8)