Introduccion

Este es un cuaderno muy sencillo que muestra cómo subconfigurar los datos estadísticos agrícolas de EVA 2019-2025 proporcionados por UPRA en https://upra.gov.co/es-co/eva/eva-2025#agricola

Tiene como objetivo ayudar a los estudiantes de Geomática Básica en la UNAL a adquirir habilidades digitales en R.

Requisitos previos

Se asume que ya has descargado el archivo xlsx mencionado arriba y lo has guardado en el mismo directorio donde se encuentra este cuaderno.

Al abrirlo en Excel, las primeras filas del archivo BaseEVA_Agricola20192022.xlsx se ven así:

.
.

Luego, necesitas podar el archivo original para eliminar los banners y también para renombrar las columnas para poder leerlo desde R. No debería haber espacios en blanco ni caracteres extraños en ningún nombre de columna.

Configuración

Limpia la memoria temporal:

rm(list=ls())

Carga las librerias de R

library(readxl)
library(readr)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Lee el conjunto de datos EVA 2019-2025

Vamos a revisar los nombres de los archivos que están en el mismo directorio que este cuaderno:

list.files()
## [1] "20260526_BaseAgricola20192025.xlsx" "EVA_19_25.xlsx"                    
## [3] "guaviare_frutales_2025.csv"         "image.png"                         
## [5] "proyectEVA.nb.html"                 "proyectEVA.Rmd"

En este caso, el archivo corregido es EVA_19_22.xlsx.
Como se trata de un archivo de Excel, vale la pena saber cuántas hojas hay:

hojas <- excel_sheets("EVA_19_25.xlsx")

Veamos:

hojas
## [1] "Datos"

Hay una sola hoja allí. Vamos a leerla:

EVA19_25 <- read_excel("EVA_19_25.xlsx")
EVA19_25

Ten en cuenta que la columna COD_MUN es un carácter. Este es el tipo de dato común para identificadores.

Selecciona datos para tu departamento

Como solo nos interesa un departamento, necesitamos filtrar EVA19_25:

(guaviare19_25 = dplyr::filter(EVA19_25, DPTO == "Guaviare"))

Ahora, seleccionaremos solo los datos de 2025:

(guaviare_25 = dplyr::filter(guaviare19_25, YEAR == 2025))

Selecciona un subconjunto del grupo de cultivos que estás analizando.

Ahora, vamos a seleccionar solo el grupo de cultivos que nos interesa y resumir la producción por municipio:

guaviare_25 %>%
  group_by(COD_MUN, MUNICIPIO, GRUPO) %>%
  filter(GRUPO=='Frutales') %>% 
  summarize(max_prod = max(PRODUCCION, na.rm = TRUE)) %>%
  arrange(desc(max_prod)) -> frutales2025
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by COD_MUN, MUNICIPIO, and GRUPO.
## ℹ Output is grouped by COD_MUN and MUNICIPIO.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(COD_MUN, MUNICIPIO, GRUPO))` for per-operation
##   grouping (`?dplyr::dplyr_by`) instead.
frutales2025

Escribe los datos

Usaremos la biblioteca readr para guardar nuestros datos en formato csv:

write_csv(frutales2025, "guaviare_frutales_2025.csv")

Vamos a comprobar que se ha creado el archivo:

list.files()
## [1] "20260526_BaseAgricola20192025.xlsx" "EVA_19_25.xlsx"                    
## [3] "guaviare_frutales_2025.csv"         "image.png"                         
## [5] "proyectEVA.nb.html"                 "proyectEVA.Rmd"

Leamos el archivo para comprobar que los datos son correctos:

los_datos25 <- read_csv("guaviare_frutales_2025.csv")
## Rows: 4 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): MUNICIPIO, GRUPO
## dbl (2): COD_MUN, max_prod
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
los_datos25

Ten en cuenta que la columna COD_MUN ahora es un número decimal (es decir, numérico). Este no es el tipo de dato común para identificadores.

En caso de que necesitemos cambiar ese tipo de dato, podemos usar mutate:

los_datos25 %>% mutate(COD_MUN = as.character(COD_MUN)) -> nuevos_datos25
head(nuevos_datos25)

¡Bien hecho! Ahora, puedes proceder a crear el cuaderno donde uniremos los datos de producción de 2022 con los polígonos que representan a los municipios en nuestro departamento.

Referencia

Lizarazo, I. 2023. How to read and subset .xlsx agricultural statistics data. Available at https://rpubs.com/otra_vez_eva

Reproducibilidad

sessionInfo()
## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## 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] dplyr_1.2.1  readr_2.2.0  readxl_1.6.0
## 
## loaded via a namespace (and not attached):
##  [1] crayon_1.5.3      vctrs_0.7.3       cli_3.6.6         knitr_1.52       
##  [5] rlang_1.3.0       xfun_0.62         otel_0.2.0        generics_0.1.4   
##  [9] jsonlite_2.0.0    bit_4.6.0         glue_1.8.1        htmltools_0.5.9  
## [13] sass_0.4.10       hms_1.1.4         rmarkdown_2.32    cellranger_1.1.0 
## [17] evaluate_1.0.5    jquerylib_0.1.4   tibble_3.3.1      tzdb_0.5.0       
## [21] fastmap_1.2.0     yaml_2.3.12       lifecycle_1.0.5   compiler_4.6.1   
## [25] pkgconfig_2.0.3   rstudioapi_0.19.0 digest_0.6.39     R6_2.6.1         
## [29] tidyselect_1.2.1  parallel_4.6.1    vroom_1.7.1       pillar_1.11.1    
## [33] magrittr_2.0.5    bslib_0.12.0      bit64_4.8.6       tools_4.6.1      
## [37] cachem_1.1.0