library(data.table)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
data.table 1.14.0 using 3 threads (see ?getDTthreads). Latest news: r-datatable.com
Attaching package: 㤼㸱data.table㤼㸲
The following object is masked _by_ 㤼㸱.GlobalEnv㤼㸲:
.N
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
-- Attaching packages ----------------------------------------- tidyverse 1.3.1 --
v ggplot2 3.3.3 v purrr 0.3.4
v tibble 3.1.1 v dplyr 1.0.5
v tidyr 1.1.3 v stringr 1.4.0
v readr 1.4.0 v forcats 0.5.1
-- Conflicts -------------------------------------------- tidyverse_conflicts() --
x dplyr::between() masks data.table::between()
x dplyr::filter() masks stats::filter()
x dplyr::first() masks data.table::first()
x dplyr::lag() masks stats::lag()
x dplyr::last() masks data.table::last()
x purrr::transpose() masks data.table::transpose()
library(leaflet) # Mapas
library(sp)
library(broom)
library(janitor) #Paquete para limpiar datos
Attaching package: 㤼㸱janitor㤼㸲
The following objects are masked from 㤼㸱package:stats㤼㸲:
chisq.test, fisher.test
library(rgbif) #Datos para ejemplo de mapas
library(sf) #Geografia
Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(chilemapas) #GeograÃa de Chile
Registered S3 method overwritten by 'geojsonlint':
method from
print.location dplyr
library(data.table)
Leaflet#Leaflet es una de las librerÃas abiertas más populares y reconocidas de JavaScript. El #paquete de R con el mismo nombre nos permite crear mapas interactivos. Probablemente ya han #visto mapas de leaflet antes, porque muchÃsimas páginas web las utilizan, como por ejemplo #http://openstreetmap.org.
#leaflet funciona por capas, y al igual que en ggplot existen muchÃsimas capas disponibles #para mejorar el aspecto de nuestros mapas. Hoy veremos:
#- Map Tiles: Elegimos el tipo de mapa que queremos. (addTiles, addProviderTiles) #- Markers: Marcadores especÃficos en un punto del mapa (latitud y longitud) (addMarkers (lat= lng=), addAwesomeMarkers) #- PolÃgonos: una región especÃfica del mapa, como por ejemplo una comuna.
#Para hacer nuestro primer mapa simple, vayamos a Google Maps para encontrar las coordenadas de la unviersidad. Aquà hacemos mapas con diferentes Provider Tiles
leaflet() %>%
addTiles() %>% # Por defecto
addMarkers(lat=-33.414308757047465, lng=-70.55307645736842)
mapa <- leaflet() %>%
addProviderTiles(providers$Stamen.Toner) %>%
addAwesomeMarkers(lat=-33.414308757047465, lng=-70.55307645736842)
mapa
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addMarkers(lat=-33.414308757047465, lng=-70.5530764573684)
#Ahora, vamos a aprender a agregar layers como marcadores o polÃgonos.
#Abrir la base de datos Rendimiento_2018.csv. Esta representa el rendimiento escolar de #alumnos de octavo básico de la Región Metropolitana, para el año 2018.
#Ahora podemos empezar a explorar nuestros datos. Primero hagamos un gráfico simple para ver la distribución de las notas en la muestra completa:
#Podemos hacer un análisis más profundo y separar los datos por género. Con esto, podemos ver diferencias entre el rendimiento de niños y niñas. (Hombres gen_alu=1 y mujeres gen_alu=2) #facet_wrap se separa el gráfico
#Ahora vamos a los mapas:
##Primero, vamos a abrir los datos georeferenciales de las comunas de Santiago, desde el paquete de CRAN chilemapas. Este paquete tiene información para generar mapas de las divisiones polÃticas y adminsitrativas de Chile. Incluye información a nivel comunal, provincial y regional (entre otros). Es muy útil ya que nos entrega la geometrÃa de cada unidad geográfica que quedamos mapear. En este caso, vamos a hacer un mapa de la RM por comuna. ###Una vez que cargamos el paquete, podemos crear objetos con los datos que necesitamos. En este caso, vamos a usar la función filter del paquete dplyr para quedarnos solo con las comunas de la Región Metropolitana.
##Juntamos las comunas de los alumnos con las comunas del mapa.
##Para identificar diferencias entre las comunas de Santiago, vamos a mapear el promedio general de los alumnos, por comuna (esta base de datos, por simplicidad, solo tiene a los alumnos que aprobaron). Esto nos mostrará una representación del promedio general promedio en cada comuna, en un mapa del Gran Santiago. ###Primero, creamos la variable de promedio general:
#Luego, con distinct nos quedamos solo con una observación por comuna, y seleccionamos solo las variables relevantes para crear el mapa en un nuevo objeto. Luego lo transformamos a formato sf para poder trabajar con leaflet
notas_geo <- distinct(notas_geo) %>%
select(codigo_comuna, geometry, nota)
Error in distinct(notas_geo) %>% select(codigo_comuna, geometry, nota) :
no se pudo encontrar la función "%>%"
#Ahora, creemos un mapa. #Con el paquete RColorBrewer podemos elegir muchas paletas de colores preexistentes. Con display.brewer.all() podemos verlas y elegir otra.
pal <- colorNumeric( # definimos la paleta de colores
palette = "PuRd",
domain = rend_2018_geo$nota)
mapa <- leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(data = notas_geo,
fillColor = ~pal(nota),
color = "#b2aeae", # usamos código Hex para los colores
fillOpacity = 0.7, # rellenamos con color los polÃgonos
smoothFactor = 0.2,
weight = 1) %>% # para el grosor de la lÃnea
addLegend(pal = pal, # paleta de colores
values = notas_geo$nota,
position = "bottomright",
title = "Promedio General") %>%
addScaleBar(position = "topright") # Agregar escala arriba a la derecha
sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +no_defs).
Need '+proj=longlat +datum=WGS84'
mapa