1. Introducción.

Se ilustrara cómo obtener estadísticas multianuales para el cultivo de cafe en el departamento de Huila. Utilizaremos como fuente principal de datos las Evaluaciones Agropecuarias Municipales (EVA), un conjunto de datos agrícolas de 2007-2018 proporcionado por el Ministerio de Agricultura y Desarrollo Rural.

2. Configuración.

En este paso, instalaremos y cargaremos las bibliotecas R necesarias.

# Ejecute las siguientes líneas desde la consola decomando:
#install.packages('dplyr')
#install.packages('readxl')
#install.packages('sf')
#install.packages ('tidyverse')
library(dplyr)
library(readr)
library(ggplot2)
library(tidyverse) 
library(sf)

3. Descargamos el conjunto de datos EVA de varios años para el Departamento de Huila.

Ingrese a https://www.datos.gov.co/Agricultura-y-Desarrollo-Rural/Evaluaciones-Agropecuarias-Municipales-EVA/2pnw-mmge/data para encontrar el conjunto de datos.

En el sitio web vinculado (es decir datos.gov.co), visualiza los datos y aplica un filtro para obtener solo los datos correspondientes a Huila. Luego, se exportaron los datos en formato exel.csv.

Ahora, dirígete al directorio de descargas para encontrar el archivo Evaluaciones_Agropecuarias_Municipales_EVA.csv. Muévalo a su directorio de trabajo.

list.files()
##  [1] "Cuaderno-EVA.html"                                 
##  [2] "Cuaderno-EVA.Rmd"                                  
##  [3] "Cuaderno-para-enviar--EVA.html"                    
##  [4] "Cuaderno-para-enviar--EVA_files"                   
##  [5] "Cuaderno EVA.nb.html"                              
##  [6] "Cuaderno EVA.Rmd"                                  
##  [7] "Cuaderno para enviar  EVA.Rmd"                     
##  [8] "EVA_HUILA.csv"                                     
##  [9] "Evaluaciones_Agropecuarias_Municipales_EVA (1).csv"
## [10] "Evaluaciones_Agropecuarias_Municipales_EVA01.csv"  
## [11] "Evaluacionesexcel.csv"
(eva = read.csv("./Evaluaciones_Agropecuarias_Municipales_EVA (1).csv"))

Vea la tabla y confirme que contenga estadísticas agrícolas para diferentes años. ¿Puedes decir cuál es el período de tiempo para estos datos?

Es muy importante saber cuáles son los nombres que “ve” el software. Puede ser diferente de lo que vemos. Averigüemoslo:

names(eva)
##  [1] "CÓD...DEP."                                   
##  [2] "DEPARTAMENTO"                                 
##  [3] "CÓD..MUN."                                    
##  [4] "MUNICIPIO"                                    
##  [5] "GRUPO..DE.CULTIVO"                            
##  [6] "SUBGRUPO..DE.CULTIVO"                         
##  [7] "CULTIVO"                                      
##  [8] "DESAGREGACIÓN.REGIONAL.Y.O.SISTEMA.PRODUCTIVO"
##  [9] "AÑO"                                          
## [10] "PERIODO"                                      
## [11] "Área.Sembrada..ha."                           
## [12] "Área.Cosechada..ha."                          
## [13] "Producción..t."                               
## [14] "Rendimiento..t.ha."                           
## [15] "ESTADO.FISICO.PRODUCCION"                     
## [16] "NOMBRE..CIENTIFICO"                           
## [17] "CICLO.DE.CULTIVO"

5. Limpiar el conjunto de datos de EVA.

Seleccionemos algunos atributos para limpiar el objeto eva:

# comprobar la salida del objeto en el último fragmento y
# cambiar los nombres de los atributos según sus propios datos
eva %>% 
  dplyr::select('CÓD..MUN.':'ESTADO.FISICO.PRODUCCION') -> eva.tmp
eva.tmp

Verifique el resultado y verifique que solo se hayan seleccionado las columnas relevantes. Ahora, cambie los nombres de varias columnas que contengan caracteres vacíos o “ruidosos”:

#Asegurese de usar los nombres de las columnas en su objeto eva.tmp
eva.tmp %>%  dplyr::rename('Cod_Mun' = 'CÓD..MUN.', 
                         'Grupo' = 'GRUPO..DE.CULTIVO',
                         'Subgrupo' = 'SUBGRUPO..DE.CULTIVO', 
                         'Year' = 'AÑO',
                         'AreaSembrada' = 'Área.Sembrada..ha.',
                         'AreaCosechada' = 'Área.Cosechada..ha.',
                         'Produccion' = 'Producción..t.',                                                                 'Rendimiento' =  'Rendimiento..t.ha.',   
                         'Sistema' = 'DESAGREGACIÓN.REGIONAL.Y.O.SISTEMA.PRODUCTIVO',
                         'Estado' = 'ESTADO.FISICO.PRODUCCION') -> new_eva

Verificamos el nuevo resltado:

new_eva

Consulte la tabla anterior y verifique que los atributos cuantitativos se almacenen como tipos de datos numéricos (no como tipos de datos de cadena).

6.Análisis de los datos

Muchas tareas de análisis de datos se pueden abordar utilizando el paradigma dividir-aplicar-combinar (split-apply-combine ) : dividir los datos en grupos, aplicar algún análisis a cada grupo y luego combinar los resultados.

La biblioteca dplyr hace que esto sea muy fácil mediante el uso de la función group_by(), que divide los datos en grupos. Cuando los datos se agrupan de esta manera, se puede utilizar resume() para colapsar cada grupo en un resumen de una sola fila. resume() hace esto aplicando una función de agregación o resumen a cada grupo.

6.1. Los cultivos más importantes entre 2007 y 2018

Por ejemplo, si queremos saber la producción total por grupo de cultivos, tecleamos:

new_eva %>%
  ##filtrar(Produccion > 0) %>%
  group_by(Grupo) %>%
  summarize(total_produccion = sum(Produccion)) %>% 
  arrange(desc(total_produccion)) 

Nótese que la producción total contiene la suma de la producción de cada grupo de cultivos entre 2007 y 2018. En Huila, los dos cultivos de mayor producción fueron “CEREALES” y “OTROS PERMANENTES”.

Para guardar la producción total en un objeto:

new_eva %>%
  group_by(Grupo) %>%
  summarize(total_produccion = sum(Produccion)) -> PT 

Para filtrar los cultivos más importantes:

PT %>% 
  filter(total_produccion > 1000000) -> main.groups

Para conocer la producción total de los principales grupos de cultivos:

(value = sum(main.groups$total_produccion))
## [1] 8685540

Para agregar un nuevo atributo con porcentaje de la producción total:

main.groups$percent = main.groups$total_produccion/value

Para crear un gráfico circular(gráfico de pastel) de la producción total de los grupos principales:

library(ggplot2)
# diagrama de barras
bp<- ggplot(main.groups, aes(x="", y=percent, fill=Grupo))+
geom_bar(width = 1, stat = "identity")
# Gráfico circular
pie <- bp + coord_polar("y", start=0)
pie

6.2.Municipios con mayor producción para cada grupo de cultivos:

Para conocer los municipios que lideraron la producción de cada cultivo de 2007 a 2018:

new_eva %>%
  group_by(Grupo, MUNICIPIO) %>%
  summarize(total_prod = sum(Produccion, na.rm = TRUE)) %>%
  slice(which.max(total_prod))  %>%
  arrange(desc(total_prod))
## `summarise()` has grouped output by 'Grupo'. You can override using the
## `.groups` argument.

Para guardar el objeto:

new_eva %>%
  group_by(Grupo, MUNICIPIO) %>%
  summarize(total_prod = sum(Produccion, na.rm = TRUE)) %>%
  slice(which.max(total_prod))  -> leaders
## `summarise()` has grouped output by 'Grupo'. You can override using the
## `.groups` argument.
leaders

Para filtrar los municipios más importantes desde el punto de vista agrícola:

leaders %>% 
  filter(total_prod > 50000) -> main.leaders

Dibujemos a las líderes filtradas:

# Basic barplot
p<-ggplot(data=main.leaders, aes(x=MUNICIPIO, y=total_prod)) +
  geom_bar(stat="identity")
p

## 6.3. Dinámica del cultivo de cafe entre 2007 y 2018

new_eva %>% 
  filter(MUNICIPIO=="CAMPOALEGRE" & CULTIVO=="CAFE") %>% 
  group_by(Year, CULTIVO) %>%
  select(MUNICIPIO, CULTIVO, Produccion, Year) ->  CAM_ALE_CAF
CAM_ALE_CAF

Hagamos un gráfico rápido de la producción de Cafe en el municipio de Campoalegre durante todo el periodo cubierto por el conjunto de datos EVA (2007-2018):

g <- ggplot(aes(x=Year, y=Produccion/1000), data = CAM_ALE_CAF) + geom_bar(stat='identity') + labs(y='Produccion de cafe [Ton x 1000]')

Añadimos un título y visualizamos:

g + ggtitle("Evolucion del cultivo de Cafe en Campoalegre Huila desde el año 2007 al 2018") + labs(caption= "Based on EVA data (Minagricultura, 2020)")

7. Otros análisis y gráficos

Se han iluistrado algunos ejemplos de análisis. Podrías analizar otras variables además de la producción (por ejemplo, rendimiento, areacosechada, areasembrada).

En este cuaderno encontrarás más ejemplos de análisis.https://rpubs.com/ials2un/EVA4Boyaca

7. Bibliografia

D.Triana, D., 2023. ESTADISTICAS AGROPECUARIAS DEL HUELA. Disponible en https://rpubs.com/alejandrotrian

sessionInfo()
## R version 4.3.1 (2023-06-16 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
## 
## Matrix products: default
## 
## 
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8  LC_CTYPE=Spanish_Colombia.utf8   
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C                     
## [5] LC_TIME=Spanish_Colombia.utf8    
## 
## time zone: America/Bogota
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] sf_1.0-14       lubridate_1.9.2 forcats_1.0.0   stringr_1.5.0  
##  [5] purrr_1.0.2     tidyr_1.3.0     tibble_3.2.1    tidyverse_2.0.0
##  [9] ggplot2_3.4.3   readr_2.1.4     dplyr_1.1.3    
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.7         utf8_1.2.3         generics_0.1.3     class_7.3-22      
##  [5] KernSmooth_2.23-21 stringi_1.7.12     hms_1.1.3          digest_0.6.33     
##  [9] magrittr_2.0.3     evaluate_0.21      grid_4.3.1         timechange_0.2.0  
## [13] fastmap_1.1.1      jsonlite_1.8.7     e1071_1.7-13       DBI_1.1.3         
## [17] fansi_1.0.4        scales_1.2.1       jquerylib_0.1.4    cli_3.6.1         
## [21] rlang_1.1.1        units_0.8-4        munsell_0.5.0      withr_2.5.0       
## [25] cachem_1.0.8       yaml_2.3.7         tools_4.3.1        tzdb_0.4.0        
## [29] colorspace_2.1-0   vctrs_0.6.3        R6_2.5.1           proxy_0.4-27      
## [33] lifecycle_1.0.3    classInt_0.4-10    pkgconfig_2.0.3    pillar_1.9.0      
## [37] bslib_0.5.1        gtable_0.3.4       glue_1.6.2         Rcpp_1.0.11       
## [41] xfun_0.40          tidyselect_1.2.0   rstudioapi_0.15.0  knitr_1.44        
## [45] farver_2.1.1       htmltools_0.5.6    labeling_0.4.3     rmarkdown_2.25    
## [49] compiler_4.3.1