20 de Abril, 2020
Este es un cuaderno de R Markdown que permitirá explorar estadíticas agricolas en el departamento del Magdalena, Colombia.
Es necesario explorar estadísticas no espaciales para entender qué está pasando en los territorios. Hay varias bibliotecas en R, principalmente dplyr and tidyverse, que sirve para explorar y resumir estadísticas.
Para hacer ciertas investigaciones debemos crear uniones de información no espacial con información espacial, proceso que hicimos en QGIS anteriormente, pero en esta ocasión lo haremos en R.
Empezemos removiendo el contenido de la memoria con:
rm(list=ls())
Ahora, instalaremos las bibliotecas que necesitamos, usando el siguiente código, pero este nos permitirá instalar solo las bibliotecas que no estén instaladas.
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, a cargar las bibliotecas:
library(here)
library(tidyverse)
library(rgeos)
library(maptools)
library(raster)
library(sf)
library(viridis)
library(rnaturalearth)
library(GSODR)
library(ggrepel)
library(cowplot)
Teniendo el documento de Estadísticas Municipales Agropecuarias listo, procedemos a leer el archivo csv con “Estadísticas Municipales Agropecuarias” para Magdalena.
datos <- read_csv2("C:/Users/vale_/Desktop/UNAL/6to semestre/GB/EVA_Magdalena.csv")
Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control.
Parsed with column specification:
cols(
COD_DEP = [32mcol_double()[39m,
DEPARTAMENTO = [31mcol_character()[39m,
COD_MUN = [32mcol_double()[39m,
MUNICIPIO = [31mcol_character()[39m,
GRUPO = [31mcol_character()[39m,
SUBGRUPO = [31mcol_character()[39m,
CULTIVO = [31mcol_character()[39m,
YEAR = [32mcol_double()[39m,
Area_Siembra = [32mcol_double()[39m,
Area_Cosecha = [32mcol_double()[39m,
Produccion = [32mcol_double()[39m,
Rendimiento = [32mcol_double()[39m,
ESTADO = [31mcol_character()[39m,
CICLO = [31mcol_character()[39m
)
Vamos a revisar cuales son los atributos de datos
head(datos)
tail(datos)
Ahora, usaremosla biblioteca dplyr para explorar los contenidos de los objetos de datos.
Pero primero, vamos a hacer un resumen del rendimiento por grupo y municipio:
datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(Rendimiento, na.rm = TRUE)) -> rend_resumen
Ahora veremos solo los seis primeros registros:
head(rend_resumen)
También podemos calcular el rendimiento promedio por grupo en los municipios de Magdalena:
datos %>%
group_by(GRUPO) %>%
summarise(rend_dep = mean(Rendimiento, na.rm = TRUE)) -> rend_magdalena
rend_magdalena
Los más altos rendimientos corresponden a FRUTALES, FIBRAS Y OLEAGINOSAS.
Entonces, vamos a encontrar cuales son los municipios con mayor rendimiento para cada grupo de cultivos en 2018:
datos %>%
filter(YEAR==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_rend = max(Rendimiento, na.rm = TRUE)) %>%
slice(which.max(max_rend)) -> rend_max_18
rend_max_18
Ahora, vamos a encontrar cuales son los municipios con el área cosechada más grande para cada grupo de cultivos en 2018:
datos %>%
filter(YEAR==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
Notamos que el área cosechada más grande en 2018 corresponde a OLEAGINOSAS en la ZONA BANANERA.
Vamos a seleccionar la producción de palma de aceite (Tons) en la Zona Bananera por cada año:
datos %>%
filter(MUNICIPIO=="ZONA BANANERA" & SUBGRUPO=="PALMA DE ACEITE") %>%
group_by(YEAR, CULTIVO) -> zona_bananera_palma_de_aceite
zona_bananera_palma_de_aceite
Ahora, haremos un gráfico básico:
g <- ggplot(aes(x=YEAR, y=Produccion/1000), data = zona_bananera_palma_de_aceite) + geom_bar(stat='identity') + labs(y='Produccion de Palma de Aceite [Ton x 1000]', x='Year')
g + ggtitle("Evolución de la Produccion de la Palma de Aceite en la Zona Bananera desde 2007 hasta 2018") + labs(caption= "Basado en EMA data (DANE, 2018)")
Ahora haremos otro gráfico que corresponda al segundo municipio con área sembrada más grande en 2018, que es Ciénaga con el grupo de Otros Permanentes. Y seleccionaremos el cultivo de Cacao, observando la evolución de la producción en cada año.
datos %>%
filter(MUNICIPIO=="CIENAGA" & SUBGRUPO=="CACAO") %>%
group_by(YEAR, CULTIVO) -> cienaga_cacao
cienaga_cacao
gcc <- ggplot(aes(x=YEAR, y=Produccion/1000), data = cienaga_cacao) + geom_bar(stat='identity') + labs(y='Produccion de Cacao [Ton x 1000]', x='Year')
gcc + ggtitle("Evolución de la Produccion del Cacao en Cienaga desde 2007 hasta 2018") + labs(caption= "Basado en EMA data (DANE, 2018)")
Ahora investigaremos cuales cultivos tuvieron la mayor superficie cosechada en 2018:
datos %>% filter(YEAR==2018) %>%
group_by(GRUPO) %>%
summarize(sum_area_cosecha = sum(Area_Cosecha, na.rm = TRUE)) %>%
arrange(desc(sum_area_cosecha)) -> total_area_cosecha
datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(Produccion, na.rm = TRUE))
arrange(desc(rend_prom)) -> rend_res
total_area_cosecha
Podemos observar que OLEAGINOSAS tuvo la mayor parte del área cosechada en 2018 en Magdalena. Podemos encontrar en la información del DANE con un código cuál cultivo pertenece a este grupo
datos %>%
filter(GRUPO=="OLEAGINOSAS" & YEAR==2018) %>%
group_by(CULTIVO) %>%
summarize(sum_cosecha = sum(Area_Cosecha, na.rm = TRUE)) %>%
arrange(desc(sum_cosecha)) -> total_cosecha
total_cosecha
¡Así es como nos damos cuenta que la Palma de Aceite es la llave en la agricultura magdalenense!
Y como podremos observar en las páginas 16 y 34 del boletín 9 del Censo Nacional Agropecuario(2014), la palma aceitera y el banano de exportación son los cultivos que tienen la mayor parte del área agrícola sembrada en el departamento del Magdalena.
Ahora podemos encontrar cuales son los municipios con la mayor área sembrada for cada cultivo permanente en 2018:
datos %>%
filter(YEAR==2018 & GRUPO=="OLEAGINOSAS") %>%
group_by(CULTIVO, MUNICIPIO) %>%
summarize(max_area2 = max(Area_Cosecha, na.rm = TRUE)) %>%
slice(which.max(max_area2)) -> area_cosecha2
area_cosecha2
Ahora regresemos a la información de cultivos permanentes. Antes de graficar, necesitaremos añadir, para el objeto total_area_cosecha, un nuevo archivo con abreviaturas para cada grupo de cultivos. De otra manera, la gráfica se echará a perder.
total_area_cosecha$CROP <- abbreviate(total_area_cosecha$GRUPO, 3)
Ahora sí, a graficar:
gg <- ggplot(aes(x=CROP, y=sum_area_cosecha), data = total_area_cosecha) + geom_bar(stat='identity') + labs(y='Total de Area Sembrada [Ha]', x='Cultivo')
gg+ ggtitle("Total de area sembrada por grupo de cultivos en 2018 para Magdalena") + theme(plot.title = element_text(hjust = 0.5)) + labs(caption= "Basado en EMA data (DANE, 2018)")
Comencemos leyendo la información usando la biblioteca sf:
mag_munic <- sf::st_read("C:/Users/vale_/Desktop/UNAL/6to semestre/GB/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\vale_\Desktop\UNAL\6to semestre\GB\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
Simple feature collection with 30 features and 9 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -74.9466 ymin: 8.936489 xmax: -73.54184 ymax: 11.34891
CRS: 4326
¿Qué es mag_munic?
mag_munic
Simple feature collection with 30 features and 9 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -74.9466 ymin: 8.936489 xmax: -73.54184 ymax: 11.34891
CRS: 4326
First 10 features:
DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC MPIO_NAREA MPIO_NANO
1 47 47541 PEDRAZA Decreto dptal 1322 del 19 dediciembre de 1908 325.4799 2017
2 47 47030 ALGARROBO Ordenanza 008 de Junio 24 de 1999 406.3884 2017
3 47 47058 ARIGUANÍ Ordenanza 14 Bis de Noviembre 30 de 1966 1131.7442 2017
4 47 47161 CERRO DE SAN ANTONIO Ordenanza 3038 de 1912 177.1961 2017
5 47 47170 CHIVOLO Decreto 107 de Marzo 8 de 1974 536.5437 2017
6 47 47205 CONCORDIA Ordenanza 007 del 24 de Junio de 1999 109.4837 2017
7 47 47245 EL BANCO Ley 0182 de 1871 814.8540 2017
8 47 47258 EL PIÑÓN Ordenanza 032 del 20 de Abril de 1815 557.1424 2017
9 47 47268 EL RETÉN ORD 04 DE MAYO DE 1996 262.1768 2017
10 47 47318 GUAMAL Ordenanza 15 del 2 de Julio de 1904 564.5155 2017
DPTO_CNMBR Shape_Leng Shape_Area geometry
1 MAGDALENA 0.9740441 0.026847311 POLYGON ((-74.8832 10.21502...
2 MAGDALENA 1.2656800 0.033536941 POLYGON ((-74.10861 10.3915...
3 MAGDALENA 1.9928810 0.093278409 POLYGON ((-74.03381 9.99541...
4 MAGDALENA 0.7003465 0.014622408 POLYGON ((-74.85084 10.367,...
5 MAGDALENA 1.3263733 0.044254449 POLYGON ((-74.49589 10.2315...
6 MAGDALENA 0.5443263 0.009033178 POLYGON ((-74.81188 10.2748...
7 MAGDALENA 1.6768118 0.067024891 POLYGON ((-73.98838 9.33807...
8 MAGDALENA 1.1771096 0.045985558 POLYGON ((-74.67476 10.4604...
9 MAGDALENA 0.9640310 0.021663152 POLYGON ((-74.36417 10.7661...
10 MAGDALENA 1.1812342 0.046447658 POLYGON ((-74.05467 9.40305...
Como el código que aparece en MPIO_CCDGO no es el mismo que el que aparece en COD_MUN, debemos cambiar alguno de los dos para que se pueda realizar la unión.
Vamos a verificar el estado del último:
datos %>% filter (MUNICIPIO =="SANTA MARTA") -> smr_datos
smr_datos
class(smr_datos$COD_MUN)
[1] "numeric"
Para hacer la unión, necesitamos cambiar ambos, data type y contents para el código que identifica cada municipio. Para esto, sera necesario crear una copia de la información estadística original. Con esto, no se podrá dañar la información original, en caso de cometer una equivocación.
Vamos a hacerlo cuidadosamente:
datos2 <- datos
datos2$TEMP <- as.character(datos2$COD_MUN)
datos2$MPIO_CCDGO <- as.factor(datos2$TEMP)
head(datos2)
Hay que asegurarse de verificar, en el objeto datos2, las características del nuevo atributo MPIO_CCDGO.
Ahora, vamos a filtrar un solo año y seleccionar solo dos atributos relevantes:
datos2 %>% filter(CULTIVO == "PALMA DE ACEITE") -> datos3
head(datos3)
class(datos3)
[1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
datos4 <- datos3 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento)
datos4
datos4 %>%
gather("YEAR", "Produccion", "Rendimiento" , key = variable, value = number)
head(datos4)
Esta es una tarea clave. Se compone de varios pasos para poder convertir la tabla de atributos desde un formato largo a un formato ancho.
datos4 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "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, para asegurarnos de que no se dañen los datos:
mag_munic2 <- mag_munic
Ahora, es hora de unir:
mag_munic_stat = left_join(mag_munic2, datos5, by="MPIO_CCDGO")
summary(mag_munic_stat)
DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC MPIO_NAREA
47:30 47001 : 1 ALGARROBO : 1 1525 : 1 Min. : 109.5
47030 : 1 ARACATACA : 1 1814 : 1 1st Qu.: 414.2
47053 : 1 ARIGUANÍ : 1 1848 : 1 Median : 579.7
47058 : 1 CERRO DE SAN ANTONIO: 1 1865 : 1 Mean : 771.2
47161 : 1 CHIVOLO : 1 1909 : 1 3rd Qu.:1083.3
47170 : 1 CIÉNAGA : 1 Decreto 107 de Marzo 8 de 1974: 1 Max. :2347.1
(Other):24 (Other) :24 (Other) :24
MPIO_NANO DPTO_CNMBR Shape_Leng Shape_Area MUNICIPIO Produccion_1 Produccion_10
Min. :2017 MAGDALENA:30 Min. :0.5443 Min. :0.009033 Length:30 Min. : 0 Min. : 590
1st Qu.:2017 1st Qu.:1.1781 1st Qu.:0.034158 Class :character 1st Qu.: 266 1st Qu.: 2308
Median :2017 Median :1.3443 Median :0.047801 Mode :character Median : 2135 Median : 7790
Mean :2017 Mean :1.6537 Mean :0.063642 Mean : 7432 Mean :10339
3rd Qu.:2017 3rd Qu.:2.3534 3rd Qu.:0.089264 3rd Qu.:11646 3rd Qu.:14094
Max. :2017 Max. :3.1974 Max. :0.194233 Max. :34755 Max. :34906
NA's :16 NA's :18
Produccion_11 Produccion_12 Produccion_2 Produccion_3 Produccion_4 Produccion_5 Produccion_6
Min. : 648 Min. : 1120 Min. : 0.0 Min. : 0 Min. : 210 Min. : 245 Min. : 255
1st Qu.: 2347 1st Qu.: 3025 1st Qu.: 292.5 1st Qu.: 1050 1st Qu.: 2398 1st Qu.: 2468 1st Qu.: 2496
Median : 8363 Median :10317 Median : 2397.5 Median : 2800 Median : 6650 Median : 6850 Median : 6970
Mean :11105 Mean :12436 Mean : 7704.7 Mean : 8664 Mean :10225 Mean :10168 Mean :10486
3rd Qu.:16935 3rd Qu.:19276 3rd Qu.:11847.5 3rd Qu.:12600 3rd Qu.:14553 3rd Qu.:14250 3rd Qu.:14714
Max. :36672 Max. :36672 Max. :34860.0 Max. :34860 Max. :34860 Max. :35000 Max. :35560
NA's :18 NA's :19 NA's :16 NA's :17 NA's :18 NA's :18 NA's :18
Produccion_7 Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10 Rendimiento_11 Rendimiento_12
Min. : 316 Min. : 333 Min. : 499 Min. : 32.0 Min. : 31.00 Min. : 31.00 Min. : 31.00
1st Qu.: 2526 1st Qu.: 2555 1st Qu.: 2304 1st Qu.: 35.0 1st Qu.: 31.75 1st Qu.: 32.00 1st Qu.: 32.00
Median : 7310 Median : 7820 Median : 8736 Median : 35.0 Median :312.00 Median : 32.00 Median : 32.00
Mean :10860 Mean :11252 Mean :10996 Mean :172.1 Mean :216.33 Mean : 84.92 Mean : 95.82
3rd Qu.:15309 3rd Qu.:17550 3rd Qu.:18049 3rd Qu.:337.5 3rd Qu.:312.00 3rd Qu.: 32.50 3rd Qu.: 32.00
Max. :36960 Max. :37604 Max. :34596 Max. :352.0 Max. :347.00 Max. :381.00 Max. :384.00
NA's :18 NA's :18 NA's :18 NA's :19 NA's :18 NA's :18 NA's :19
Rendimiento_2 Rendimiento_3 Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7 Rendimiento_8
Min. : 3.00 Min. : 34 Min. :35 Min. : 34.00 Min. :34.00 Min. :34.00 Min. :32
1st Qu.: 34.75 1st Qu.: 35 1st Qu.:35 1st Qu.: 34.75 1st Qu.:34.00 1st Qu.:34.00 1st Qu.:34
Median : 35.00 Median : 35 Median :35 Median : 35.00 Median :34.00 Median :34.00 Median :34
Mean :113.58 Mean : 88 Mean :35 Mean :112.50 Mean :34.42 Mean :34.42 Mean :34
3rd Qu.:109.50 3rd Qu.: 35 3rd Qu.:35 3rd Qu.:109.50 3rd Qu.:35.00 3rd Qu.:35.00 3rd Qu.:35
Max. :381.00 Max. :355 Max. :35 Max. :354.00 Max. :35.00 Max. :35.00 Max. :35
NA's :18 NA's :18 NA's :18 NA's :18 NA's :18 NA's :18 NA's :18
Rendimiento_9 YEAR_1 YEAR_10 YEAR_11 YEAR_12 YEAR_2 YEAR_3
Min. : 31.00 Min. :2007 Min. :2016 Min. :2017 Min. :2018 Min. :2008 Min. :2009
1st Qu.: 31.75 1st Qu.:2007 1st Qu.:2016 1st Qu.:2017 1st Qu.:2018 1st Qu.:2008 1st Qu.:2009
Median : 32.50 Median :2007 Median :2016 Median :2017 Median :2018 Median :2008 Median :2009
Mean : 82.08 Mean :2008 Mean :2016 Mean :2017 Mean :2018 Mean :2009 Mean :2009
3rd Qu.: 34.25 3rd Qu.:2007 3rd Qu.:2016 3rd Qu.:2017 3rd Qu.:2018 3rd Qu.:2008 3rd Qu.:2009
Max. :349.00 Max. :2017 Max. :2017 Max. :2018 Max. :2018 Max. :2018 Max. :2011
NA's :18 NA's :16 NA's :18 NA's :18 NA's :19 NA's :16 NA's :17
YEAR_4 YEAR_5 YEAR_6 YEAR_7 YEAR_8 YEAR_9 geometry
Min. :2010 Min. :2011 Min. :2012 Min. :2013 Min. :2014 Min. :2015 POLYGON :30
1st Qu.:2010 1st Qu.:2011 1st Qu.:2012 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015 epsg:4326 : 0
Median :2010 Median :2011 Median :2012 Median :2013 Median :2014 Median :2015 +proj=long...: 0
Mean :2010 Mean :2011 Mean :2012 Mean :2013 Mean :2014 Mean :2015
3rd Qu.:2010 3rd Qu.:2011 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
Max. :2010 Max. :2011 Max. :2012 Max. :2013 Max. :2015 Max. :2016
NA's :18 NA's :18 NA's :18 NA's :18 NA's :18 NA's :18
#install.packages("RColorBrewer")
library(RColorBrewer)
library(leaflet)
Vamos a graficar los municipios con su correspondiente produccion de Palma de aceite por un solo año:
bins <- c(0, 1100, 6200, 11400, 16500, 21600, 26700, 31900, 37000)
pal <- colorBin("YlOrRd", domain = mag_munic_stat$Produccion_12, bins = bins)
mapa <- leaflet(data = mag_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 = "Produccion de Palma de Aceite en Magdalena [Ton] (2018)", opacity = 1 )
mapa
sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=Spanish_Colombia.1252 LC_CTYPE=Spanish_Colombia.1252 LC_MONETARY=Spanish_Colombia.1252
[4] LC_NUMERIC=C 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 data.table_1.12.8 cowplot_1.0.0 ggrepel_0.8.2
[6] GSODR_2.0.1 rnaturalearth_0.1.0 viridis_0.5.1 viridisLite_0.3.0 sf_0.9-0
[11] raster_3.0-12 maptools_0.9-9 rgeos_0.5-2 sp_1.4-1 forcats_0.5.0
[16] stringr_1.4.0 dplyr_0.8.5 purrr_0.3.3 readr_1.3.1 tidyr_1.0.2
[21] tibble_2.1.3 ggplot2_3.3.0 tidyverse_1.3.0 here_0.1
loaded via a namespace (and not attached):
[1] nlme_3.1-144 fs_1.3.2 lubridate_1.7.4 httr_1.4.1
[5] rprojroot_1.3-2 tools_3.6.3 backports_1.1.5 utf8_1.1.4
[9] R6_2.4.1 KernSmooth_2.23-16 DBI_1.1.0 colorspace_1.4-1
[13] withr_2.1.2 tidyselect_1.0.0 gridExtra_2.3 compiler_3.6.3
[17] cli_2.0.2 rvest_0.3.5 xml2_1.2.5 labeling_0.3
[21] scales_1.1.0 classInt_0.4-2 digest_0.6.25 foreign_0.8-75
[25] rmarkdown_2.1 base64enc_0.1-3 pkgconfig_2.0.3 htmltools_0.4.0
[29] fastmap_1.0.1 dbplyr_1.4.2 htmlwidgets_1.5.1 rlang_0.4.5
[33] readxl_1.3.1 rstudioapi_0.11 shiny_1.4.0 generics_0.0.2
[37] farver_2.0.3 jsonlite_1.6.1 crosstalk_1.0.0 magrittr_1.5
[41] Rcpp_1.0.3 munsell_0.5.0 fansi_0.4.1 lifecycle_0.2.0
[45] stringi_1.4.6 yaml_2.2.1 grid_3.6.3 parallel_3.6.3
[49] promises_1.1.0 crayon_1.3.4 lattice_0.20-38 haven_2.2.0
[53] hms_0.5.3 knitr_1.28 pillar_1.4.3 codetools_0.2-16
[57] reprex_0.3.0 glue_1.3.1 evaluate_0.14 leaflet.providers_1.9.0
[61] modelr_0.1.6 vctrs_0.2.4 httpuv_1.5.2 cellranger_1.1.0
[65] gtable_0.3.0 assertthat_0.2.1 xfun_0.12 mime_0.9
[69] xtable_1.8-4 broom_0.5.5 e1071_1.7-3 later_1.0.0
[73] rsconnect_0.8.16 class_7.3-15 units_0.6-6 ellipsis_0.3.0