This is an R Markdown Notebook, acerca de estadísticas agrícolas correspondientes al departamento de Nariño, Colombia. Ha sido creado, compilado y publicado desde RStudio. Desarrollado por una estudiante de la Universidad Nacional de Colombia, vinculada al curso de Geomática Básica en la Facultad de Ciencias Agrarias.
La exploración de estadísticas no espaciales es esencial para comprender lo que está sucediendo en los territorios. Varias bibliotecas R, en particular dplyr y tidyverse, son muy útiles para explorar y resumir estadísticas.
Por otro lado, las operaciones geoespaciales pueden mejorar nuestra comprensión de varios problemas que afectan a las regiones geográficas. Por ejemplo, desea averiguar cuál es la ubicación de aquellos municipios cuyos rendimientos de cosecha son sobresalientes (o, alternativamente, más bajos que el promedio). Para realizar dicha exploración, necesitamos unir datos no espaciales con datos espaciales.
Además, también podríamos explorar uniones espaciales. Estas operaciones se basan en la intersección entre dos objetos espaciales, a menudo puntos y los polígonos.
Comencemos por eliminar el contenido de la memoria:
rm(list=ls())
Ahora, instalemos las bibliotecas que necesitamos. Tenga en cuenta que, en el siguiente fragmento, cualquier paquete se instala solo si no se ha instalado previamente.
list.of.packages <- c("here", "tidyverse", "rgeos", "maptools", "raster", "sf", "viridis", "rnaturalearth", "GSODR", "ggrepel", "cowplot")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
Ahora, cargamos las librerías
library(here)
## Warning: package 'here' was built under R version 3.6.3
## here() starts at D:/Mis documentos/RStudio_Works
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.3
## -- Attaching packages ----------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.3
## v tibble 2.1.3 v dplyr 0.8.4
## v tidyr 1.0.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.6.3
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'purrr' was built under R version 3.6.3
## Warning: package 'dplyr' was built under R version 3.6.3
## -- Conflicts -------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(rgeos)
## Loading required package: sp
## Warning: package 'sp' was built under R version 3.6.3
## rgeos version: 0.5-1, (SVN revision 614)
## GEOS runtime version: 3.6.1-CAPI-1.10.1
## Linking to sp version: 1.3-1
## Polygon checking: TRUE
library(maptools)
## Checking rgeos availability: TRUE
library(raster)
## Warning: package 'raster' was built under R version 3.6.3
##
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
##
## select
## The following object is masked from 'package:tidyr':
##
## extract
library(sf)
## Warning: package 'sf' was built under R version 3.6.3
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library(viridis)
## Warning: package 'viridis' was built under R version 3.6.3
## Loading required package: viridisLite
## Warning: package 'viridisLite' was built under R version 3.6.3
library(rnaturalearth)
## Warning: package 'rnaturalearth' was built under R version 3.6.3
library(GSODR)
## Warning: package 'GSODR' was built under R version 3.6.3
library(ggrepel)
## Warning: package 'ggrepel' was built under R version 3.6.3
library(cowplot)
## Warning: package 'cowplot' was built under R version 3.6.3
##
## ********************************************************
## Note: As of version 1.0.0, cowplot does not change the
## default ggplot2 theme anymore. To recover the previous
## behavior, execute:
## theme_set(theme_cowplot())
## ********************************************************
Teniendo descargada la base de datos estadísticos, en formato csv y luego de realizar la limpieza de los datos requeridos al departamento a trabajar en este caso Nariño. Leemos el archivo con la base de datos estadísticos:
datos<- read_csv("D:/Mis documentos/RStudio_Works/Base_Definitiva.csv")
## Parsed with column specification:
## cols(
## COD = col_double(),
## DEPARTAMENTO = col_character(),
## COD_MUN = col_double(),
## MUNICIPIO = col_character(),
## GRUPO = col_character(),
## SUBGRUPO = col_character(),
## CULTIVO = col_character(),
## ANO = col_double(),
## AREA_Siembra = col_double(),
## AREA_Cosecha = col_double(),
## PRODUCCION = col_double(),
## RENDIMIENTO = col_double(),
## ESTADO = col_character(),
## CICLO = col_character()
## )
Revisamos cuales son los atributos de los datos:
head(datos)
tail(datos)
Tenga en cuenta que cada municipio tiene estadísticas sobre el área sembrada, área cosechada, y rendimiento para diferentes cultivos en diferentes años.
Los atributos SUBGRUPO y CULTIVO parecen referirse a la misma cosa (es decir, un cultivo). Los cultivos se clasifican además en un GRUPO dado.
En esta tabla, no tenemos unidades. Sin embargo, si verificamos el archivo csv original, encontramos que las unidades de área son hectáreas y que las unidades de rendimiento son Ton / ha.
Utilizaremos la biblioteca dplyr para explorar el contenido del objeto de datos.
Primero, obtenemos un resumen del rendimiento (es decir, el rendimiento promedio durante varios años) por grupo y municipio:
datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(RENDIMIENTO, na.rm = TRUE)) -> rend_resumen
### Let's visualize only the first six records
head(rend_resumen)
Ahora vamos a calcular cual es el rendimiento promedio por GRUPO de los municipios de Nariño:
datos %>%
group_by(GRUPO) %>%
summarise(rend_dep = mean(RENDIMIENTO, na.rm = TRUE)) -> rend_narino
rend_narino
Notese que los rendimientos más altos corresponden a los cultivos de HORTALIZAS en su gran parte, seguido de la producción de TUBÉRCULOS Y PLÁTANOS Y FRUTALES.
Luego, veamos cuáles son los municipios con mayor rendimiento para cada grupo de cultivos en 2018:
datos %>%
filter(ANO==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_rend = max(RENDIMIENTO, na.rm = TRUE)) %>%
slice(which.max(max_rend)) -> rend_max_18
rend_max_18
Por otro lado, el municipio con el máximo rendimiento de HORTALIZAS es CHACHAGUI, seguido del máximo rendimiento de TUBERCULOS Y PLÁTANOS en SANDONA.
Ahora, veamos cuáles son los municipios con mayor área cosechada para cada grupo de cultivos en 2018:
datos %>%
filter(ANO==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_area_cosecha = max(AREA_Cosecha, na.rm = TRUE)) %>%
slice(which.max(max_area_cosecha)) -> area_cosecha_max
area_cosecha_max
Respecto a los municipios con la máxima área cosechada en el año 2018, cabe resaltar a TUMACO con la cosecha de OLEAGINOSAS y OTRAS PERMANENTES con una área de cosecha de 17600 y 14000 ha respectivamente. En Tumaco se destaca la producción de Palma Africana entre los cultivos de aleaginosas.
Para hacer una consulta más específica, seleccionamos la producción de PALMA DE ACEITE en Tumaco para cada año:
datos %>%
filter(MUNICIPIO=="TUMACO" & SUBGRUPO=="PALMA DE ACEITE") %>%
group_by(ANO, CULTIVO) -> tumaco_palma
tumaco_palma
Al clasidicar la información por años, podemos observar que el año 2007 presenta la mayor área de siembra y que esta empezó a disminuir drássticamente hasta el 2012 y apartir del 2013 volvió a aumentar el área de siembra. Sin embargo cabe resaltar que en los últimos años 2015-2018, se han presentado los menores rendimientos en ton/ha.
Hagamos una exploración gráfica básica:
g <- ggplot(aes(x=ANO, y=PRODUCCION/1000), data = tumaco_palma) + geom_bar(stat='identity') + labs(y='Producción de Palma de Aceite [Ton x 1000]')
g + ggtitle("Evolución de la producción de Palma de Aceite en Tumaco de 2007 a 2018") + labs(caption= "Basado en EMA data (DANE, 2018)")
Ahora, investiguemos qué cultivos tuvieron la mayor área cosechada en 2018:
datos %>%
filter(ANO==2018) %>%
group_by(GRUPO) %>%
summarize(sum_area_cosecha = sum(AREA_Cosecha, na.rm = TRUE)) %>%
arrange(desc(sum_area_cosecha)) -> total_area_cosecha
total_area_cosecha
Con lo anterior se pude observar que el cultivo de Otros permanentes ocupan el mayor área cosechada en Nariño para el 2018. ¿Qué cultivos pertenecen a este GRUPO? Puede buscar más información en DANE, la agencia gubernamental a cargo de las estadísticas nacionales en Colombia.
También podemos buscar esta información en los datos mismos:
datos %>%
filter(GRUPO=="OTROS PERMANENTES" & ANO==2018) %>%
group_by(CULTIVO) %>%
summarize(sum_cosecha = sum(AREA_Cosecha, na.rm = TRUE)) %>%
arrange(desc(sum_cosecha)) -> total_cosecha
total_cosecha
Notamos que el CAFÉ es fundamental para la producción agrícola en Nariño.
Ahora, veamos cuáles son los municipios con mayor área cosechada para cada cultivo permanente en 2018:
datos %>%
filter(ANO==2018 & GRUPO=="OTROS PERMANENTES") %>%
group_by(CULTIVO, MUNICIPIO) %>%
summarize(max_area2 = max(AREA_Cosecha, na.rm = TRUE)) %>%
slice(which.max(max_area2)) -> area_cosecha2
area_cosecha2
Volvamos a los datos de Cultivos Permanentes. Antes de trazar, necesitaremos agregar, al objeto total_area_cosecha, un nuevo campo con abreviaturas para cada GRUPO de cultivos. De lo contrario, la trama se verá desordenada.
total_area_cosecha$CROP <- abbreviate(total_area_cosecha$GRUPO, 3)
Ahora, podemos gráficar los datos:
g <- ggplot(aes(x=CROP, y=sum_area_cosecha), data = total_area_cosecha) + geom_bar(stat='identity') + labs(y='Total Área Cosechada [Ha]')
g+ ggtitle("Total Área Cosechada por grupos de cultivos en 2018 para Nariño") + theme(plot.title = element_text(hjust = 0.5)) +
labs(caption= "Basado en EMA data (DANE, 2018)")
Usamos los datos administrativos de Nariño.
Comencemos leyendo los datos usando la biblioteca sf:
nari_munic <- sf::st_read("D:/Mis documentos/RStudio_Works/52_NARIÑO/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
## Reading layer `MGN_MPIO_POLITICO' from data source `D:\Mis documentos\RStudio_Works\52_NARIÑO\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
## Simple feature collection with 64 features and 9 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -79.01021 ymin: 0.3613481 xmax: -76.83368 ymax: 2.683898
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
¿Qué es nari_munic?
nari_munic
Tenga en cuenta que nari_munic es una colección de características simple. Tenga en cuenta también que los datos utilizan el sistema de referencia de coordenadas geográficas WGS1984 (es decir, código 4326 epsg). Podemos usar la función left_join para unir los municipios y las estadísticas agrícolas seleccionadas.
Necesitamos un atributo común (o variable compartida) para hacer la unión. El mejor atributo es una identificación. En nari_munic, el atributo MPIO_CCDGO parece estar bien (se lee 52683 para Sandona). En datos, el atributo correspondiente es COD_MUN (lee 52683 para Sandona). Verifiquemos lo anterior:
datos %>% filter (MUNICIPIO =="SANDONA") -> sandona_datos
sandona_datos
class(sandona_datos$COD_MUN)
## [1] "numeric"
Para poder hacer la unión, necesitamos cambiar tanto el tipo de datos como el contenido del código que identifica a cada municipio:
datos2 <- datos
datos2$TEMP <- as.character(datos2$COD_MUN)
datos2$MPIO_CCDGO <- as.factor(paste( datos2$TEMP, sep=""))
head(datos2)
Ahora filtremos un solo año y seleccionemos solo dos atributos relevantes:
datos2 %>% filter(CULTIVO == "CAFE") -> datos3
head(datos3)
class(datos3)
## [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
datos4 <- datos3 %>% dplyr::select(MUNICIPIO,MPIO_CCDGO, ANO, PRODUCCION, RENDIMIENTO)
datos4
datos4 %>%
gather("ANO", "PRODUCCION", "RENDIMIENTO" , key = variable, value = number)
head(datos4)
Esta es una tarea clave. Implica varios pasos para poder convertir la tabla de atributos de formato largo a formato ancho.
datos4 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("ANO", "PRODUCCION", "RENDIMIENTO", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number) -> datos5
head(datos5)
tail(datos5)
También haremos una copia de la colección de características simples (de nuevo, solo en caso de un movimiento falso):
nari_munic2 <- nari_munic
Ahora, hacemos la unión:
nari_munic_stat = left_join(nari_munic2, datos5, by="MPIO_CCDGO")
summary(nari_munic_stat)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## 52:64 52001 : 1 ALBÁN (San José): 1 1834 : 2
## 52019 : 1 ALDANA : 1 1849 : 2
## 52022 : 1 ANCUYA : 1 1881 : 2
## 52036 : 1 ARBOLEDA : 1 Ordenanza 11 de 1911: 2
## 52051 : 1 BARBACOAS : 1 1540 : 1
## 52079 : 1 BELEN : 1 1544 : 1
## (Other):58 (Other) :58 (Other) :54
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 25.31 Min. :2017 NARIÑO:64 Min. :0.2409
## 1st Qu.: 96.64 1st Qu.:2017 1st Qu.:0.4636
## Median : 236.75 Median :2017 Median :0.7825
## Mean : 492.15 Mean :2017 Mean :1.1660
## 3rd Qu.: 547.73 3rd Qu.:2017 3rd Qu.:1.4100
## Max. :3611.35 Max. :2017 Max. :6.4534
##
## Shape_Area MUNICIPIO ANO_1 ANO_10
## Min. :0.002050 Length:64 Min. :2007 Min. :2016
## 1st Qu.:0.007825 Class :character 1st Qu.:2007 1st Qu.:2016
## Median :0.019186 Mode :character Median :2007 Median :2016
## Mean :0.039820 Mean :2008 Mean :2016
## 3rd Qu.:0.044323 3rd Qu.:2007 3rd Qu.:2016
## Max. :0.291654 Max. :2013 Max. :2017
## NA's :18 NA's :29
## ANO_11 ANO_12 ANO_2 ANO_3 ANO_4
## Min. :2017 Min. :2018 Min. :2008 Min. :2009 Min. :2010
## 1st Qu.:2017 1st Qu.:2018 1st Qu.:2008 1st Qu.:2009 1st Qu.:2010
## Median :2017 Median :2018 Median :2008 Median :2009 Median :2010
## Mean :2017 Mean :2018 Mean :2008 Mean :2009 Mean :2010
## 3rd Qu.:2017 3rd Qu.:2018 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2010
## Max. :2018 Max. :2018 Max. :2014 Max. :2015 Max. :2016
## NA's :29 NA's :31 NA's :21 NA's :21 NA's :22
## ANO_5 ANO_6 ANO_7 ANO_8 ANO_9
## Min. :2011 Min. :2012 Min. :2013 Min. :2014 Min. :2015
## 1st Qu.:2011 1st Qu.:2012 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015
## Median :2011 Median :2012 Median :2013 Median :2014 Median :2015
## Mean :2011 Mean :2012 Mean :2013 Mean :2014 Mean :2015
## 3rd Qu.:2011 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
## Max. :2017 Max. :2018 Max. :2018 Max. :2017 Max. :2018
## NA's :23 NA's :23 NA's :27 NA's :28 NA's :28
## PRODUCCION_1 PRODUCCION_10 PRODUCCION_11 PRODUCCION_12
## Min. : 0.0 Min. : 12.0 Min. : 12.0 Min. : 39
## 1st Qu.: 27.5 1st Qu.: 241.5 1st Qu.: 213.0 1st Qu.: 211
## Median : 224.0 Median : 808.0 Median : 597.0 Median : 594
## Mean : 692.0 Mean :1048.3 Mean : 999.5 Mean :1065
## 3rd Qu.:1072.5 3rd Qu.:1643.5 3rd Qu.:1589.5 3rd Qu.:1595
## Max. :7000.0 Max. :4822.0 Max. :4281.0 Max. :4393
## NA's :18 NA's :29 NA's :29 NA's :31
## PRODUCCION_2 PRODUCCION_3 PRODUCCION_4 PRODUCCION_5
## Min. : 2.0 Min. : 2.0 Min. : 7.00 Min. : 5.0
## 1st Qu.: 41.5 1st Qu.: 35.0 1st Qu.: 64.75 1st Qu.: 65.0
## Median : 215.0 Median : 224.0 Median : 307.50 Median : 196.0
## Mean : 728.5 Mean : 640.8 Mean : 586.19 Mean : 587.9
## 3rd Qu.: 869.0 3rd Qu.: 835.5 3rd Qu.: 788.50 3rd Qu.: 776.0
## Max. :7095.0 Max. :4338.0 Max. :3377.00 Max. :2997.0
## NA's :21 NA's :21 NA's :22 NA's :23
## PRODUCCION_6 PRODUCCION_7 PRODUCCION_8 PRODUCCION_9
## Min. : 0 Min. : 5.0 Min. : 3.00 Min. : 3.0
## 1st Qu.: 35 1st Qu.: 88.0 1st Qu.: 92.25 1st Qu.: 183.2
## Median : 140 Median : 612.0 Median : 663.50 Median : 785.5
## Mean : 685 Mean : 789.8 Mean : 900.22 Mean :1015.1
## 3rd Qu.: 725 3rd Qu.:1091.0 3rd Qu.:1113.75 3rd Qu.:1641.0
## Max. :5274 Max. :4309.0 Max. :4518.00 Max. :4773.0
## NA's :23 NA's :27 NA's :28 NA's :28
## RENDIMIENTO_1 RENDIMIENTO_10 RENDIMIENTO_11 RENDIMIENTO_12 RENDIMIENTO_2
## Min. :0.500 Min. :0.670 Min. :0.67 Min. :0.69 Min. :0.500
## 1st Qu.:0.890 1st Qu.:1.085 1st Qu.:0.84 1st Qu.:0.86 1st Qu.:0.800
## Median :1.000 Median :1.100 Median :1.01 Median :1.03 Median :1.000
## Mean :1.062 Mean :1.092 Mean :1.01 Mean :1.04 Mean :1.017
## 3rd Qu.:1.200 3rd Qu.:1.130 3rd Qu.:1.10 3rd Qu.:1.12 3rd Qu.:1.200
## Max. :1.900 Max. :1.250 Max. :1.82 Max. :1.87 Max. :1.650
## NA's :19 NA's :29 NA's :29 NA's :31 NA's :21
## RENDIMIENTO_3 RENDIMIENTO_4 RENDIMIENTO_5 RENDIMIENTO_6
## Min. :0.2000 Min. :0.440 Min. :0.4000 Min. :0.200
## 1st Qu.:0.7200 1st Qu.:0.900 1st Qu.:0.8000 1st Qu.:0.735
## Median :1.0000 Median :1.000 Median :1.0000 Median :0.960
## Mean :0.9219 Mean :1.018 Mean :0.9571 Mean :0.875
## 3rd Qu.:1.1350 3rd Qu.:1.200 3rd Qu.:1.0000 3rd Qu.:1.185
## Max. :1.5000 Max. :1.800 Max. :1.5000 Max. :1.200
## NA's :21 NA's :22 NA's :23 NA's :24
## RENDIMIENTO_7 RENDIMIENTO_8 RENDIMIENTO_9 geometry
## Min. :0.470 Min. :0.5000 Min. :0.620 MULTIPOLYGON :64
## 1st Qu.:0.690 1st Qu.:0.6600 1st Qu.:1.040 epsg:4326 : 0
## Median :0.760 Median :0.8300 Median :1.070 +proj=long...: 0
## Mean :0.833 Mean :0.8828 Mean :1.052
## 3rd Qu.:0.990 3rd Qu.:1.0175 3rd Qu.:1.100
## Max. :1.150 Max. :1.2400 Max. :1.210
## NA's :27 NA's :28 NA's :28
#install.packages("RColorBrewer")
library(RColorBrewer)
library(leaflet)
## Warning: package 'leaflet' was built under R version 3.6.3
Tracemos los municipios con su producción de café correspondiente para un solo año:
bins <- c(0, 250, 500, 1000, 2000, 5000, 10000, 15000)
pal <- colorBin("YlOrRd", domain = nari_munic_stat$PRODUCCION_12, bins = bins)
mapa <- leaflet(data = nari_munic_stat) %>%
addTiles() %>%
addPolygons(label = ~PRODUCCION_12,
popup = ~MPIO_CNMBR,
fillColor = ~pal(PRODUCCION_12),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 1.0,
fillOpacity = 0.5,
highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~PRODUCCION_12,
title = "Producción de Café en Nariño [Ton] (2018)",
opacity = 1
)
mapa
sessionInfo()
## R version 3.6.1 (2019-07-05)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 8.1 x64 (build 9600)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Spanish_Colombia.1252 LC_CTYPE=Spanish_Colombia.1252
## [3] LC_MONETARY=Spanish_Colombia.1252 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Colombia.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] leaflet_2.0.3 RColorBrewer_1.1-2 cowplot_1.0.0
## [4] ggrepel_0.8.2 GSODR_2.1.0 rnaturalearth_0.1.0
## [7] viridis_0.5.1 viridisLite_0.3.0 sf_0.8-1
## [10] raster_3.0-12 maptools_0.9-5 rgeos_0.5-1
## [13] sp_1.4-1 forcats_0.4.0 stringr_1.4.0
## [16] dplyr_0.8.4 purrr_0.3.3 readr_1.3.1
## [19] tidyr_1.0.2 tibble_2.1.3 ggplot2_3.3.0
## [22] tidyverse_1.3.0 here_0.1
##
## loaded via a namespace (and not attached):
## [1] nlme_3.1-140 fs_1.3.2 lubridate_1.7.4
## [4] httr_1.4.1 rprojroot_1.3-2 tools_3.6.1
## [7] backports_1.1.4 R6_2.4.0 KernSmooth_2.23-15
## [10] DBI_1.0.0 colorspace_1.4-1 withr_2.1.2
## [13] tidyselect_0.2.5 gridExtra_2.3 compiler_3.6.1
## [16] cli_1.1.0 rvest_0.3.5 xml2_1.2.5
## [19] labeling_0.3 scales_1.1.0 classInt_0.4-1
## [22] digest_0.6.21 foreign_0.8-71 rmarkdown_2.1
## [25] pkgconfig_2.0.3 htmltools_0.3.6 dbplyr_1.4.2
## [28] htmlwidgets_1.5.1 rlang_0.4.5 readxl_1.3.1
## [31] rstudioapi_0.10 shiny_1.3.2 farver_2.0.3
## [34] generics_0.0.2 jsonlite_1.6 crosstalk_1.0.0
## [37] magrittr_1.5 Rcpp_1.0.2 munsell_0.5.0
## [40] lifecycle_0.2.0 stringi_1.4.3 yaml_2.2.1
## [43] grid_3.6.1 promises_1.0.1 crayon_1.3.4
## [46] lattice_0.20-38 haven_2.2.0 hms_0.5.3
## [49] knitr_1.28 pillar_1.4.2 codetools_0.2-16
## [52] reprex_0.3.0 glue_1.3.1 evaluate_0.14
## [55] leaflet.providers_1.9.0 data.table_1.12.2 modelr_0.1.6
## [58] vctrs_0.2.4 httpuv_1.5.2 cellranger_1.1.0
## [61] gtable_0.3.0 assertthat_0.2.1 xfun_0.12
## [64] mime_0.7 xtable_1.8-4 broom_0.5.5
## [67] e1071_1.7-2 later_0.8.0 class_7.3-15
## [70] units_0.6-4 ellipsis_0.3.0