Introducción

Este es un cuaderno muy simple que ilustra cómo subconjuntar los datos estadísticos agrícolas de EVA 2019-2022 proporcionados por UPRA en https://upra.gov.co/es-co/Evas_Documentos/BaseEVA_Agr%C3%ADcola20192022.xlsx.

Su objetivo es ayudar a los estudiantes de Geomatica Basica de la UNAL a adquirir habilidades digitales en R.

Requisitos previos

Se supone que ya ha descargado el archivo xlsx mencionado anteriormente y lo ha guardado en el mismo directorio donde se encuentra este cuaderno.

Al abrirlo en Excel, las primeras filas del archivo BaseEVA_Agricola20192022.xlsx tienen este aspecto:

Luego, debes limpiar el archivo original para eliminar los encabezados y renombrar las columnas para poder leerlo desde R. No debe haber espacios en blanco ni caracteres extraños en ningún nombre de columna.

Configuración

Limpiar la memoria temporal:

rm(list=ls())

Cargar las bibliotecas 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

Lea el conjunto de datos EVA 2019-2022

Vamos a comprobar los nombres de los archivos que se encuentran en el mismo directorio que este cuaderno:

list.files()
## [1] "datos"                   "EVA_19_25.xlsx"         
## [3] "proyecto_8.nb.html"      "proyecto_8.Rmd"         
## [5] "stder_frutales_2025.csv"

En este caso, el archivo corregido es EVA_19_22.xlsx. Como se trata de un archivo de Excel, conviene saber cuántas hojas contiene:

hojas <- excel_sheets("EVA_19_25.xlsx")

Vamos a ver:

hojas
## [1] "Data"

Hay una sola hoja ahí. Leámosla:

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

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

Subconjunto de datos para su departamento

Como solo nos interesa un departamento, necesitamos filtrar EVA19_22:

(stder19_25 = dplyr::filter(EVA19_25, Departamento == "Meta"))

Ahora, seleccionaremos únicamente los datos correspondientes a 2025:

(stder_25 = dplyr::filter(stder19_25, Año == 2025))

Seleccione un subconjunto del grupo de cultivos que está analizando.

Ahora, seleccionemos únicamente el grupo de cultivos que nos interesa y resumamos la producción por municipio:

stder_25 %>%
  group_by(COD_MUN, Mun, Grupo_cultivo) %>%
  filter(Grupo_cultivo=='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, Mun, and Grupo_cultivo.
## ℹ Output is grouped by COD_MUN and Mun.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(COD_MUN, Mun, Grupo_cultivo))` for per-operation
##   grouping (`?dplyr::dplyr_by`) instead.
frutales2025

Escribe los datos

Utilizaremos la biblioteca readr para guardar nuestros datos en formato CSV:

write_csv(frutales2025, "stder_frutales_2025.csv")

Vamos a comprobar que el archivo se ha creado:

list.files()
## [1] "datos"                   "EVA_19_25.xlsx"         
## [3] "proyecto_8.nb.html"      "proyecto_8.Rmd"         
## [5] "stder_frutales_2025.csv"

Vamos a leer el archivo para comprobar que los datos son correctos:

los_datos25 <- read_csv("stder_frutales_2025.csv")
## Rows: 29 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Mun, Grupo_cultivo
## 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

Tenga en cuenta que la columna COD_MUN ahora es de tipo double (es decir, numérico). Este no es el tipo de datos común para los identificadores. En caso de que necesitemos cambiar dicho tipo de datos, 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 2025 con los polígonos que representan a los municipios de nuestro departamento.

# Referencia Si utiliza código de este cuaderno en su proyecto, cítelo de la siguiente manera: Lizarazo, I. 2023. Cómo leer y subconjuntar datos estadísticos agrícolas en formato .xlsx. Disponible en 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_Spain.utf8  LC_CTYPE=Spanish_Spain.utf8   
## [3] LC_MONETARY=Spanish_Spain.utf8 LC_NUMERIC=C                  
## [5] LC_TIME=Spanish_Spain.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.61         generics_0.1.4    jsonlite_2.0.0   
##  [9] bit_4.6.0         glue_1.8.1        htmltools_0.5.9   sass_0.4.10      
## [13] hms_1.1.4         rmarkdown_2.32    cellranger_1.1.0  evaluate_1.0.5   
## [17] jquerylib_0.1.4   tibble_3.3.1      tzdb_0.5.0        fastmap_1.2.0    
## [21] yaml_2.3.12       lifecycle_1.0.5   compiler_4.6.1    pkgconfig_2.0.3  
## [25] rstudioapi_0.19.0 digest_0.6.39     R6_2.6.1          tidyselect_1.2.1 
## [29] parallel_4.6.1    vroom_1.7.1       pillar_1.11.1     magrittr_2.0.5   
## [33] bslib_0.12.0      bit64_4.8.6       tools_4.6.1       cachem_1.1.0