Mediante este cuaderno R Markdown Notebook. Usaremos algunas librerias como \(dpylr\) que nos proporciona “gramatica” para la manipulacion y operaciones de data frames. mas info), \(sf\) soporte para funciones simples mas info y \(leaflet\) (la cual nos permite la creacion de mapas web. mas info) entre otras.
La exploración de estadísticas no espaciales es fundamental para comprender lo que sucede en los territorios. Varias bibliotecas de R, en particular dplyr y tidyverse , son muy útiles para explorar y resumir estadísticas.
Verificamos el directorio de trabajo usando la funcion \(getwd()\):
getwd()
## [1] "C:/Users/JUANPABLO/Documents/R/GB/Notebooks"
Configuramos el directorio de trabajo usando la funcion \(setwd()\):
setwd("C:/Users/JUANPABLO/Documents/R/GB/Datos")
Usamos la funcion \(rm\) la cual nos permite remover los objetos del entorno de trabajo, limiando asi la memoria con lo cual tendremos un mejor desempeño en nuestro entorno de trabajo:
rm(list = ls())
Ahora instalaremos las librerias que nescesitamos. Usanodo el siguiente comando se instalan los paquetes solo si no se han 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)
Cargamos las librerias usando la funcion \(library\):
library(here)
## here() starts at C:/Users/JUANPABLO/Documents/R/GB/Notebooks
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)
library(dplyr)
library(ggplot2)
library(RColorBrewer)
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:viridis':
##
## viridis_pal
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
Usamos la funcion \(read_csv\) la cual nos permite leer aechivos csv por sus siglas en ingles comma separated values (valores separados por comas) para leer el archivo EVA_valle_del_cauca.csv previamente descargado de la pagina oficial sobre datos de Evaluaciones Agropecuarias Municipales EVA, y guardamos los datos del archivo en un objeto que llamaremos datos:
datos <- read_csv("C:/Users/JUANPABLO/Documents/R/GB/Datos/EVA_Valle_del_Cauca.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_double(),
## ESTADO = col_character(),
## CICLO = col_character()
## )
Para observar los primero 6 atributos del objeto datos usamos:
head(datos)
Para observar los ultimos 6 atriburos del objeto datos usamos:
tail(datos)
Observamos quen en el objeto datos tenemos algunos atributos como la \(superficie\) \(sembrada\), \(superficie\) \(cosechada\) y \(rendimiento\) de varios cultivos en el departamento del Valle del Cauca.
En esta tabla, no tenemos unidades. Sin embargo, si revisamos el archivo csv original, encontramos que las área unidades de son \(hectáreas\) y que las \(rendimiento\) unidades de son \(Ton\) / \(ha\).
Hacemos un promedio del rendimiento durante varios años, por grupo y municipio usando la funcion \(group_by\) la cual toma una tabla existente y la convierte en una tabla agrupada donde las operaciones se realizan por grupo, y almacenamos los datos en un nuevo objeto que llamaremos resumen_rend:
resumen_rend <- datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(Rendimiento, na.rm = TRUE))
## `summarise()` regrouping output by 'MUNICIPIO' (override with `.groups` argument)
Como observamos la funcion nos marca el error summarise() regrouping output by ‘MUNICIPIO’ (override with .groups argument) el cual podemos solucionar agregando , .groups=‘drop_last’(esto es tambien dplyr 1.0) al final de la linea de la funcion \(summarise\) asi:
resumen_rend <- datos %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(Rendimiento, na.rm = TRUE), .groups='drop_last')
Observamos los atributos del objeto resumen_rend usando:
resumen_rend
Calculamos el rendimiento promedio por GRUPO en los municipios del departamento del Valle del Cauca usando la funcion \(group_by\) y seleccionando la fila GRUPO en referencia a clasificacion por grupo de cultivo, almacenamos los datos obtenidos en un nuevo objeto que llamaremos ren_valle:
rend_valle <- datos %>%
group_by(GRUPO) %>%
summarise(rend_dep = mean(Rendimiento, na.rm = TRUE), .groups='drop_last')
Observamos los \(rendimientos\) de cada \(cultivo\) almacenados en el objeto rend_valle usando:
rend_valle
Podemos observar que los rendimientos mas altos corresponden a OTROS PERMANENTES, HORTALIZAS Y FLORES Y FOLLAJES.
Podemos obtener rendimentos mas especificos, usando el codigo anterior y clasificando esta vez por SUBGRUPO de cultivo, el cual nos arroja unos datos mas especificos, almacenamos los datos en un nuevo objeto que llamamos rend_valle_sub:
rend_valle_sub <- datos %>%
group_by(SUBGRUPO) %>%
summarise(rend_dep = mean(Rendimiento, na.rm = TRUE), .groups='drop_last')
Observamos los rendimientos de cultivos clasificados por SUBGRUPOS almacenados en el objeto rend_valle_sub usando:
rend_valle_sub
Encontramos los municipios con mayor rendimiento para cada grupo de cultivos en 2018 usando las funciones \(filter\), \(group_by\) que nos permite agrupar los datos por una o mas variables, \(summarize\) la cual crea un nuevo data.frame con una o mas filas para cada combinacion de variables agrupadas y \(slice\) que nos permite indicializar las filas por su locacion:
rend_max_18 <- datos %>%
filter(YEAR==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_rend = max(Rendimiento, na.rm = TRUE), .groups='drop_last') %>%
slice(which.max(max_rend))
Visualizamos los municipios con mayor area cosechada para cada cultivo en 2018 usando:
rend_max_18
Para encontrar los municipios con mayor area cosechada para cada grupo de cultivos en 2018 usando el codigo anterior y cambiando Rendimiento por Area_cosecha y almacenamos los datos en un nuevo data.frame que llamaremos area_cosecha_max:
area_cosecha_max <- datos %>%
filter(YEAR==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_area_cosecha = max(Area_Cosecha, na.rm = TRUE), .groups='drop_last') %>%
slice(which.max(max_area_cosecha))
Observamos los atributos del data.frame area_cosecha_max:
area_cosecha_max
Observamos que el rendimiendo maximo en el año 2018 se produjo la ciudad de PALMIRA con un total de 27554 hectareas (ha) de OTROS CULTIVOS PERMANENTES.
Podemos obtener un cultivo mas especifico, usando el codigo anterior y clasificando esta vez por SUBGRUPO de cultivo y agregando el municipio de mayor rendimiento en este cado PALMIRA, almacenamos los datos en un nuevo data.frame que llamamos rend_valle_sub:
area_cosecha_max_sub <- datos %>%
filter(YEAR==2018) %>%
group_by(SUBGRUPO, MUNICIPIO) %>%
summarize(max_area_cosecha = max(Area_Cosecha, na.rm = TRUE), .groups='drop_last') %>%
slice(which.max(max_area_cosecha))
area_cosecha_max_sub
Observamos que en este data.frame obtuvimos un rendimiento mas especifico de cultivo el cual corresponde a la ciudad de PALMIRA con un total de 27554 hectareas de CAÑA. Esto nos permite intuir que mucha de la economia de esta ciudad resulta de la produccion de CAÑA.
Filtramos la produccion de CAÑA en PALMIRA para cada año usando las funciones \(filter\) filtrando por MUNICIPIO y SUBGRUPO, y \(grupo_by\) para agrupar por año(YEAR) YEAR y cULTIVO, almacenamos los datos en un nuevo data.frame que llamaremos palmira_caña:
palmira_caña <- datos %>%
filter(MUNICIPIO=="PALMIRA" & SUBGRUPO=="CAÑA") %>%
group_by(YEAR, CULTIVO)
palmira_caña
Puesto que podemos entender mejor los datos de manera grafica, usamos la funcion \(ggplot\), provista por la libreria \(ggplot2\) que nos permite convertir un \(data.frame\) en un objeto \(grafico\), almacenamos los attributos en una nueva variable llamada g:
g <- ggplot(aes(x=YEAR, y=Produccion/1000, fill=YEAR), data = palmira_caña) + geom_bar(stat='identity') + labs(y='Produccion de Caña [Ton x 1000]') + labs(x='AÑO')
g + ggtitle("Evolucion de la Produccion de Caña en Palmira desde 2007 a 2018") + labs(caption= "Basado en datos de EAM (DANE, 2018)") + scale_fill_distiller(name ="Añ", palette= "Spectral", breaks= pretty_breaks(n=10))
Usamos las funciones \(filter\), \(group_by\), \(summarize\) y \(arrange\) con las cuales podemos saber cuales cultivos tubieron la mayor área cosechada en 2018, almacenamos los datos en un nuevo data.frame que llamaremos total_area_cosecha:
total_area_cosecha <- datos %>%
filter(YEAR==2018) %>%
group_by(GRUPO) %>%
summarize(Sum_area_cosecha = sum(Area_Cosecha, na.rm = TRUE), .groups='drop_last') %>%
arrange(desc(Sum_area_cosecha))
total_area_cosecha
Usamos las funciones \(filter\), \(group_by\), \(summarize\) y \(arrange\) para ver los \(cultivos\) con el mayor \(rendimiento\) en el departamento del Valle del Cauca en el año 2018, guardamos los datos en un nuevo data.frame que llamaremos cosecha_total:
cosecha_total <- datos %>%
filter(GRUPO=="OTROS PERMANENTES" & YEAR==2018) %>%
group_by(CULTIVO) %>%
summarize(Sum_cosecha = sum(Area_Cosecha, na.rm = TRUE), .groups='drop_last') %>%
arrange(desc(Sum_cosecha))
cosecha_total
Observamos que en el año 2018 se ubtuvo un mayor rendimiento en el cultivo de CAÑA AZUCARERA, seguida de CAFE, CAÑA PALEÑERA y CACAO.
Usamos las funciones \(filter\), \(group_by\), \(summarize\) y \(slice\) para ver los \(municipios\) con el mayor \(rendimiento\) por *CULTIVO PERMANENTE en el año 2018 clasificando la informacion por CULTIVO y MUNICIPIO, guardamos los datos en un nuevo data.frame que llamaremos max_area_mun:
max_area_mun <- datos %>%
filter(YEAR==2018 & GRUPO=="OTROS PERMANENTES") %>%
group_by(CULTIVO, MUNICIPIO) %>%
summarize(max_area2 = max(Area_Cosecha, na.rm = TRUE), .groups='drop_last') %>%
slice(which.max(max_area2))
max_area_mun
Agregamos una \(columna\) al data.frame total_area_cosecha, la cual llamaremos COSECHA, usamos la funcion \(abbreviate\) que nos permite abreviar *GRUPO** de cultivo a caracteres de longitud minima, esto para ordenar la trama:
total_area_cosecha$COSECHA <- abbreviate(total_area_cosecha$GRUPO, 3)
Usamos la funcion \(ggplot\) para convertir el data.frame total_area_cosecha en un grafico que nos permitira comprender mejor los datos de \(area\) \(cosechada\):
g <- ggplot(aes(x=COSECHA, y=Sum_area_cosecha, fill=COSECHA), data = total_area_cosecha) + geom_bar(stat='identity', colour = "blue") + labs(y='Area Total de Cosecha [Ha]') + labs(x='GRUPO DE CULTIVO') + scale_fill_manual(values=c("red", "blue", "green", "yellow", "tomato", "seagreen", "salmon", "royalblue3", "wheat1", "#66CC99"))
g+ ggtitle("Superficie total cosechada por grupos de cultivos en 2018 para Valle") + theme(plot.title = element_text(hjust = 0.5)) +labs(caption= "Basado en datos de EAM (DANE, 2018)")
Leemos los datos del \(Marco\) \(Geoestadistico\) \(Departamental\) descargado de DANE Geoportal, usando la libreria \(sf\) y los almacenamos en un nuevo data.frame que llamaremos Vall_munic:
vall_munic <- sf::st_read("C:/Users/JUANPABLO/Documents/R/GB/Datos/MGN2017_76_VALLE_DEL_CAUCA/76_VALLE_DEL_CAUCA/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
## Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\JUANPABLO\Documents\R\GB\Datos\MGN2017_76_VALLE_DEL_CAUCA\76_VALLE_DEL_CAUCA\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
## Simple feature collection with 42 features and 9 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -77.54977 ymin: 3.091239 xmax: -75.70724 ymax: 5.047394
## geographic CRS: WGS 84
Observamos los atributos del \(data.frame\) vall_munic:
vall_munic$MPIO_CNMBR
## [1] "CALI" "ANDALUCÍA" "ANSERMANUEVO" "ARGELIA" "BUGA"
## [6] "BUGALAGRANDE" "CAICEDONIA" "CALIMA" "CANDELARIA" "CARTAGO"
## [11] "EL ÁGUILA" "EL CAIRO" "EL CERRITO" "EL DOVIO" "FLORIDA"
## [16] "GINEBRA" "GUACARÍ" "ALCALÁ" "OBANDO" "PALMIRA"
## [21] "PRADERA" "RESTREPO" "RIOFRÍO" "ROLDANILLO" "SAN PEDRO"
## [26] "SEVILLA" "TORO" "TRUJILLO" "TULUÁ" "ULLOA"
## [31] "VERSALLES" "VIJES" "YOTOCO" "YUMBO" "ZARZAL"
## [36] "LA VICTORIA" "LA UNIÓN" "LA CUMBRE" "JAMUNDÍ" "BOLÍVAR"
## [41] "DAGUA" "BUENAVENTURA"
vall_munic$MPIO_CCDGO
## [1] "76001" "76036" "76041" "76054" "76111" "76113" "76122" "76126" "76130"
## [10] "76147" "76243" "76246" "76248" "76250" "76275" "76306" "76318" "76020"
## [19] "76497" "76520" "76563" "76606" "76616" "76622" "76670" "76736" "76823"
## [28] "76828" "76834" "76845" "76863" "76869" "76890" "76892" "76895" "76403"
## [37] "76400" "76377" "76364" "76100" "76233" "76109"
Puesto que nuestro proposito es usar la funcion \(left_join\) para unir los municipios y las estadistica agricolas seleccionadas.
Necesitamos un atributo común (o variable compartida) en el que basar la unión. El mejor atributo es una identificación. En vall_munic , el atributo MPIO_CCDGO parece ser el mas apropiado (tiene un valor 76001 para CALI). En datos , el atributo correspondiente es COD_MUN (lee 76001 para CALI).
Filtramos los datos correspondientes a la ciudad de CALI usando la funcion \(filter\) y alacenamos los datos en un nuevo data.frame que llamamos datos_cali:
(datos_cali <- datos %>% filter (MUNICIPIO =="CALI") )
A partir del \(data.frame\) datos creamos un nuevo \(data.frame\) que llamamos datos2, agregamos una nueva columna que llamamos TEMP en la que almacenamos los atributos de la columna COD_MUN y le asignamos la clase \(character\) usando la funcion \(as.character\):
datos2 <- datos
datos2$TEMP <- as.character(datos2$COD_MUN)
Agregamos una nueva columna al \(data.frame\) datos2 que llamamos MPIO_CCDGO en la que almacenamos los atributos de la columna TEMP y le asignamos la clase \(factor\) usando la funcion \(as.factor\):
datos2$MPIO_CCDGO <- as.factor(datos2$TEMP)
datos2
USando la funcion \(filter\), filtramos los datos seleccionando dos atributos relevantes, almacenamos los datos filtrados en un nuevo \(data.frame\) que llmamos datosC_A2:
datosC_A2 <- datos2 %>% filter(CULTIVO == "CAÑA AZUCARERA")
Usando la funcion \(dplyr::select\) seleccionamos las variables del \(data.frame\) datosC_A2 que nos interesan y creamos un nuevo \(data.frame\) que llamamos datosC_A3 en el cual almacenamos las variables seleccionadas:
(datosC_A3 <- datosC_A2 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento))
Usamos la funcion \(gather\) la cual nos permite reunir las columnas en pares clave-valor (key-vale), Reunimos las variables Produccion y Rendimiento en el \(data.frame\) datosC_A3:
datosC_A3 %>%
gather("YEAR", "Produccion", "Rendimiento" , key = variable, value = number)
Usamos las funciones \(group_by\), \(mutate\) que agrega nuevas variables y conserva las existentes, \(gather\), \(unite\) con la cual pegamos varias columnas en una y \(spread\) con la que distribuimos un pas key-value en varias columnas, almacenamos los datos en un nuevo \(data.frame\) que llamamos datosC_A4:
datosC_A4 <- datosC_A3 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number)
head(datosC_A4)
Observamos los ultimos atributos del data.frame datosC_A4:
tail(datosC_A4)
A partir del \(data.frame\) \(sf\) vall_mun creamos una copia que llalamos vall_mun2:
vall_munic2 <- vall_munic
Usamos la funcion \(left_join\) la cual agrega columnas de y a x, haciendo coincidir las filas en x, para unir las \(data.frame\) \(sf\) vall_munic2 y datosC_A4, almacenamos las uniones en un nuevo \(data.frame\) \(sf\) que llamamos vall_munic_stat:
vall_munic_stat <- left_join(vall_munic2, datosC_A4, by="MPIO_CCDGO")
Usamos la funcion \(summary\) que nos permite resumir los datos del \(data.frame\) vall_munic_stat:
summary(vall_munic_stat)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:42 Length:42 Length:42 Length:42
## 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. : 41.86 Min. :2017 Length:42 Min. :0.4538
## 1st Qu.: 191.01 1st Qu.:2017 Class :character 1st Qu.:0.7223
## Median : 266.71 Median :2017 Mode :character Median :0.9059
## Mean : 492.04 Mean :2017 Mean :1.1602
## 3rd Qu.: 431.81 3rd Qu.:2017 3rd Qu.:1.3207
## Max. :6292.50 Max. :2017 Max. :6.5953
##
## Shape_Area MUNICIPIO Produccion_1 Produccion_10
## Min. :0.003409 Length:42 Min. : 4063 Min. : 11793
## 1st Qu.:0.015552 Class :character 1st Qu.: 102165 1st Qu.: 180887
## Median :0.021696 Mode :character Median : 283748 Median : 308170
## Mean :0.039988 Mean : 569315 Mean : 618102
## 3rd Qu.:0.035099 3rd Qu.: 661838 3rd Qu.: 711096
## Max. :0.510779 Max. :3999438 Max. :3992357
## NA's :12 NA's :12
## Produccion_11 Produccion_12 Produccion_2 Produccion_3
## Min. : 12892 Min. : 14573 Min. : 3231 Min. : 4269
## 1st Qu.: 193732 1st Qu.: 228639 1st Qu.: 88996 1st Qu.: 131610
## Median : 388715 Median : 505352 Median : 265650 Median : 352734
## Mean : 692881 Mean : 755331 Mean : 518394 Mean : 625183
## 3rd Qu.: 812230 3rd Qu.: 919580 3rd Qu.: 654869 3rd Qu.: 782539
## Max. :4085384 Max. :4300436 Max. :3597005 Max. :4546116
## NA's :14 NA's :14 NA's :12 NA's :12
## Produccion_4 Produccion_5 Produccion_6 Produccion_7
## Min. : 3911 Min. : 4058 Min. : 10036 Min. : 9603
## 1st Qu.: 114951 1st Qu.: 143036 1st Qu.: 131047 1st Qu.: 135971
## Median : 286009 Median : 371322 Median : 340198 Median : 352980
## Mean : 541493 Mean : 605724 Mean : 555615 Mean : 576527
## 3rd Qu.: 699303 3rd Qu.: 711084 3rd Qu.: 651481 3rd Qu.: 675960
## Max. :3531749 Max. :3916935 Max. :3588616 Max. :3723457
## NA's :12 NA's :12 NA's :12 NA's :12
## Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10
## Min. : 5875 Min. : 495 Min. : 82.92 Min. :107.1
## 1st Qu.: 189541 1st Qu.: 170866 1st Qu.:112.21 1st Qu.:117.6
## Median : 428494 Median : 416130 Median :114.15 Median :127.3
## Mean : 653217 Mean : 649238 Mean :114.93 Mean :123.9
## 3rd Qu.: 837314 3rd Qu.: 808216 3rd Qu.:120.77 3rd Qu.:128.5
## Max. :3899980 Max. :4010743 Max. :129.34 Max. :139.2
## NA's :12 NA's :12 NA's :12 NA's :12
## Rendimiento_11 Rendimiento_12 Rendimiento_2 Rendimiento_3
## Min. :119.9 Min. :134.1 Min. : 85.19 Min. : 99.48
## 1st Qu.:135.1 1st Qu.:144.2 1st Qu.:114.89 1st Qu.:111.19
## Median :146.2 Median :156.0 Median :121.27 Median :118.30
## Mean :141.4 Mean :150.1 Mean :121.96 Mean :118.99
## 3rd Qu.:148.1 3rd Qu.:156.1 3rd Qu.:126.32 3rd Qu.:125.04
## Max. :160.4 Max. :156.1 Max. :174.76 Max. :140.34
## NA's :14 NA's :14 NA's :12 NA's :12
## Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7
## Min. : 86.91 Min. : 96.62 Min. : 86.95 Min. : 96.62
## 1st Qu.:110.67 1st Qu.:123.24 1st Qu.: 98.45 1st Qu.:108.76
## Median :123.04 Median :130.76 Median :102.06 Median :113.42
## Mean :119.46 Mean :129.45 Mean :105.38 Mean :115.31
## 3rd Qu.:126.98 3rd Qu.:131.69 3rd Qu.:108.09 3rd Qu.:117.19
## Max. :148.78 Max. :200.69 Max. :156.48 Max. :153.00
## NA's :12 NA's :12 NA's :12 NA's :12
## Rendimiento_8 Rendimiento_9 YEAR_1 YEAR_10 YEAR_11
## Min. : 81.31 Min. : 92.01 Min. :2007 Min. :2016 Min. :2017
## 1st Qu.:118.66 1st Qu.:116.18 1st Qu.:2007 1st Qu.:2016 1st Qu.:2017
## Median :125.77 Median :121.96 Median :2007 Median :2016 Median :2017
## Mean :122.65 Mean :121.19 Mean :2007 Mean :2016 Mean :2017
## 3rd Qu.:128.92 3rd Qu.:125.28 3rd Qu.:2007 3rd Qu.:2016 3rd Qu.:2017
## Max. :138.84 Max. :146.06 Max. :2009 Max. :2018 Max. :2017
## NA's :12 NA's :12 NA's :12 NA's :12 NA's :14
## YEAR_12 YEAR_2 YEAR_3 YEAR_4 YEAR_5
## Min. :2018 Min. :2008 Min. :2009 Min. :2010 Min. :2011
## 1st Qu.:2018 1st Qu.:2008 1st Qu.:2009 1st Qu.:2010 1st Qu.:2011
## Median :2018 Median :2008 Median :2009 Median :2010 Median :2011
## Mean :2018 Mean :2008 Mean :2009 Mean :2010 Mean :2011
## 3rd Qu.:2018 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2010 3rd Qu.:2011
## Max. :2018 Max. :2010 Max. :2011 Max. :2012 Max. :2013
## NA's :14 NA's :12 NA's :12 NA's :12 NA's :12
## YEAR_6 YEAR_7 YEAR_8 YEAR_9 geometry
## Min. :2012 Min. :2013 Min. :2014 Min. :2015 MULTIPOLYGON :42
## 1st Qu.:2012 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015 epsg:4326 : 0
## Median :2012 Median :2013 Median :2014 Median :2015 +proj=long...: 0
## Mean :2012 Mean :2013 Mean :2014 Mean :2015
## 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
## Max. :2014 Max. :2015 Max. :2016 Max. :2017
## NA's :12 NA's :12 NA's :12 NA's :12
Instalamos la libreria \(RColorBrewer\) la cual usaremos para cambiar colores en los graficos.
#install.packages("RColorBrewer")
Cargamos las librerias que usaremos usando la funcion \(llibrary\):
library(RColorBrewer)
library(leaflet)
Usando la libreria \(leaflet\) graficamos la produccion de Caña de Azucar de cada municipio en un año:
bins <- c(0, 100000, 150000, 200000, 500000, 1000000, 2000000, 3000000, 4500000)
pal <- colorBin("PRGn", domain = vall_munic_stat$Produccion_12, bins = bins)
mapa <- leaflet(data = vall_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 Caña Azucarera en Valle [Ton] (2018)",
opacity = 1
)
mapa
Repetimos el proceso anterior filtrando los datos por \(Cultivo\) de CAFE:
datosC2 <- datos2 %>% filter(CULTIVO == "CAFE")
(datosC3 <- datosC2 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento))
datosC3 %>%
gather("YEAR", "Produccion", "Rendimiento" , key = variable, value = number)
datosC4 <- datosC3 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number)
head(datosC4)
tail(datosC4)
vall_munic_c <- vall_munic
vall_munic_stat_c <- left_join(vall_munic_c, datosC4, by="MPIO_CCDGO")
summary(vall_munic_stat_c)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:42 Length:42 Length:42 Length:42
## 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. : 41.86 Min. :2017 Length:42 Min. :0.4538
## 1st Qu.: 191.01 1st Qu.:2017 Class :character 1st Qu.:0.7223
## Median : 266.71 Median :2017 Mode :character Median :0.9059
## Mean : 492.04 Mean :2017 Mean :1.1602
## 3rd Qu.: 431.81 3rd Qu.:2017 3rd Qu.:1.3207
## Max. :6292.50 Max. :2017 Max. :6.5953
##
## Shape_Area MUNICIPIO Produccion_1 Produccion_10
## Min. :0.003409 Length:42 Min. : 76 Min. : 162
## 1st Qu.:0.015552 Class :character 1st Qu.: 405 1st Qu.: 472
## Median :0.021696 Mode :character Median : 800 Median : 745
## Mean :0.039988 Mean :1785 Mean :1463
## 3rd Qu.:0.035099 3rd Qu.:1910 3rd Qu.:1550
## Max. :0.510779 Max. :8284 Max. :5895
## NA's :3 NA's :3
## Produccion_11 Produccion_12 Produccion_2 Produccion_3
## Min. : 142.0 Min. : 139.0 Min. : 85.0 Min. : 83
## 1st Qu.: 410.5 1st Qu.: 398.5 1st Qu.: 369.5 1st Qu.: 340
## Median : 780.0 Median : 748.0 Median : 785.0 Median : 872
## Mean :1325.3 Mean :1273.5 Mean :1683.8 Mean :1608
## 3rd Qu.:1657.0 3rd Qu.:1734.5 3rd Qu.:1960.5 3rd Qu.:1553
## Max. :6212.0 Max. :5906.0 Max. :8284.0 Max. :8764
## NA's :3 NA's :3 NA's :3 NA's :3
## Produccion_4 Produccion_5 Produccion_6 Produccion_7
## Min. : 90 Min. : 86.0 Min. : 100.0 Min. : 75
## 1st Qu.: 414 1st Qu.: 420.5 1st Qu.: 415.5 1st Qu.: 287
## Median : 861 Median : 992.0 Median : 776.0 Median : 528
## Mean : 1782 Mean :1678.9 Mean :1569.0 Mean :1101
## 3rd Qu.: 1913 3rd Qu.:1908.0 3rd Qu.:1812.0 3rd Qu.:1019
## Max. :10154 Max. :8377.0 Max. :8587.0 Max. :5161
## NA's :3 NA's :3 NA's :3 NA's :3
## Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10
## Min. : 100 Min. : 158 Min. :0.3000 Min. :0.890
## 1st Qu.: 351 1st Qu.: 461 1st Qu.:0.5850 1st Qu.:0.990
## Median : 670 Median : 772 Median :0.8800 Median :1.060
## Mean :1277 Mean :1476 Mean :0.8169 Mean :1.053
## 3rd Qu.:1200 3rd Qu.:1544 3rd Qu.:1.0000 3rd Qu.:1.100
## Max. :5757 Max. :6108 Max. :1.3000 Max. :1.270
## NA's :3 NA's :3 NA's :3 NA's :3
## Rendimiento_11 Rendimiento_12 Rendimiento_2 Rendimiento_3
## Min. :0.6600 Min. :0.6200 Min. :0.3100 Min. :0.3200
## 1st Qu.:0.7600 1st Qu.:0.7800 1st Qu.:0.6100 1st Qu.:0.5850
## Median :0.8400 Median :0.8600 Median :0.8400 Median :0.8600
## Mean :0.9774 Mean :0.9946 Mean :0.8079 Mean :0.8374
## 3rd Qu.:1.1600 3rd Qu.:1.1900 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :1.8200 Max. :1.8700 Max. :1.4300 Max. :1.6000
## NA's :3 NA's :3 NA's :3 NA's :3
## Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7
## Min. :0.3500 Min. :0.2000 Min. :0.4000 Min. :0.4000
## 1st Qu.:0.6800 1st Qu.:0.6600 1st Qu.:0.6550 1st Qu.:0.6400
## Median :0.8600 Median :0.8800 Median :0.8000 Median :0.7200
## Mean :0.8946 Mean :0.8967 Mean :0.8033 Mean :0.7192
## 3rd Qu.:1.0900 3rd Qu.:1.1000 3rd Qu.:1.0000 3rd Qu.:0.8000
## Max. :1.6000 Max. :1.7000 Max. :1.2000 Max. :1.2100
## NA's :3 NA's :3 NA's :3 NA's :3
## Rendimiento_8 Rendimiento_9 YEAR_1 YEAR_10 YEAR_11
## Min. :0.4400 Min. :0.860 Min. :2007 Min. :2016 Min. :2017
## 1st Qu.:0.7000 1st Qu.:0.960 1st Qu.:2007 1st Qu.:2016 1st Qu.:2017
## Median :0.7800 Median :1.020 Median :2007 Median :2016 Median :2017
## Mean :0.7887 Mean :1.019 Mean :2007 Mean :2016 Mean :2017
## 3rd Qu.:0.8800 3rd Qu.:1.060 3rd Qu.:2007 3rd Qu.:2016 3rd Qu.:2017
## Max. :1.3100 Max. :1.230 Max. :2007 Max. :2016 Max. :2017
## NA's :3 NA's :3 NA's :3 NA's :3 NA's :3
## YEAR_12 YEAR_2 YEAR_3 YEAR_4 YEAR_5
## Min. :2018 Min. :2008 Min. :2009 Min. :2010 Min. :2011
## 1st Qu.:2018 1st Qu.:2008 1st Qu.:2009 1st Qu.:2010 1st Qu.:2011
## Median :2018 Median :2008 Median :2009 Median :2010 Median :2011
## Mean :2018 Mean :2008 Mean :2009 Mean :2010 Mean :2011
## 3rd Qu.:2018 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2010 3rd Qu.:2011
## Max. :2018 Max. :2008 Max. :2009 Max. :2010 Max. :2011
## NA's :3 NA's :3 NA's :3 NA's :3 NA's :3
## YEAR_6 YEAR_7 YEAR_8 YEAR_9 geometry
## Min. :2012 Min. :2013 Min. :2014 Min. :2015 MULTIPOLYGON :42
## 1st Qu.:2012 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015 epsg:4326 : 0
## Median :2012 Median :2013 Median :2014 Median :2015 +proj=long...: 0
## Mean :2012 Mean :2013 Mean :2014 Mean :2015
## 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
## Max. :2012 Max. :2013 Max. :2014 Max. :2015
## NA's :3 NA's :3 NA's :3 NA's :3
bins <- c(0, 1000, 2000, 3000, 4000, 5000, 6000)
pal <- colorBin("YlGnBu", domain = vall_munic_stat_c$Produccion_12, bins = bins)
mapa_CAFE <- leaflet(data = vall_munic_stat_c) %>%
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 = "orange", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~Produccion_12,
title = "Producción de cafe en Valle [Ton] (2018)",
opacity = 1
)
mapa_CAFE
Repetimos el proceso anterior filtrando los datos por \(Cultivo\) de CAÑA PANELERA:
datosC_P2 <- datos2 %>% filter(CULTIVO == "CAÑA PANELERA")
(datosC_P3 <- datosC_P2 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, Produccion, Rendimiento))
datosC_P3 %>%
gather("YEAR", "Produccion", "Rendimiento" , key = variable, value = number)
datosC_P4 <- datosC_P3 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "Produccion", "Rendimiento", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number)
head(datosC_P4)
tail(datosC_P4)
vall_muniC_P <- vall_munic
vall_munic_stat_C_P <- left_join(vall_muniC_P, datosC_P4, by="MPIO_CCDGO")
summary(vall_munic_stat_C_P)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:42 Length:42 Length:42 Length:42
## 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. : 41.86 Min. :2017 Length:42 Min. :0.4538
## 1st Qu.: 191.01 1st Qu.:2017 Class :character 1st Qu.:0.7223
## Median : 266.71 Median :2017 Mode :character Median :0.9059
## Mean : 492.04 Mean :2017 Mean :1.1602
## 3rd Qu.: 431.81 3rd Qu.:2017 3rd Qu.:1.3207
## Max. :6292.50 Max. :2017 Max. :6.5953
##
## Shape_Area MUNICIPIO Produccion_1 Produccion_10
## Min. :0.003409 Length:42 Min. : 23.0 Min. : 8.0
## 1st Qu.:0.015552 Class :character 1st Qu.: 128.2 1st Qu.: 268.0
## Median :0.021696 Mode :character Median : 404.0 Median : 384.5
## Mean :0.039988 Mean : 792.4 Mean :1216.2
## 3rd Qu.:0.035099 3rd Qu.: 836.2 3rd Qu.:1417.0
## Max. :0.510779 Max. :6869.0 Max. :8320.0
## NA's :4 NA's :8
## Produccion_11 Produccion_12 Produccion_2 Produccion_3
## Min. : 27 Min. : 31 Min. : 21.0 Min. : 0.0
## 1st Qu.: 280 1st Qu.: 280 1st Qu.: 156.8 1st Qu.: 156.8
## Median : 423 Median : 450 Median : 404.0 Median : 454.0
## Mean :1229 Mean :1242 Mean : 900.6 Mean : 963.4
## 3rd Qu.:1474 3rd Qu.:1474 3rd Qu.:1216.2 3rd Qu.:1396.5
## Max. :7395 Max. :7523 Max. :6869.0 Max. :6655.0
## NA's :9 NA's :9 NA's :4 NA's :4
## Produccion_4 Produccion_5 Produccion_6 Produccion_7
## Min. : 18.0 Min. : 25.0 Min. : 9.0 Min. : 16.0
## 1st Qu.: 201.5 1st Qu.: 127.8 1st Qu.: 138.5 1st Qu.: 172.5
## Median : 497.5 Median : 390.0 Median : 500.0 Median : 461.0
## Mean : 984.0 Mean : 972.9 Mean : 955.6 Mean :1231.9
## 3rd Qu.:1166.5 3rd Qu.:1169.5 3rd Qu.:1114.0 3rd Qu.:1185.0
## Max. :6515.0 Max. :8268.0 Max. :8268.0 Max. :8820.0
## NA's :4 NA's :6 NA's :7 NA's :7
## Produccion_8 Produccion_9 Rendimiento_1 Rendimiento_10
## Min. : 23 Min. : 28 Min. :2.160 Min. : 2.500
## 1st Qu.: 288 1st Qu.: 247 1st Qu.:4.050 1st Qu.: 5.000
## Median : 476 Median : 440 Median :5.125 Median : 6.050
## Mean :1212 Mean :1240 Mean :5.032 Mean : 6.126
## 3rd Qu.:1181 3rd Qu.:1368 3rd Qu.:5.827 3rd Qu.: 7.500
## Max. :8820 Max. :8820 Max. :8.110 Max. :10.000
## NA's :7 NA's :7 NA's :4 NA's :8
## Rendimiento_11 Rendimiento_12 Rendimiento_2 Rendimiento_3
## Min. : 3.000 Min. : 3.000 Min. :2.150 Min. :2.270
## 1st Qu.: 5.000 1st Qu.: 5.000 1st Qu.:3.743 1st Qu.:3.600
## Median : 6.500 Median : 6.500 Median :4.935 Median :5.390
## Mean : 6.303 Mean : 6.397 Mean :5.000 Mean :5.068
## 3rd Qu.: 8.000 3rd Qu.: 8.000 3rd Qu.:5.827 3rd Qu.:5.850
## Max. :10.000 Max. :10.000 Max. :8.550 Max. :8.860
## NA's :9 NA's :9 NA's :4 NA's :5
## Rendimiento_4 Rendimiento_5 Rendimiento_6 Rendimiento_7
## Min. :2.000 Min. :2.000 Min. :2.000 Min. : 2.500
## 1st Qu.:4.050 1st Qu.:3.595 1st Qu.:4.000 1st Qu.: 4.000
## Median :5.200 Median :5.000 Median :5.400 Median : 5.500
## Mean :5.307 Mean :5.074 Mean :5.412 Mean : 5.719
## 3rd Qu.:6.247 3rd Qu.:6.175 3rd Qu.:7.000 3rd Qu.: 7.150
## Max. :9.000 Max. :8.030 Max. :9.000 Max. :10.000
## NA's :4 NA's :6 NA's :7 NA's :7
## Rendimiento_8 Rendimiento_9 YEAR_1 YEAR_10 YEAR_11
## Min. : 2.50 Min. : 2.500 Min. :2007 Min. :2016 Min. :2017
## 1st Qu.: 4.25 1st Qu.: 4.000 1st Qu.:2007 1st Qu.:2016 1st Qu.:2017
## Median : 6.00 Median : 5.500 Median :2007 Median :2016 Median :2017
## Mean : 5.88 Mean : 5.658 Mean :2007 Mean :2016 Mean :2017
## 3rd Qu.: 7.25 3rd Qu.: 7.000 3rd Qu.:2007 3rd Qu.:2016 3rd Qu.:2017
## Max. :10.00 Max. :10.000 Max. :2010 Max. :2018 Max. :2017
## NA's :7 NA's :7 NA's :4 NA's :8 NA's :9
## YEAR_12 YEAR_2 YEAR_3 YEAR_4 YEAR_5
## Min. :2018 Min. :2008 Min. :2009 Min. :2010 Min. :2011
## 1st Qu.:2018 1st Qu.:2008 1st Qu.:2009 1st Qu.:2010 1st Qu.:2011
## Median :2018 Median :2008 Median :2009 Median :2010 Median :2011
## Mean :2018 Mean :2008 Mean :2009 Mean :2010 Mean :2011
## 3rd Qu.:2018 3rd Qu.:2008 3rd Qu.:2009 3rd Qu.:2010 3rd Qu.:2011
## Max. :2018 Max. :2011 Max. :2017 Max. :2018 Max. :2013
## NA's :9 NA's :4 NA's :4 NA's :4 NA's :6
## YEAR_6 YEAR_7 YEAR_8 YEAR_9 geometry
## Min. :2012 Min. :2013 Min. :2014 Min. :2015 MULTIPOLYGON :42
## 1st Qu.:2012 1st Qu.:2013 1st Qu.:2014 1st Qu.:2015 epsg:4326 : 0
## Median :2012 Median :2013 Median :2014 Median :2015 +proj=long...: 0
## Mean :2012 Mean :2013 Mean :2014 Mean :2015
## 3rd Qu.:2012 3rd Qu.:2013 3rd Qu.:2014 3rd Qu.:2015
## Max. :2014 Max. :2015 Max. :2016 Max. :2017
## NA's :7 NA's :7 NA's :7 NA's :7
bins <- c(0, 500, 2000, 3000, 4000, 5000, 6000, 7500, 8000)
pal <- colorBin("Spectral", domain = vall_munic_stat_C_P$Produccion_12, bins = bins)
mapa_C_P <- leaflet(data = vall_munic_stat_C_P) %>%
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 = "tomato", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~Produccion_12,
title = "Produccion de Caña Panelera en Valle [Ton] (2018)",
opacity = 1
)
mapa_C_P