Borrar todo el enviroment
rm(list = ls())
Cargue las librerias data.table, readxl, ggplot2, chilemapas,sf,sp,leaflet. Cargue, además la base de datos ENE.csv con el nombre ENE y la base de comunas.xls con el nombre comunas el este debe tener la clase de data.table y realice un merge con estas dos bases, ENE la variable es r_c_p .
#Cargar paquetes
library(data.table)
library(ggplot2)
library(plotly)
library(tidyverse)
library(leaflet)
library(sp)
library(broom)
library(janitor)
library(rgbif)
library(sf)
library(chilemapas)
library(RColorBrewer)
library(scales)
library(stringr)
#Cargar bases de datos
comunas<-fread('comunas.csv')
class(comunas)
## [1] "data.table" "data.frame"
ENE<-fread('ENE.csv')
class(ENE)
## [1] "data.table" "data.frame"
#Merge
comuna_empleo <- merge(comunas,ENE,by.x='codigo_comuna', by.y = 'r_p_c')
¿Cuántas personas fueron encuestadas y a cuántas personas representa esta encuesta? Tenga en cuenta lo que hablamos del factor de expansión en clases y ayudantÃa, la variable de factor expansión es fact_cal
#Cantidad de personas que fueron encuestadas
comuna_empleo[,.N]
## [1] 73797
#Cantidad de personas de la poblacion que son representadas a traves de la muestra
comuna_empleo[,sum(fact_cal,na.rm = TRUE)]
## [1] 15853046
La cantidad de personas que fueron encuestadas es de 73.797 y la cantidad de personas de la poblacion que son representadas a traves de la muestra es de 15.853.046
GrafÃque el número de personas por región, utilice la función ggplot.
#Nueva base que contenga el numero de personas por region
p_region<-comuna_empleo[,.(total=sum(fact_cal)),by=.(region1)]
#Grafico
ggplot(data=p_region,mapping = aes(x=region1,y=total)) + geom_bar (stat = 'identity')
Aguegue tÃtulo, subtÃtulo y fuente al gráfico anterior, además arregle el eje x para que sea legible.
ggplot(data=p_region,mapping = aes(x=region1,y=total)) + geom_bar (stat = 'identity') +
labs(title = 'Número de personas', subtitle = 'Por región',
caption = 'Fuente: Datos Encuesta Nacional de Empleo',
x = 'Region',y = 'N° de personas') +
theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_y_continuous(labels = number_format(scale = 0.000001, suffix = " Millones"))
Escoja una región al azar. Cree un objeto que se llame Desempleo que contenga el número de personas por situación ocupacional y comuna de la región que eligió. Cree una nueva variable que se llame Tdesempleo utilizando la siguiente fórmula:
Tdesempleo=Cesantes/(Ocupados+Cesantes)
Hint: Después de crear el objeto, cree una columna que sea la suma de ocupados por comuna, otra que sea la suma de cesantes por comuna, para después crear la tasa de desempleo que sea la suma de cesantes por comuna dividido por la suma de ocupados por comuna más la suma de cesantes por comuna.
#Region escogida: Antofagasta
#crear objeto que contiene numero de personas por situacion ocupacional y comuna de la region de Antofagasta
Antofagasta<-comuna_empleo[,.('personas'=sum(fact_cal)),by=c('situacion_ocupacional', 'nombre_comuna','region1','codigo_comuna')]
desempleo<-Antofagasta[region1=='Antofagasta']
#Crear variable que tenga el numero total de ocupados y cesantes por comuna
desempleo2 <- dcast(desempleo
, nombre_comuna+region1+codigo_comuna
~situacion_ocupacional,
value.var = "personas")
#Crear variable tasa de desempleo
desempleo2[,'tasa_desempleo':=CESANTE/(OCUPADO+CESANTE)]
Haga un gráfico de barras con las comunas en el eje y, y la tasa de desempleo en el eje x.
Bonus: Agreguele tÃtulo, subtÃtulo, fuente y color al gráfico.
ggplot(data=desempleo2,mapping = aes(x=tasa_desempleo,y=nombre_comuna,fill=nombre_comuna)) + geom_bar (stat = 'identity') +
labs(title = 'Tasa de desempleo por comuna', subtitle = 'Región de Antofagasta',
caption = 'Fuente: Datos Encuesta Nacional de Empleo',
x = 'Tasa de desempleo',y = 'Comunas') +
theme(axis.text.x = element_text(angle=90, vjust=0.5))
Cree un mapa con la tasa de desempleo comunal, utilizando el paquete chilemapas. Para esto, cree un objeto llamado mapa con el merge entre la geografÃa y la información de las comunas. (Con el paquete leaflet)
Hint: Después de realizar el merge, elimine los duplicados de las comunas del objeto mapa y seleccione solo las variables nombre_comuna, geometry, T_desempleo
Bonus 1: Agreguele labels al mapa.
Bonus 2: Realice el mismo mapa pero con ggplot.
help(package="chilemapas")
base_mapa<- mapa_comunas
comunas_filtro<- mapa_comunas %>% filter(codigo_region=="02")
desempleo2[,codigo_comuna:= ifelse
(codigo_comuna < 10000 , paste0("0",desempleo2$codigo_comuna), desempleo2$codigo_comuna)]
mapa<-merge(comunas_filtro,desempleo2,by.x="codigo_comuna",by.y="codigo_comuna")
class(mapa)
## [1] "data.frame"
mapa <- st_as_sf(mapa)
bins<-seq(0,0.2,0.02)
paleta<-colorBin(palette = "BuPu",domain = desempleo2$tasa_desempleo,bins = bins)
labels <- sprintf(
"<strong>Comuna: %s</strong><br/>Tasa de desempleo: %g",
mapa$nombre_comuna, mapa$tasa_desempleo
) %>% lapply(htmltools::HTML)
leaflet(mapa) %>%
addProviderTiles(provider = providers$OpenStreetMap.Mapnik)%>%
addPolygons(fillColor = ~paleta(mapa$tasa_desempleo),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = paleta, values = ~bins, opacity = 1,position = "bottomright",title ="Tasa de desempleo")
bonus 2
class(mapa$geometry)
## [1] "sfc_MULTIPOLYGON" "sfc"
ggplot(mapa,aes(geometry = geometry, fill=nombre_comuna))+ geom_sf() +
geom_sf(data=mapa_zonas %>% filter(codigo_region == '02'),fill=NA) +
theme_void() +
scale_fill_discrete(name="Comuna")