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.
En esta sección escribimos código para cargar todas las librerias que necesitaremos
library(tidyverse)
library(dplyr)
library(readr)
library(ggplot2)
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"
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
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.
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
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
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)")
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