Este cuaderno tiene como objetivo informar a través de representaciones gráficas y textuales, las estadísticas agrícolas para el departamento de Huila en Colombia. Su creación, compilado y publicado se ha realizado desde una instalación local de RStudio con el objeto de aplicar los conceptos básicos recibidos en el curso de geomática básica y así adquirir destreza en el uso de las herramientas de geomática útiles para la agronomía.
Para empezar vamos a utilizar dos comandos convenientes para el rendimiento de Rstudio y la posterior publicación de nuestro cuaderno. Los comandos son:
Este Primero remueve todo lo que tiene en memoria (ventana superior derecha) si antes que este R Notebook lleva escribiendo otros.
rm(list = ls())
El segundo permite publicar sin inconvenientes el “cuaderno” cuando finalice. En ocasiones el tamaño del R Notebook resulta un impedimento y por eso este comando es provechoso.
knitr::opts_chunk$set(echo = TRUE)
Necesitamos servirnos de alguna herramienta que nos permita explorar y simplicar aquellos datos no espaciales que contienen información recopilada acerca de las características del objeto de estudio, en este caso la información de la actividad agrícola en el departamento de Huila. Para esto es apropiado utilizar las funciones “dplyr” y “tidyverse” que hacen parte de las bibliotecas de R y permiten estudiar la información estadísitica.
Una mejor comprensión de los datos estadísticos se efectúa al conectar esta información no espacial con datos espaciales, también conocidos como componentes temáticos y espaciales respectivamente.Esto favorece la comprensión de un lugar de nuestro interés con mayor detalle.
Para evitar instalar paquete por paquete, utilizamos una función que nos permite listar las bibliotecas que necesitamos e instalarlas al mismo tiempo con una sola istrucción.
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)
Instaladas las librerías, como paso siguiente vamos a cargarlas:
library(here)
## here() starts at C:/Users/Sergio/Downloads/GB/Semana_5/Informe_1
library(tidyverse)
## -- Attaching packages ----------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.3 v dplyr 1.0.2
## v tidyr 1.1.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts -------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(rgeos)
## Loading required package: sp
## rgeos version: 0.5-5, (SVN revision 640)
## GEOS runtime version: 3.8.0-CAPI-1.13.1
## Linking to sp version: 1.4-2
## Polygon checking: TRUE
library(maptools)
## Checking rgeos availability: TRUE
library(raster)
##
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
##
## select
## The following object is masked from 'package:tidyr':
##
## extract
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(viridis)
## Loading required package: viridisLite
library(rnaturalearth)
library(GSODR)
library(ggrepel)
library(cowplot)
Los datos que vamos a examinar fueron descargados previamente en formato csv y contienen información acerca de la activad agrícola en el país. Como estamos interesados en el departamento del Huila, es necesario remover la información que pertenece a otros departamentos diferentes al de Huila. Realizado ese proceso de filtrado (realizado con excel) de información, con el nuevo archivo csv que contiene sólo los datos del departamento de nuestro interés lo guardamos y nos disponemos a leerlo con Rstudio.
Leamos el archivo csv con “estadisticas municipales agropecuarias” para Huila. Estas fueron descargadas en el enlace.
datos <- read_csv("C:/Users/Sergio/Downloads/GB/Semana_5/Informe_1/EVA_Huila1.csv")
## Parsed with column specification:
## cols(
## `COD_ DEP` = col_double(),
## DEPARTAMENTO = col_character(),
## COD_MUN = col_double(),
## MUNICIPIO = col_character(),
## GRUPO = col_character(),
## SUBGRUPO = col_character(),
## CULTIVO = col_character(),
## YEAR = col_double(),
## Area_Siembra = col_double(),
## Area_Cosecha = col_double(),
## Produccion = col_double(),
## Rendimiento = col_number(),
## ESTADO = col_character(),
## CICLO = col_character()
## )
Es una buena práctica conocer cuáles son los atributos de los datos como parte de la exploración de los mismos.
head(datos)
tail(datos)
En el paso anterior se exploraron los atributos de las información contenida en los datos estadísticos. Pero, hasta el momento no hemos explorado con detalle cuales son las características de cada región. Por ejemplo el rendimiento, el número de hectáreas sembradas en un municipio. Para eso vamos a utilizar la biblioteca dplyr así:
Primero, obtengamos un resumen del rendimiento (es decir, el rendimiento promedio durante varios años) por grupo y municipio. En esta instrucción podemos visualizar que en un municipio específico puede tener diferentes cultivos.
datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(Rendimiento, na.rm = TRUE)) -> rend_resumen
## `summarise()` regrouping output by 'MUNICIPIO' (override with `.groups` argument)
### Vamos a visualizar losprimeros seis registros
head(rend_resumen)
También podemos calcular el rendimiento promedio por GRUPO en los municipios de Huila:
Tenga en cuenta que anteriormente se calculó el rendimiento promedio de varios cultivos en un municipio. Ahora se está calculando el rendimiento promedio de varios cultivos a nivel del departamento.
datos %>%
group_by(GRUPO) %>%
summarise(rend_dep = mean(Rendimiento, na.rm = TRUE)) -> rend_Huila
## `summarise()` ungrouping output (override with `.groups` argument)
rend_Huila
En la visualizacón anterior fue sencillo advertir que los cultivos con los mayores rendimientos a nivel departamental corresponden a FIBRAS, CEREALES y TUBERCULOS Y PLATANOS.
Luego, busquemos cuáles 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
## `summarise()` regrouping output by 'GRUPO' (override with `.groups` argument)
rend_max_18
Si observamos detalladamente, la instrucción para calacular rendimiento máximo hizo un análisis en el que se destacó el municipio que produjo el máximo rendimiento para un determinado cultivo.
Ahora, busquemos cuáles son los municipios con mayor área cosechada 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
## `summarise()` regrouping output by 'GRUPO' (override with `.groups` argument)
area_cosecha_max
Podemos advertir en las visualizaciones que hemos visto que no siempre la región con mayor cantidad de área cosechada va a tener el mismo rendimiento por ejemplo CAMPOALEGRE que para el años 2018 ocupa la máxima área cosechada en CEREALES, FIBRAS y OTROS TRANSITORIOS pero en la visualización de máximo rendimiento solo se destacó en OTROS TRANSITORIOS.
Seleccionemos la producción de ARROZ (toneladas) en campoalegre para cada año:
datos %>%
filter(MUNICIPIO=="CAMPOALEGRE" & SUBGRUPO=="ARROZ") %>%
group_by(YEAR, CULTIVO) -> campoalegre_arroz
campoalegre_arroz
Hagamos una exploración gráfica básica:
# Para la siguiente instrucción vamos a necesitar la librería ggplot 2
g <- ggplot(aes(x=YEAR, y=Produccion/1000), data = campoalegre_arroz) + geom_bar(stat='identity') + labs(caption = "Basado en datos de EMA (DANE, 2018)", y='Produccion de Arroz [To n x 1000]')
g + ggtitle("Evolucion de la producción de Arroz en Campoalegre - Huila desde 2007 a 2018")
Ahora, investiguemos qué cultivos tuvieron la mayor área 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
## `summarise()` ungrouping output (override with `.groups` argument)
total_area_cosecha
Podemos ver que OTROS PERMANENTES tuvieron la mayor proporción de área cosechada en 2018 para el departamneto de Huila. Esta información se puede encontrar en otros datos estadisticos o también lo podemos averiguar a partir de los datos que disponemos.
datos %>%
filter(GRUPO=="OTROS PERMANENTES" & YEAR==2018) %>%
group_by(CULTIVO) %>%
summarize(sum_cosecha = sum(Area_Cosecha, na.rm = TRUE)) %>%
arrange(desc(sum_cosecha)) -> total_cosecha
## `summarise()` ungrouping output (override with `.groups` argument)
total_cosecha
Si nos damos cuenta, la instrucción anterior nos permitió conocer a que hacen referencia los datos cuando están clasificados en OTROS PERMANENTES. De no ser así ¡No habríamos advertido que el cultivo de café representa un valor importante para la economía del departamento!
Ahora, veamos cuáles son los municipios con mayor área cosechada por cada cultivo permanente en 2018:
datos %>%
filter(YEAR==2018, GRUPO=="OTROS PERMANENTES") %>%
group_by(CULTIVO, MUNICIPIO) %>%
summarize(max_area2 = max(Area_Cosecha, na.rm = TRUE)) %>%
slice(which.max(max_area2)) -> area_cosecha2
## `summarise()` regrouping output by 'CULTIVO' (override with `.groups` argument)
area_cosecha2
Volvamos a los datos de cultivos permanentes. Antes de graficar, 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)
Grafiquemos:
# Tenemos que usar la librería ggplot 2
g <- ggplot(aes(x=CROP, y=sum_area_cosecha), data = total_area_cosecha) + geom_bar(stat='identity') + labs(caption = "Basado en datos de EMA (DANE, 2018)", y='Área total cosechada [Ha]')
g + ggtitle("Superficie total cosechada por grupos de cultivos en 2018 para Huila") + theme(plot.title = element_text(hjust = 0.5)) + labs(caption = "Basado en datos de EMA (DANE, 2018)")
Para los pasos siguientes necesitamos el formato shapefile que contiene el Marco Geoestadístico Departamental que podemos descargar Aquí.
Usamos la biblioteca sf para leer los datos:
hui_munic <- sf::st_read("C:/Users/Sergio/Downloads/GB/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
## Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\Sergio\Downloads\GB\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
## Simple feature collection with 37 features and 9 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -76.62466 ymin: 1.552125 xmax: -74.41303 ymax: 3.843208
## geographic CRS: WGS 84
Qué es hui_munic?
hui_munic
hui_munic es una colección de funciones simples. Podriamos decir que hui_munic es una caracteristica que está conformada por otras características que le confieren atributos de tipo espacial.
Los datos utilizan el sistema de referencia de coordenadas geográficas WGS1984 (es decir, el código 4326 epsg).
Por un lado disponemos de los datos espaciales obtenidos a través del Geoportal DANE y por otro de los datos estadísticos de agricultura. Para unir ambos datos vamos a utilizar la función left_join.
Necesitamos un atributo común (o variable compartida) en el que basar la unión. El mejor atributo es una identificación. En hui_munic, el atributo MPIO_CCDGO parece estar bien (lee 41001 para Neiva). En datos, el atributo correspondiente es COD_MUN (lee 41001 para Neiva).
Verifiquemos la última declaración:
(hui_datos <- datos %>% filter (MUNICIPIO =="NEIVA") )
Es importante conocer que tipo de datos estamos manejando para evitar complicaciones a causa de no saber si un columna contiene números (numérico) o datos enteros (números enteros) o carácter (palabras).
class(hui_datos$COD_MUN)
## [1] "numeric"
datos_1 <- datos
datos_1$TEMP <- as.character(datos_1$COD_MUN)
datos_1$MPIO_CCDGO <- as.factor(datos_1$TEMP)
datos_1
Después de realizar una conversión como la que acabamos de hacer, nunca olvidemos confirmar si la intrucción fue ejecutada exitosamente. Ahora verifiquemos si MPIO_CCDGO adoptó las características asignadas.
Tenga en cuenta que para visualizar los datos lo puede hacer de dos formas: escribiendo head(datos_2) o encerrando entre paréntesis las instrucción así:
(datos_2 <- datos_1 %>% filter(CULTIVO == "CAFE"))
class(datos_2)
## [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
(datos_3 <- datos_2 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento))
(datos_3 %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number))
head(datos_3)
(datos_3 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number) %>% unite(combi, variable, Visit) %>%
spread(combi, number) -> datos_4)
tail(datos_4)
También haremos una copia de la colección de características simples (nuevamente, solo en caso de un movimiento en falso)
hui_munic_1 <- hui_munic
Aquí realizamos la unión con la función left_join:
hui_munic_stat = left_join(hui_munic_1, datos_4, by = "MPIO_CCDGO")
summary(hui_munic_stat)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:37 Length:37 Length:37 Length:37
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 80.44 Min. :2017 Length:37 Min. :0.5175
## 1st Qu.: 251.23 1st Qu.:2017 Class :character 1st Qu.:0.8666
## Median : 370.66 Median :2017 Mode :character Median :1.1565
## Mean : 490.31 Mean :2017 Mean :1.2396
## 3rd Qu.: 589.69 3rd Qu.:2017 3rd Qu.:1.4957
## Max. :1584.97 Max. :2017 Max. :3.0732
##
## Shape_Area MUNICIPIO Produccion_1 Produccion_10
## Min. :0.006532 Length:37 Min. : 77 Min. : 96
## 1st Qu.:0.020425 Class :character 1st Qu.: 1488 1st Qu.: 1680
## Median :0.030087 Mode :character Median : 2928 Median : 3016
## Mean :0.039844 Mean : 3687 Mean : 4147
## 3rd Qu.:0.047930 3rd Qu.: 4042 3rd Qu.: 4925
## Max. :0.128978 Max. :16099 Max. :18440
## NA's :2 NA's :2
## Produccion_11 Produccion_12 Produccion_2 Produccion_3
## Min. : 76 Min. : 83 Min. : 63 Min. : 60
## 1st Qu.: 1546 1st Qu.: 1599 1st Qu.: 1334 1st Qu.: 1150
## Median : 2989 Median : 2937 Median : 2949 Median : 2390
## Mean : 3823 Mean : 3890 Mean : 3752 Mean : 2989
## 3rd Qu.: 4480 3rd Qu.: 4591 3rd Qu.: 4337 3rd Qu.: 3456
## Max. :17216 Max. :17236 Max. :16323 Max. :12728
## NA's :2 NA's :2 NA's :2 NA's :2
## Produccion_4 Produccion_5 Produccion_6 Produccion_7
## Min. : 57 Min. : 57.0 Min. : 55 Min. : 74
## 1st Qu.: 1160 1st Qu.: 965.5 1st Qu.: 973 1st Qu.: 1181
## Median : 2479 Median :2032.0 Median : 1948 Median : 2541
## Mean : 2981 Mean :2432.9 Mean : 2435 Mean : 3311
## 3rd Qu.: 3478 3rd Qu.:3030.0 3rd Qu.: 2912 3rd Qu.: 4018
## Max. :13471 Max. :8517.0 Max. :11302 Max. :15860
## NA's :2 NA's :2 NA's :2 NA's :2
## Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10
## Min. : 86 Min. : 100 Min. : 12.00 Min. : 11
## 1st Qu.: 1497 1st Qu.: 1666 1st Qu.: 14.00 1st Qu.:111
## Median : 2982 Median : 3018 Median : 15.00 Median :114
## Mean : 3885 Mean : 4148 Mean : 69.69 Mean :105
## 3rd Qu.: 4602 3rd Qu.: 4986 3rd Qu.:145.00 3rd Qu.:116
## Max. :18153 Max. :18751 Max. :145.00 Max. :119
## NA's :2 NA's :2 NA's :2 NA's :2
## Rendimiento_11 Rendimiento_12 Rendimiento_2 Rendimiento_3
## Min. : 11.00 Min. :103.0 Min. : 14.00 Min. : 12
## 1st Qu.: 11.00 1st Qu.:109.5 1st Qu.: 15.00 1st Qu.: 12
## Median :101.00 Median :112.0 Median : 15.00 Median : 12
## Mean : 66.14 Mean :111.0 Mean : 73.74 Mean : 59
## 3rd Qu.:111.00 3rd Qu.:114.0 3rd Qu.:145.00 3rd Qu.:122
## Max. :113.00 Max. :115.0 Max. :156.00 Max. :125
## NA's :2 NA's :2 NA's :2 NA's :2
## Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7 Rendimiento_8
## Min. : 1.00 Min. : 8.0 Min. : 1.00 Min. :98 Min. :106
## 1st Qu.: 12.00 1st Qu.: 11.0 1st Qu.: 11.00 1st Qu.:98 1st Qu.:106
## Median : 12.00 Median :112.0 Median : 11.00 Median :98 Median :106
## Mean : 54.49 Mean : 75.4 Mean : 49.29 Mean :98 Mean :106
## 3rd Qu.:118.00 3rd Qu.:112.0 3rd Qu.:105.00 3rd Qu.:98 3rd Qu.:106
## Max. :125.00 Max. :125.0 Max. :105.00 Max. :98 Max. :106
## NA's :2 NA's :2 NA's :2 NA's :2 NA's :2
## Rendimiento_9 YEAR_1 YEAR_10 YEAR_11 YEAR_12
## Min. : 11.00 Min. :2007 Min. :2016 Min. :2017 Min. :2018
## 1st Qu.:105.50 1st Qu.:2007 1st Qu.:2016 1st Qu.:2017 1st Qu.:2018
## Median :108.00 Median :2007 Median :2016 Median :2017 Median :2018
## Mean : 92.94 Mean :2007 Mean :2016 Mean :2017 Mean :2018
## 3rd Qu.:112.00 3rd Qu.:2007 3rd Qu.:2016 3rd Qu.:2017 3rd Qu.:2018
## Max. :116.00 Max. :2007 Max. :2016 Max. :2017 Max. :2018
## NA's :2 NA's :2 NA's :2 NA's :2 NA's :2
## YEAR_2 YEAR_3 YEAR_4 YEAR_5 YEAR_6
## Min. :2008 Min. :2009 Min. :2010 Min. :2011 Min. :2012
## 1st Qu.:2008 1st Qu.:2009 1st Qu.:2010 1st Qu.:2011 1st Qu.:2012
## Median :2008 Median :2009 Median :2010 Median :2011 Median :2012
## Mean :2008 Mean :2009 Mean :2010 Mean :2011 Mean :2012
## 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2010 3rd Qu.:2011 3rd Qu.:2012
## Max. :2008 Max. :2009 Max. :2010 Max. :2011 Max. :2012
## NA's :2 NA's :2 NA's :2 NA's :2 NA's :2
## YEAR_7 YEAR_8 YEAR_9 geometry
## Min. :2013 Min. :2014 Min. :2015 POLYGON :37
## 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015 epsg:4326 : 0
## Median :2013 Median :2014 Median :2015 +proj=long...: 0
## Mean :2013 Mean :2014 Mean :2015
## 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
## Max. :2013 Max. :2014 Max. :2015
## NA's :2 NA's :2 NA's :2
# install.packages("RColorBrewer")
library(RColorBrewer)
library(leaflet)
library(rgl)
##
## Attaching package: 'rgl'
## The following object is masked from 'package:rgeos':
##
## triangulate
Ahora, vamos a graficar los municipios del departamento de Huila para que al mismo timepo indiquen la producción de café en un determinado año.Tenga en cuenta que para llenar con valores la función inicial “bins” es necesario estar informado acerca de la producción del cultivo que quiere graficar.
Nota: ¡Cuidado con los paréntesis en códigos extensos! En el siguiente chunk un solo paréntesis demás retardó el avance del R Notebook hasta lograr encontrar el fallo que se debía precisamente a un paréntesis. Quizá para personas diestras resulte obvio o de poco interés pero para los que comenzamos resulta ventajoso recibir estos consejos.
bins <- c(0, 250, 500, 1000, 2000, 5000, 10000, 15000, 20000)
pal <- colorBin("YlGn", domain = hui_munic_stat$Produccion_12, bins = bins)
mapa <- leaflet(data = hui_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 = 3.0,
highlightOptions = highlightOptions(color = "Yellow", weight = 2, bringToFront = TRUE)) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~Produccion_12,
title = "Producción de Café en Huila [Ton] (2018)",
opacity = 1)
mapa
sessionInfo()
## R version 4.0.2 (2020-06-22)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
##
## 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] rgl_0.100.54 leaflet_2.0.3 RColorBrewer_1.1-2
## [4] cowplot_1.1.0 ggrepel_0.8.2 GSODR_2.1.2
## [7] rnaturalearth_0.1.0 viridis_0.5.1 viridisLite_0.3.0
## [10] sf_0.9-5 raster_3.3-13 maptools_1.0-2
## [13] rgeos_0.5-5 sp_1.4-2 forcats_0.5.0
## [16] stringr_1.4.0 dplyr_1.0.2 purrr_0.3.4
## [19] readr_1.3.1 tidyr_1.1.2 tibble_3.0.3
## [22] ggplot2_3.3.2 tidyverse_1.3.0 here_0.1
##
## loaded via a namespace (and not attached):
## [1] fs_1.5.0 lubridate_1.7.9 webshot_0.5.2
## [4] httr_1.4.2 rprojroot_1.3-2 tools_4.0.2
## [7] backports_1.1.9 R6_2.4.1 KernSmooth_2.23-17
## [10] DBI_1.1.0 colorspace_1.4-1 manipulateWidget_0.10.1
## [13] withr_2.2.0 tidyselect_1.1.0 gridExtra_2.3
## [16] compiler_4.0.2 cli_2.0.2 rvest_0.3.6
## [19] xml2_1.3.2 labeling_0.3 scales_1.1.1
## [22] classInt_0.4-3 digest_0.6.25 foreign_0.8-80
## [25] rmarkdown_2.3 pkgconfig_2.0.3 htmltools_0.5.0
## [28] fastmap_1.0.1 dbplyr_1.4.4 htmlwidgets_1.5.1
## [31] rlang_0.4.7 readxl_1.3.1 rstudioapi_0.11
## [34] shiny_1.5.0 farver_2.0.3 generics_0.0.2
## [37] jsonlite_1.7.1 crosstalk_1.1.0.1 magrittr_1.5
## [40] Rcpp_1.0.5 munsell_0.5.0 fansi_0.4.1
## [43] lifecycle_0.2.0 stringi_1.5.3 yaml_2.2.1
## [46] grid_4.0.2 blob_1.2.1 promises_1.1.1
## [49] crayon_1.3.4 miniUI_0.1.1.1 lattice_0.20-41
## [52] haven_2.3.1 hms_0.5.3 knitr_1.29
## [55] pillar_1.4.6 codetools_0.2-16 reprex_0.3.0
## [58] glue_1.4.2 evaluate_0.14 leaflet.providers_1.9.0
## [61] data.table_1.13.0 modelr_0.1.8 vctrs_0.3.4
## [64] httpuv_1.5.4 cellranger_1.1.0 gtable_0.3.0
## [67] assertthat_0.2.1 xfun_0.16 mime_0.9
## [70] xtable_1.8-4 broom_0.7.0 e1071_1.7-3
## [73] later_1.1.0.1 class_7.3-17 units_0.6-7
## [76] ellipsis_0.3.1
Lo anterior se hizo para la Producción de Café. Pero, también podemos registrar gráficamente cuántas fueron las hectáreas sembradas de cultivo de arroz y en qué partes del departemento están concentradas las zonas del cultivo que ocupa el segundo lugar después del café en el departamneto de Huila.
(datos_arroz <- datos_1 %>% filter(CULTIVO == "ARROZ"))
class(datos_arroz)
## [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
(datos_arroz_1 <- datos_arroz %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento))
datos_arroz_1 %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number)
head(datos_arroz_1)
datos_arroz_1 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number) -> datos_arroz_2
head(datos_arroz_2)
tail(datos_arroz_2)
hui_munic_arroz <- hui_munic
hui_munic_arroz_stat = left_join(hui_munic_arroz, datos_arroz_2, by = "MPIO_CCDGO")
summary(hui_munic_arroz_stat)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:37 Length:37 Length:37 Length:37
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 80.44 Min. :2017 Length:37 Min. :0.5175
## 1st Qu.: 251.23 1st Qu.:2017 Class :character 1st Qu.:0.8666
## Median : 370.66 Median :2017 Mode :character Median :1.1565
## Mean : 490.31 Mean :2017 Mean :1.2396
## 3rd Qu.: 589.69 3rd Qu.:2017 3rd Qu.:1.4957
## Max. :1584.97 Max. :2017 Max. :3.0732
##
## Shape_Area MUNICIPIO Produccion_1 Produccion_10
## Min. :0.006532 Length:37 Min. : 7 Min. : 28.0
## 1st Qu.:0.020425 Class :character 1st Qu.: 560 1st Qu.: 512.5
## Median :0.030087 Mode :character Median : 2622 Median : 2700.0
## Mean :0.039844 Mean : 5066 Mean : 5327.1
## 3rd Qu.:0.047930 3rd Qu.: 5925 3rd Qu.: 4908.0
## Max. :0.128978 Max. :25200 Max. :33250.0
## NA's :16 NA's :18
## Produccion_11 Produccion_12 Produccion_13 Produccion_14
## Min. : 82 Min. : 56 Min. : 80.0 Min. : 63
## 1st Qu.: 875 1st Qu.: 867 1st Qu.: 738.2 1st Qu.: 970
## Median : 3395 Median : 3318 Median : 2541.0 Median : 2708
## Mean : 6605 Mean : 6678 Mean : 5620.2 Mean : 5465
## 3rd Qu.: 6772 3rd Qu.: 5633 3rd Qu.: 4608.2 3rd Qu.: 4300
## Max. :37080 Max. :39528 Max. :36245.0 Max. :32936
## NA's :19 NA's :19 NA's :19 NA's :19
## Produccion_15 Produccion_16 Produccion_17 Produccion_18
## Min. : 82.0 Min. : 61.0 Min. : 84 Min. : 61.0
## 1st Qu.: 978.2 1st Qu.: 965.2 1st Qu.: 941 1st Qu.: 993.2
## Median : 2352.0 Median : 2677.5 Median : 2262 Median : 2670.0
## Mean : 5659.3 Mean : 5595.1 Mean : 5466 Mean : 5706.2
## 3rd Qu.: 4049.0 3rd Qu.: 4181.0 3rd Qu.: 3923 3rd Qu.: 4372.5
## Max. :35588.0 Max. :34339.0 Max. :34237 Max. :34928.0
## NA's :19 NA's :19 NA's :19 NA's :19
## Produccion_19 Produccion_2 Produccion_20 Produccion_21
## Min. : 135.0 Min. : 59.0 Min. : 146 Min. : 137
## 1st Qu.: 944.8 1st Qu.: 682.5 1st Qu.: 594 1st Qu.: 860
## Median : 2271.5 Median : 2309.5 Median : 2784 Median : 2240
## Mean : 5888.1 Mean : 5506.6 Mean : 8428 Mean : 8182
## 3rd Qu.: 5520.8 3rd Qu.: 5931.2 3rd Qu.: 9230 3rd Qu.: 9835
## Max. :34375.0 Max. :27650.0 Max. :54463 Max. :53345
## NA's :19 NA's :17 NA's :20 NA's :20
## Produccion_22 Produccion_23 Produccion_24 Produccion_3
## Min. : 127 Min. : 228.0 Min. : 66.0 Min. : 65.0
## 1st Qu.: 813 1st Qu.: 818.5 1st Qu.: 881.2 1st Qu.: 682.5
## Median : 3079 Median : 2564.5 Median : 2388.0 Median : 2985.0
## Mean : 7278 Mean : 7370.6 Mean : 7740.1 Mean : 5755.1
## 3rd Qu.: 6847 3rd Qu.: 7415.8 3rd Qu.: 6432.8 3rd Qu.: 6162.5
## Max. :45179 Max. :41559.0 Max. :45532.0 Max. :28835.0
## NA's :20 NA's :21 NA's :23 NA's :17
## Produccion_4 Produccion_5 Produccion_6 Produccion_7
## Min. : 33 Min. : 33 Min. : 35 Min. : 120
## 1st Qu.: 944 1st Qu.: 1102 1st Qu.: 725 1st Qu.: 1080
## Median : 3000 Median : 3150 Median : 3285 Median : 3375
## Mean : 6310 Mean : 6884 Mean : 6357 Mean : 6563
## 3rd Qu.: 6710 3rd Qu.: 6702 3rd Qu.: 6314 3rd Qu.: 6624
## Max. :33580 Max. :35770 Max. :35890 Max. :36720
## NA's :18 NA's :18 NA's :18 NA's :18
## Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10
## Min. : 70.0 Min. : 70.0 Min. : 5.00 Min. : 6.00
## 1st Qu.: 584.5 1st Qu.: 612.5 1st Qu.: 7.00 1st Qu.: 34.50
## Median : 2380.0 Median : 2278.0 Median : 65.00 Median : 65.00
## Mean : 4149.9 Mean : 5017.6 Mean : 76.43 Mean : 85.58
## 3rd Qu.: 4830.0 3rd Qu.: 5215.0 3rd Qu.: 75.00 3rd Qu.: 69.00
## Max. :21120.0 Max. :28520.0 Max. :708.00 Max. :716.00
## NA's :18 NA's :18 NA's :16 NA's :18
## Rendimiento_11 Rendimiento_12 Rendimiento_13 Rendimiento_14
## Min. : 7.00 Min. : 7.00 Min. : 6.0 Min. : 7.0
## 1st Qu.: 7.00 1st Qu.:63.50 1st Qu.: 63.0 1st Qu.:614.2
## Median :35.00 Median :68.00 Median :585.0 Median :664.0
## Mean :38.06 Mean :54.94 Mean :434.6 Mean :522.1
## 3rd Qu.:68.00 3rd Qu.:70.50 3rd Qu.:648.0 3rd Qu.:669.0
## Max. :72.00 Max. :72.00 Max. :675.0 Max. :688.0
## NA's :19 NA's :19 NA's :19 NA's :19
## Rendimiento_15 Rendimiento_16 Rendimiento_17 Rendimiento_18
## Min. : 7.0 Min. :635.0 Min. :678.0 Min. :594.0
## 1st Qu.: 7.0 1st Qu.:675.0 1st Qu.:678.0 1st Qu.:689.0
## Median : 35.5 Median :686.0 Median :678.0 Median :689.0
## Mean :140.9 Mean :680.7 Mean :681.3 Mean :686.7
## 3rd Qu.: 71.0 3rd Qu.:693.0 3rd Qu.:678.0 3rd Qu.:689.0
## Max. :693.0 Max. :712.0 Max. :716.0 Max. :716.0
## NA's :19 NA's :19 NA's :19 NA's :19
## Rendimiento_19 Rendimiento_2 Rendimiento_20 Rendimiento_21
## Min. : 81.0 Min. : 5.00 Min. : 66.0 Min. : 64.0
## 1st Qu.:716.0 1st Qu.: 7.00 1st Qu.:581.0 1st Qu.:623.0
## Median :716.0 Median : 27.50 Median :723.0 Median :672.0
## Mean :675.2 Mean : 67.35 Mean :571.5 Mean :602.4
## 3rd Qu.:716.0 3rd Qu.: 69.00 3rd Qu.:745.0 3rd Qu.:695.0
## Max. :794.0 Max. :674.00 Max. :801.0 Max. :824.0
## NA's :19 NA's :17 NA's :20 NA's :20
## Rendimiento_22 Rendimiento_23 Rendimiento_24 Rendimiento_3
## Min. : 69.0 Min. : 7.0 Min. : 7.00 Min. : 7.0
## 1st Qu.:697.0 1st Qu.:677.0 1st Qu.: 7.00 1st Qu.: 7.0
## Median :718.0 Median :697.5 Median : 67.00 Median : 70.0
## Mean :645.7 Mean :613.4 Mean : 92.21 Mean :140.8
## 3rd Qu.:739.0 3rd Qu.:703.0 3rd Qu.: 68.75 3rd Qu.: 75.0
## Max. :792.0 Max. :763.0 Max. :708.00 Max. :689.0
## NA's :20 NA's :21 NA's :23 NA's :17
## Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7
## Min. : 63.0 Min. : 7.00 Min. : 7.00 Min. : 7.0
## 1st Qu.: 72.0 1st Qu.: 8.00 1st Qu.:73.00 1st Qu.: 72.0
## Median : 73.0 Median : 73.00 Median :73.00 Median : 73.0
## Mean :105.8 Mean : 83.63 Mean :66.37 Mean :203.2
## 3rd Qu.: 74.0 3rd Qu.: 75.00 3rd Qu.:74.00 3rd Qu.: 74.5
## Max. :709.0 Max. :667.00 Max. :75.00 Max. :735.0
## NA's :18 NA's :18 NA's :18 NA's :18
## Rendimiento_8 Rendimiento_9 YEAR_1 YEAR_10 YEAR_11
## Min. : 6.0 Min. : 6.0 Min. :2006 Min. :2011 Min. :2011
## 1st Qu.: 7.0 1st Qu.: 7.0 1st Qu.:2006 1st Qu.:2011 1st Qu.:2011
## Median : 65.0 Median : 59.0 Median :2006 Median :2011 Median :2011
## Mean :165.1 Mean :103.3 Mean :2007 Mean :2011 Mean :2011
## 3rd Qu.: 71.5 3rd Qu.: 67.5 3rd Qu.:2006 3rd Qu.:2011 3rd Qu.:2011
## Max. :687.0 Max. :689.0 Max. :2016 Max. :2015 Max. :2012
## NA's :18 NA's :18 NA's :16 NA's :18 NA's :19
## YEAR_12 YEAR_13 YEAR_14 YEAR_15 YEAR_16
## Min. :2012 Min. :2012 Min. :2013 Min. :2013 Min. :2014
## 1st Qu.:2012 1st Qu.:2012 1st Qu.:2013 1st Qu.:2013 1st Qu.:2014
## Median :2012 Median :2012 Median :2013 Median :2013 Median :2014
## Mean :2012 Mean :2012 Mean :2013 Mean :2013 Mean :2014
## 3rd Qu.:2012 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2013 3rd Qu.:2014
## Max. :2013 Max. :2013 Max. :2014 Max. :2014 Max. :2015
## NA's :19 NA's :19 NA's :19 NA's :19 NA's :19
## YEAR_17 YEAR_18 YEAR_19 YEAR_2 YEAR_20
## Min. :2014 Min. :2015 Min. :2015 Min. :2007 Min. :2016
## 1st Qu.:2014 1st Qu.:2015 1st Qu.:2015 1st Qu.:2007 1st Qu.:2016
## Median :2014 Median :2015 Median :2015 Median :2007 Median :2016
## Mean :2014 Mean :2015 Mean :2015 Mean :2008 Mean :2016
## 3rd Qu.:2014 3rd Qu.:2015 3rd Qu.:2015 3rd Qu.:2007 3rd Qu.:2016
## Max. :2015 Max. :2016 Max. :2016 Max. :2014 Max. :2017
## NA's :19 NA's :19 NA's :19 NA's :17 NA's :20
## YEAR_21 YEAR_22 YEAR_23 YEAR_24 YEAR_3
## Min. :2016 Min. :2017 Min. :2017 Min. :2018 Min. :2007
## 1st Qu.:2016 1st Qu.:2017 1st Qu.:2017 1st Qu.:2018 1st Qu.:2007
## Median :2016 Median :2017 Median :2017 Median :2018 Median :2007
## Mean :2016 Mean :2017 Mean :2017 Mean :2018 Mean :2008
## 3rd Qu.:2016 3rd Qu.:2017 3rd Qu.:2017 3rd Qu.:2018 3rd Qu.:2007
## Max. :2017 Max. :2018 Max. :2018 Max. :2018 Max. :2015
## NA's :20 NA's :20 NA's :21 NA's :23 NA's :17
## YEAR_4 YEAR_5 YEAR_6 YEAR_7 YEAR_8
## Min. :2008 Min. :2008 Min. :2009 Min. :2009 Min. :2010
## 1st Qu.:2008 1st Qu.:2008 1st Qu.:2009 1st Qu.:2009 1st Qu.:2010
## Median :2008 Median :2008 Median :2009 Median :2009 Median :2010
## Mean :2008 Mean :2008 Mean :2009 Mean :2009 Mean :2010
## 3rd Qu.:2008 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2009 3rd Qu.:2010
## Max. :2012 Max. :2013 Max. :2013 Max. :2014 Max. :2014
## NA's :18 NA's :18 NA's :18 NA's :18 NA's :18
## YEAR_9 geometry
## Min. :2010 POLYGON :37
## 1st Qu.:2010 epsg:4326 : 0
## Median :2010 +proj=long...: 0
## Mean :2010
## 3rd Qu.:2010
## Max. :2015
## NA's :18
Graficamos:
bins <- c(0, 250, 500, 1000, 2000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000)
pal <- colorBin("YlGnBu", domain = hui_munic_arroz_stat$Produccion_24, bins = bins)
mapa <- leaflet(data = hui_munic_arroz_stat) %>%
addTiles() %>%
addPolygons(label = ~Produccion_24,
popup = ~MPIO_CNMBR,
fillColor = ~pal(Produccion_24),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 9.0,
fillOpacity = 3.0,
highlightOptions = highlightOptions(color = "Blue", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~Produccion_24,
title = "Producción de Arroz en Huila [Ton] (2018)",
opacity = 1
)
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette YlGnBu is 9
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette YlGnBu is 9
## Returning the palette you asked for with that many colors
mapa
sessionInfo()
## R version 4.0.2 (2020-06-22)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
##
## 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] rgl_0.100.54 leaflet_2.0.3 RColorBrewer_1.1-2
## [4] cowplot_1.1.0 ggrepel_0.8.2 GSODR_2.1.2
## [7] rnaturalearth_0.1.0 viridis_0.5.1 viridisLite_0.3.0
## [10] sf_0.9-5 raster_3.3-13 maptools_1.0-2
## [13] rgeos_0.5-5 sp_1.4-2 forcats_0.5.0
## [16] stringr_1.4.0 dplyr_1.0.2 purrr_0.3.4
## [19] readr_1.3.1 tidyr_1.1.2 tibble_3.0.3
## [22] ggplot2_3.3.2 tidyverse_1.3.0 here_0.1
##
## loaded via a namespace (and not attached):
## [1] fs_1.5.0 lubridate_1.7.9 webshot_0.5.2
## [4] httr_1.4.2 rprojroot_1.3-2 tools_4.0.2
## [7] backports_1.1.9 R6_2.4.1 KernSmooth_2.23-17
## [10] DBI_1.1.0 colorspace_1.4-1 manipulateWidget_0.10.1
## [13] withr_2.2.0 tidyselect_1.1.0 gridExtra_2.3
## [16] compiler_4.0.2 cli_2.0.2 rvest_0.3.6
## [19] xml2_1.3.2 labeling_0.3 scales_1.1.1
## [22] classInt_0.4-3 digest_0.6.25 foreign_0.8-80
## [25] rmarkdown_2.3 pkgconfig_2.0.3 htmltools_0.5.0
## [28] fastmap_1.0.1 dbplyr_1.4.4 htmlwidgets_1.5.1
## [31] rlang_0.4.7 readxl_1.3.1 rstudioapi_0.11
## [34] shiny_1.5.0 farver_2.0.3 generics_0.0.2
## [37] jsonlite_1.7.1 crosstalk_1.1.0.1 magrittr_1.5
## [40] Rcpp_1.0.5 munsell_0.5.0 fansi_0.4.1
## [43] lifecycle_0.2.0 stringi_1.5.3 yaml_2.2.1
## [46] grid_4.0.2 blob_1.2.1 promises_1.1.1
## [49] crayon_1.3.4 miniUI_0.1.1.1 lattice_0.20-41
## [52] haven_2.3.1 hms_0.5.3 knitr_1.29
## [55] pillar_1.4.6 codetools_0.2-16 reprex_0.3.0
## [58] glue_1.4.2 evaluate_0.14 leaflet.providers_1.9.0
## [61] data.table_1.13.0 modelr_0.1.8 vctrs_0.3.4
## [64] httpuv_1.5.4 cellranger_1.1.0 gtable_0.3.0
## [67] assertthat_0.2.1 xfun_0.16 mime_0.9
## [70] xtable_1.8-4 broom_0.7.0 e1071_1.7-3
## [73] later_1.1.0.1 class_7.3-17 units_0.6-7
## [76] ellipsis_0.3.1