Este es un cuaderno muy sencillo que muestra cómo extraer un subconjunto de los datos de las estadísticas agrícolas de EVA 2019-2022 proporcionados por la UPRA.
El objetivo es ayudar a los estudiantes de geomatica basica de la UNAL a ganar destresas digitales en R.
Se supone que ya has descargado el archivo xlsx mencionado anteriormente 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, debes recortar el archivo original para eliminar los banners y renombrar las columnas, a fin de poder leerlo desde R. No debe haber espacios en blanco ni caracteres extraños en ningún nombre de columna.
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
Verifica los nombres de los archivos que estan en la misma carpeta que este cuaderno:
list.files()
## [1] "20260526_BaseAgricola20192025edit.xlsx"
## [2] "boy_Raices_y_tuberculos_2025.csv"
## [3] "excel-y-R.html"
## [4] "excel-y-R.Rmd"
## [5] "excel y R.nb.html"
## [6] "excel y R.Rmd"
En este caso el archivo tocado es 20260526_BaseAgricola20192025edit.xlsx
Como este es un archivo excel, es bueno saber cuantas hojas de calculo hay:
hojas <- excel_sheets("20260526_BaseAgricola20192025edit.xlsx")
Veamos:
hojas
## [1] "BasePagina" "BaseSIPRA"
Creo que toda la info nescesaria esta en la primera hoja por lo que seguire:
EVA19_25 <- read_excel("20260526_BaseAgricola20192025edit.xlsx")
EVA19_25
Ten en cuenta que la columna COD_MUN es de tipo carácter. Este es el tipo de datos más común para los identificadores.
Como estamos interesado solo en un departamento necesitamos filtrar EVA19_25:
(boy19_25 = dplyr::filter(EVA19_25, Departamento == "Boyacá"))
Ahora, vamos a seleccionar solo datos del 2025:
(stder_25 = dplyr::filter(boy19_25, YEAR == 2025))
Ahora, seleccionemos solo el grupo de cultivos que nos interesa y resumamos la producción por municipio:
stder_25 %>%
group_by(Codigo_Mun, Municipio, GRUPO) %>%
filter(GRUPO=='Raíces y tubérculos') %>%
summarize(max_prod = max(PROD_TON, na.rm = TRUE)) %>%
arrange(desc(max_prod)) -> Raíces_y_tubérculos_2025
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by Codigo_Mun, Municipio, and GRUPO.
## ℹ Output is grouped by Codigo_Mun and Municipio.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(Codigo_Mun, Municipio, GRUPO))` for per-operation
## grouping (`?dplyr::dplyr_by`) instead.
Raíces_y_tubérculos_2025
Vamos a usar la libreria readr para guardar nuestros datos en formato csv:
write_csv(Raíces_y_tubérculos_2025, "boy_Raices_y_tuberculos_2025.csv")
Revisemos que el archivo fue creado:
list.files()
## [1] "20260526_BaseAgricola20192025edit.xlsx"
## [2] "boy_Raices_y_tuberculos_2025.csv"
## [3] "excel-y-R.html"
## [4] "excel-y-R.Rmd"
## [5] "excel y R.nb.html"
## [6] "excel y R.Rmd"
Vamos a leer el archivo para revisar que los datos son correctos:
los_datos25 <- read_csv("boy_Raices_y_tuberculos_2025.csv")
## Rows: 121 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Municipio, GRUPO
## dbl (2): Codigo_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 Codigo_Mun ahora es de tipo doble (es decir, numérico). Este no es el tipo de datos habitual para los identificadores.
En caso de que necesitemos cambiar ese tipo de datos, podemos usar la función mutate:
los_datos25 %>% mutate(Codigo_Mun = as.character(Codigo_Mun)) -> nuevos_datos25
nuevos_datos25
¡Bien hecho! Ahora puedes continuar con la creación del cuaderno de trabajo en el que uniremos los datos de producción de 2025 con los polígonos que representan a los municipios de nuestro departamento.
Si usas codigo de este cuaderno en tu proyecto porfavor cita como corresponde:
Lizarazo, I. 2023. How to read and subset .xlsx agricultural statistics data. Available at https://rpubs.com/otra_vez_eva
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_Mexico.utf8 LC_CTYPE=Spanish_Mexico.utf8
## [3] LC_MONETARY=Spanish_Mexico.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Mexico.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