Dinámica de producción de cultivos en el Guaviare

Introducción

El objetivo del presente cuaderno es mostrar como obtener estadísticas de años multiples para un grupo de cultivo dado en el departamento del Guaviare. Cabe recordar que se utilizará como fuente principal las evaluciones agropecuarias municipales (EVA), teniendo en cuenta datos en el rango 2007-2018.

Configuración

En esta sección escribimos código para cargar todas las librerias que necesitaremos

library(tidyverse)
library(dplyr)
library(readr)
library(ggplot2)

Descarga y lectura de los datos agropecuarios por año para el departamento

Leeremos a continuación los datos presentes en el presentes en el portafolio de trabajo del cuaderno

list.files("F:\\GBI\\GB2\\Ejerciciosr\\Cuaderno3", pattern=c('csv'))
## [1] "EVAG.csv"

Ahora, asignameros un objeto a los datos que se leeran para el departamento

(evag<-read_csv("F:\\GBI\\GB2\\Ejerciciosr\\Cuaderno3\\EVAG.csv", col_names = TRUE, show_col_types = FALSE))
## # A tibble: 487 × 17
##    CÓD. …¹ DEPAR…² CÓD. …³ MUNIC…⁴ GRUPO…⁵ SUBGR…⁶ CULTIVO DESAG…⁷   AÑO PERIODO
##      <dbl> <chr>     <dbl> <chr>   <chr>   <chr>   <chr>   <chr>   <dbl> <chr>  
##  1      95 GUAVIA…   95001 SAN JO… HORTAL… AHUYAMA AHUYAMA AHUYAMA  2009 2009B  
##  2      95 GUAVIA…   95200 MIRAFL… OLEAGI… AJONJO… AJONJO… AJONJO…  2009 2009A  
##  3      95 GUAVIA…   95200 MIRAFL… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008   
##  4      95 GUAVIA…   95001 SAN JO… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008   
##  5      95 GUAVIA…   95025 EL RET… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008   
##  6      95 GUAVIA…   95200 MIRAFL… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009   
##  7      95 GUAVIA…   95001 SAN JO… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009   
##  8      95 GUAVIA…   95025 EL RET… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009   
##  9      95 GUAVIA…   95200 MIRAFL… CEREAL… ARROZ   ARROZ   ARROZ …  2006 2006B  
## 10      95 GUAVIA…   95200 MIRAFL… CEREAL… ARROZ   ARROZ   ARROZ …  2007 2007A  
## # … with 477 more rows, 7 more variables: `Área Sembrada\n(ha)` <dbl>,
## #   `Área Cosechada\n(ha)` <dbl>, `Producción\n(t)` <dbl>,
## #   `Rendimiento\n(t/ha)` <dbl>, `ESTADO FISICO PRODUCCION` <chr>,
## #   `NOMBRE \nCIENTIFICO` <chr>, `CICLO DE CULTIVO` <chr>, and abbreviated
## #   variable names ¹​`CÓD. \nDEP.`, ²​DEPARTAMENTO, ³​`CÓD. MUN.`, ⁴​MUNICIPIO,
## #   ⁵​`GRUPO \nDE CULTIVO`, ⁶​`SUBGRUPO \nDE CULTIVO`,
## #   ⁷​`DESAGREGACIÓN REGIONAL Y/O SISTEMA PRODUCTIVO`

Para confirmar el nombre que R “ve” podemos confirmar por medio de la siguiente función

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

“Limpieza” de la base de datos

Llevaremos a cabo una primera selección

(evag%>%dplyr::select('CÓD. MUN.':'ESTADO FISICO PRODUCCION')->eva.tmp)
## # A tibble: 487 × 13
##    CÓD. …¹ MUNIC…² GRUPO…³ SUBGR…⁴ CULTIVO DESAG…⁵   AÑO PERIODO Área …⁶ Área …⁷
##      <dbl> <chr>   <chr>   <chr>   <chr>   <chr>   <dbl> <chr>     <dbl>   <dbl>
##  1   95001 SAN JO… HORTAL… AHUYAMA AHUYAMA AHUYAMA  2009 2009B        20      20
##  2   95200 MIRAFL… OLEAGI… AJONJO… AJONJO… AJONJO…  2009 2009A        30      30
##  3   95200 MIRAFL… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008        122      75
##  4   95001 SAN JO… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008         66      66
##  5   95025 EL RET… FRUTAL… FRUTAL… ARAZA   ARAZA    2008 2008         30       0
##  6   95200 MIRAFL… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009        122      75
##  7   95001 SAN JO… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009         66      66
##  8   95025 EL RET… FRUTAL… FRUTAL… ARAZA   ARAZA    2009 2009         30       0
##  9   95200 MIRAFL… CEREAL… ARROZ   ARROZ   ARROZ …  2006 2006B        10      10
## 10   95200 MIRAFL… CEREAL… ARROZ   ARROZ   ARROZ …  2007 2007A        25      25
## # … with 477 more rows, 3 more variables: `Producción\n(t)` <dbl>,
## #   `Rendimiento\n(t/ha)` <dbl>, `ESTADO FISICO PRODUCCION` <chr>, and
## #   abbreviated variable names ¹​`CÓD. MUN.`, ²​MUNICIPIO, ³​`GRUPO \nDE CULTIVO`,
## #   ⁴​`SUBGRUPO \nDE CULTIVO`, ⁵​`DESAGREGACIÓN REGIONAL Y/O SISTEMA PRODUCTIVO`,
## #   ⁶​`Área Sembrada\n(ha)`, ⁷​`Área Cosechada\n(ha)`

Ahora cambiaremos los nombres de la tabla anterior, de esta manera facilitamos la manipulación de los datos

eva.tmp%>%dplyr::rename('cod_mun'='CÓD. MUN.',
                        'grupo'='GRUPO \nDE CULTIVO',
                        'subgrupo'='SUBGRUPO \nDE CULTIVO',
                        'year'='AÑO',
                        'area_sembrada'='Área Sembrada\n(ha)',
                        'area_cosechada'='Área Cosechada\n(ha)',
                        'produccion'='Producción\n(t)',
                        'rendimiento'='Rendimiento\n(t/ha)',
                        'sistema'='DESAGREGACIÓN REGIONAL Y/O SISTEMA PRODUCTIVO',
                        'estado'='ESTADO FISICO PRODUCCION')->new_evag
new_evag
## # A tibble: 487 × 13
##    cod_mun MUNICIPIO grupo subgr…¹ CULTIVO sistema  year PERIODO area_…² area_…³
##      <dbl> <chr>     <chr> <chr>   <chr>   <chr>   <dbl> <chr>     <dbl>   <dbl>
##  1   95001 SAN JOSE… HORT… AHUYAMA AHUYAMA AHUYAMA  2009 2009B        20      20
##  2   95200 MIRAFLOR… OLEA… AJONJO… AJONJO… AJONJO…  2009 2009A        30      30
##  3   95200 MIRAFLOR… FRUT… FRUTAL… ARAZA   ARAZA    2008 2008        122      75
##  4   95001 SAN JOSE… FRUT… FRUTAL… ARAZA   ARAZA    2008 2008         66      66
##  5   95025 EL RETOR… FRUT… FRUTAL… ARAZA   ARAZA    2008 2008         30       0
##  6   95200 MIRAFLOR… FRUT… FRUTAL… ARAZA   ARAZA    2009 2009        122      75
##  7   95001 SAN JOSE… FRUT… FRUTAL… ARAZA   ARAZA    2009 2009         66      66
##  8   95025 EL RETOR… FRUT… FRUTAL… ARAZA   ARAZA    2009 2009         30       0
##  9   95200 MIRAFLOR… CERE… ARROZ   ARROZ   ARROZ …  2006 2006B        10      10
## 10   95200 MIRAFLOR… CERE… ARROZ   ARROZ   ARROZ …  2007 2007A        25      25
## # … with 477 more rows, 3 more variables: produccion <dbl>, rendimiento <dbl>,
## #   estado <chr>, and abbreviated variable names ¹​subgrupo, ²​area_sembrada,
## #   ³​area_cosechada

Análisis de datos

Se utilizara nuevamente la función group_by, que nos permite análizar los datos por medio de la metodología separar, aplicar y combinar.

Cultivos más importantes entre el añor 2007 y 2018

Primero, queremos conocer el total de producción para cada grupo de cultivos

new_evag%>%
  filter(produccion>0)%>%
  group_by(grupo)%>%
  summarize(total_produccion=sum(produccion))%>%
  arrange(desc(total_produccion))
## # A tibble: 9 × 2
##   grupo                 total_produccion
##   <chr>                            <dbl>
## 1 TUBERCULOS Y PLATANOS           565862
## 2 CEREALES                        201774
## 3 FRUTALES                         52196
## 4 OTROS PERMANENTES                30113
## 5 FORESTALES                        5045
## 6 HORTALIZAS                         308
## 7 LEGUMINOSAS                        250
## 8 FLORES Y FOLLAJES                   11
## 9 OLEAGINOSAS                          6

Nota:La producción total contiene la suma de la producción para cada grupo de cultivo entre el año 2007 y 2018. Particularmente observamos que los grupos más significativos para el Guaviare fueron los tubérculos y plátanos junto con los cereales.

El resultado de la producción total se puede guardar en un objeto

new_evag%>%
  group_by(grupo)%>%
  summarize(total_produccion=sum(produccion))->PT

Ahora para filtrar los cultivos más importantes

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

Para conocer la producción total para los grupos principales

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

Ahora, para añadir un nuevo atributo con el porcentaje de la producción total

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

Con la información anteriormente obtenida, se puede crear un diagrama de torta

#Barplot
bp<-ggplot(main.groups,aes(x="",y=percent,fill=grupo))+
  geom_bar(width = 1,stat = "identity")

#Piechart

pie<-bp+coord_polar("y",start = 0)
pie

Municipios con mayor participación en la producción para cada grupo de cultivo

new_evag%>%
  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.
## # A tibble: 9 × 3
## # Groups:   grupo [9]
##   grupo                 MUNICIPIO             total_prod
##   <chr>                 <chr>                      <dbl>
## 1 TUBERCULOS Y PLATANOS SAN JOSE DEL GUAVIARE     235890
## 2 CEREALES              SAN JOSE DEL GUAVIARE      98837
## 3 FRUTALES              EL RETORNO                 22094
## 4 OTROS PERMANENTES     EL RETORNO                 11455
## 5 FORESTALES            EL RETORNO                  2569
## 6 HORTALIZAS            SAN JOSE DEL GUAVIARE        200
## 7 LEGUMINOSAS           MIRAFLORES                   150
## 8 FLORES Y FOLLAJES     SAN JOSE DEL GUAVIARE         11
## 9 OLEAGINOSAS           MIRAFLORES                     6

Para guardar el objeto anterior

new_evag%>%
  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
## # A tibble: 9 × 3
## # Groups:   grupo [9]
##   grupo                 MUNICIPIO             total_prod
##   <chr>                 <chr>                      <dbl>
## 1 CEREALES              SAN JOSE DEL GUAVIARE      98837
## 2 FLORES Y FOLLAJES     SAN JOSE DEL GUAVIARE         11
## 3 FORESTALES            EL RETORNO                  2569
## 4 FRUTALES              EL RETORNO                 22094
## 5 HORTALIZAS            SAN JOSE DEL GUAVIARE        200
## 6 LEGUMINOSAS           MIRAFLORES                   150
## 7 OLEAGINOSAS           MIRAFLORES                     6
## 8 OTROS PERMANENTES     EL RETORNO                 11455
## 9 TUBERCULOS Y PLATANOS SAN JOSE DEL GUAVIARE     235890

Para filtrar los municipios que tienen mayor representación en la producción con respecto a un grupo de cultivo

leaders%>%
  filter(total_prod>10000)->main.leaders
main.leaders
## # A tibble: 4 × 3
## # Groups:   grupo [4]
##   grupo                 MUNICIPIO             total_prod
##   <chr>                 <chr>                      <dbl>
## 1 CEREALES              SAN JOSE DEL GUAVIARE      98837
## 2 FRUTALES              EL RETORNO                 22094
## 3 OTROS PERMANENTES     EL RETORNO                 11455
## 4 TUBERCULOS Y PLATANOS SAN JOSE DEL GUAVIARE     235890

Ahora se puede hacer un gráfico de barras para la información anterior

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

Dinámicas de un cultivo importante entre el año 2007 y 2018

Seleccionamos un municipio y le asociamos un cultivo en específico, para así saber cual es su comportamiento a través del rango de años en cuestión. Particularmente, queremos conocer el comportamiento de la producción de plátano en El retorno

new_evag%>%
  filter(MUNICIPIO=="EL RETORNO" & CULTIVO=="PLATANO")%>%
  group_by(year,CULTIVO)%>%
  select(MUNICIPIO,CULTIVO,produccion,year)->retorno_platano
retorno_platano
## # A tibble: 12 × 4
## # Groups:   year, CULTIVO [12]
##    MUNICIPIO  CULTIVO produccion  year
##    <chr>      <chr>        <dbl> <dbl>
##  1 EL RETORNO PLATANO       6606  2007
##  2 EL RETORNO PLATANO       3200  2008
##  3 EL RETORNO PLATANO       3200  2009
##  4 EL RETORNO PLATANO       6000  2010
##  5 EL RETORNO PLATANO       4500  2011
##  6 EL RETORNO PLATANO       2304  2012
##  7 EL RETORNO PLATANO       3647  2013
##  8 EL RETORNO PLATANO       4725  2014
##  9 EL RETORNO PLATANO       6678  2015
## 10 EL RETORNO PLATANO       7680  2016
## 11 EL RETORNO PLATANO       6528  2017
## 12 EL RETORNO PLATANO      23688  2018

Ahora, podemos visualizar lo anterior a través de un gráfico

erp<-ggplot(aes(x=year, y=produccion/1000),data=retorno_platano)+geom_bar(stat = 'identity')+labs(y='Producción de plátano [Ton x 1000]')

Añadimos un título y visualizamos

erp+ggtitle("Evolución de la producción del cultivo de plátano en El retorno desde 
            el año 2007 hasta el 2018") + labs(caption = "Con base en datos EVA (Minagricultura 2022)")

Bibliografía

Lizarazo, I., 2022. Understanding dynamic productivity of crops. Available at https://rpubs.com/ials2un/production_dyn_v1.

sessionInfo()
## R version 4.2.2 (2022-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 22621)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_United States.utf8 
## [2] LC_CTYPE=English_United States.utf8   
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.utf8    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] lubridate_1.9.2 forcats_1.0.0   stringr_1.5.0   dplyr_1.1.0    
##  [5] purrr_1.0.1     readr_2.1.4     tidyr_1.3.0     tibble_3.1.8   
##  [9] ggplot2_3.4.1   tidyverse_2.0.0
## 
## loaded via a namespace (and not attached):
##  [1] highr_0.10       bslib_0.4.2      compiler_4.2.2   pillar_1.8.1    
##  [5] jquerylib_0.1.4  tools_4.2.2      bit_4.0.5        digest_0.6.31   
##  [9] timechange_0.2.0 jsonlite_1.8.4   evaluate_0.20    lifecycle_1.0.3 
## [13] gtable_0.3.1     pkgconfig_2.0.3  rlang_1.0.6      cli_3.6.0       
## [17] rstudioapi_0.14  parallel_4.2.2   yaml_2.3.7       xfun_0.37       
## [21] fastmap_1.1.1    withr_2.5.0      knitr_1.42       hms_1.1.2       
## [25] generics_0.1.3   vctrs_0.5.2      sass_0.4.5       bit64_4.0.5     
## [29] grid_4.2.2       tidyselect_1.2.0 glue_1.6.2       R6_2.5.1        
## [33] fansi_1.0.4      vroom_1.6.1      rmarkdown_2.20   farver_2.1.1    
## [37] tzdb_0.3.0       magrittr_2.0.3   ellipsis_0.3.2   scales_1.2.1    
## [41] htmltools_0.5.4  colorspace_2.1-0 labeling_0.4.2   utf8_1.2.3      
## [45] stringi_1.7.12   munsell_0.5.0    cachem_1.0.7     crayon_1.5.2