Para el trabajo de este cuaderno se utilizará la base de datos agrarios de EVA2029-2025 en formato .xlsx.
Para el desarrollo de esta práctica, se asume que se ha descargado
previamente el archivo de Excel correspondiente a las Evaluaciones
Agropecuarias Municipales, titulado
BaseEVA_Agricola20192025.xlsx, y que este se encuentra
almacenado dentro del mismo directorio de trabajo donde se ejecuta este
cuaderno de R Markdown.
Antes de realizar la importación de los datos en el entorno de R, es fundamental realizar una depuración (“poda”) del archivo original en Excel. Este proceso consiste en eliminar las filas superiores que contienen banners institucionales, logos o metadatos informativos, así como renombrar las columnas del set de datos para garantizar que no existan espacios en blanco ni caracteres especiales en los nombres de las variables, facilitando así su correcta lectura y manipulación computacional.
Limpiamos la memoria temporal:
rm(list=ls())
Cargamos las librerias al espacio de trabajo:
library(readxl)
library(readr)
library(dplyr)
Antes de proceder con la importación formal de las Evaluaciones Agropecuarias Municipales al entorno de trabajo, es una buena práctica de programación verificar y listar los nombres de los archivos que coexisten en el mismo directorio donde se encuentra alojado este cuaderno. Esto permite comprobar la correcta disposición y nomenclatura de las bases de datos de la UPRA.
list.files("C:/Users/Acer/Desktop/GB2R/Proyecto1/datos")
## [1] "BaseAgricola20192025.xlsx" "Basesupra19_25.xlsx"
## [3] "Ciudades Narino.gpkg" "ciudadesCol.gpkg"
## [5] "COL_adm2.cpg" "COL_adm2.csv"
## [7] "COL_adm2.dbf" "COL_adm2.prj"
## [9] "COL_adm2.shp" "COL_adm2.shx"
## [11] "COL_roads.dbf" "COL_roads.prj"
## [13] "COL_roads.shp" "COL_roads.shx"
## [15] "Departamento narino.gpkg" "license.txt"
## [17] "Municipios Narinox.gpkg" "narino.gpkg"
## [19] "narino_agua_area.gpkg" "narino_agua_lineas.gpkg"
## [21] "narino_alt.tif" "narino_alt.tif.aux.xml"
## [23] "narino_mun.gpkg" "narino_roads.gpkg"
## [25] "worldcities.csv" "worldcities.xlsx"
En este caso particular, el archivo depurado y estructurado se ha
renombrado como Basesupra19_25.xlsx. Al tratarse de un
formato de hoja de cálculo compuesto, el primer paso metodológico
consiste en identificar cuántas hojas internas componen el archivo y
cuáles son sus nombres, asegurando así que apuntemos a la pestaña
correcta durante la lectura.
A continuación, se utiliza la función excel_sheets()
para almacenar y visualizar los nombres de las hojas disponibles. Como
resultado, se corrobora la existencia de una única hoja denominada
"datos". Finalmente, se procede con la importación formal
del set de datos agropecuarios asignándolo a un objeto tipo dataframe
llamado EVA19_25.
hojas <- excel_sheets("C:/Users/Acer/Desktop/GB2R/Proyecto1/datos/Basesupra19_25.xlsx")
Veremos el nombre de las hojas detectadas:
hojas
## [1] "datos"
Vamos a importar la base de datos de la EVA desde el archivo limpio
EVA19_25 <- read_excel("C:/Users/Acer/Desktop/GB2R/Proyecto1/datos/Basesupra19_25.xlsx")
EVA19_25
Es importante destacar que la columna que contiene los códigos
municipales debe ser almacenada y tratada como una variable de tipo
carácter (character). Este es el estándar requerido para
identificadores geográficos o códigos DIVIPOLA, ya que evita la pérdida
de los ceros a la izquierda en los códigos de los municipios.
Dado que el análisis se centra en un ámbito geográfico específico, se
procede a realizar un subconjunto de los datos (subset)
mediante la función filter() del paquete
dplyr. Esto permite aislar únicamente los registros
correspondientes al departamento de interés para continuar con la
evaluación agropecuaria local.
(narino_19_25 <- dplyr::filter(EVA19_25, departamento == "Nariño"))
Ahora seleccionamos los datos solo del 2025
(narino_2025 <- dplyr::filter(narino_19_25, anho == 2025))
Con el fin de especializar el diagnóstico sectorial, se procede a
aislar un grupo específico de sistemas productivos (en este caso, el
grupo de Frutales) para evaluar su comportamiento a nivel local. Para
ello, se estructura un flujo de trabajo encadenado mediante el operador
pipe (%>%) además de las operaciones secuenciales
group_by(), filter(), summarize()
y arrange().
frutales2025 <- narino_2025 %>%
group_by(codigoMunicipio, municipio, grupo_especie) %>%
filter(grupo_especie == 'Frutales') %>%
summarize(max_prod = max(produccio, na.rm = TRUE)) %>%
arrange(desc(max_prod))
Vemos el resultado
frutales2025
Una vez estructurado el resumen municipal de producción para el grupo de interés, es una práctica fundamental de la gestión de datos exportar el subconjunto obtenido a un formato de almacenamiento abierto e intercambiable, como un archivo CSV (Valores Separados por Comas). Esto garantiza la persistencia de los datos procesados sin necesidad de repetir los filtros tabulares en sesiones futuras.
Para ello, se utiliza la función write_csv() del paquete
readr. Posteriormente, se realiza una lectura de
comprobación del archivo generado mediante read_csv() para
verificar la integridad de las columnas y los tipos de datos
indexados.
write_csv(frutales2025, "narino_frutales_2025.csv")
Confirmamos
list.files()
## [1] "cultivonarinoimg.jpg" "descargas de prerequisitos"
## [3] "Entregas" "GB_simple_features.html"
## [5] "GB_simple_features.nb.html" "GB_simple_features.Rmd"
## [7] "miprimer_cuaderno.Rmd" "miprimer_script.R"
## [9] "municipios.gpkg" "narino_frutales_2025.csv"
## [11] "Proyecto1" "Proyecto2"
## [13] "Proyecto3" "read_agricultural_data.html"
## [15] "read_agricultural_data.nb.html" "read_agricultural_data.Rmd"
## [17] "rsconnect" "tablainformativa.png"
Comprobamos que se haya exportado el archvo con la información correcta
los_datos25 <- read_csv("narino_frutales_2025.csv")
## Rows: 64 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): municipio, grupo_especie
## dbl (2): codigoMunicipio, 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 codigoMunicipio es ahora
un tipo de dato numérico (double). Este no es el tipo de
dato común para los identificadores.
En caso de que necesitemos cambiar dicho tipo de dato, podemos
utilizar la función mutate():
nuevos_datos25 <- los_datos25 %>%
mutate(codigoMunicipio = as.character(codigoMunicipio))
Visualizamos para confirmar
head(nuevos_datos25)
A partir del procesamiento de datos tabulares y la consolidación del resumen municipal, se identifican dinámicas productivas altamente heterogéneas en el departamento de Nariño para el año 2025. El volumen total y los picos de producción máxima por municipio reflejan la fuerte influencia de los pisos térmicos, los sistemas de especialización regional y las ventajas comparativas agroecológicas del territorio.
El municipio de San Andrés de Tumaco se consolida como el líder indiscutible del sector frutícola en el departamento, registrando una producción máxima excepcional de 70.912,80 toneladas. Esta cifra se explica por las condiciones de bosque húmedo tropical (bh-T) de la llanura del Pacífico, ideales para el establecimiento a gran escala de cultivos perennes de alta demanda e importancia socioeconómica regional, tales como el chontaduro, el coco y el plátano (bajo la clasificación de frutales de la UPRA). En este mismo eje litoral destaca El Charco, ocupando el segundo lugar departamental con 31.620,00 toneladas, lo que demuestra el enorme potencial agroproductivo de las zonas de bajamar y vegas de los ríos patianos.
En contraste con las llanuras del Pacífico, la vertiente cordillerana y las zonas de ladera andina muestran un clúster frutícola muy dinámico, caracterizado por frutales de clima medio y de pasifloras (como la maracuyá, la granadilla y la lulo) o cítricos en zonas de cañón. Los polos de desarrollo en esta subregión están representados por: * Sandoná: Registra una producción notable de 14.128,00 toneladas, impulsada por la diversificación de sus laderas y microclimas. * El Rosario y Samaniego: Reportan producciones máximas de 13.250,38 y 10.073,60 toneladas respectivamente, consolidándose como despensas clave para los mercados de consumo interno y centros urbanos como Pasto. * Ricaurte y Olaya Herrera: Actúan como zonas de transición y pie de monte con 11.240,00 y 10.955,00 toneladas, sirviendo de puente biológico y comercial entre los ecosistemas andinos y el Pacífico.
La distribución espacial de los datos demuestra que la fruticultura en Nariño es un motor económico estratégico. Mientras que la franja costera concentra los mayores volúmenes volumétricos debido a economías de escala y extensiones continuas de cultivos tropicales, los municipios de la cordillera andina aportan una alta diversidad de especies frutales medianas y transitorias. Este comportamiento subregional subraya la importancia de planificar la infraestructura logística, las cadenas de frío y los distritos de riego de manera diferenciada, atendiendo a las necesidades climáticas y geográficas específicas de cada cuenca productora del departamento.
Lizarazo, I. 2023. How to read and subset .xlsx agricultural statistics data. Available at https://rpubs.com/otra_vez_eva
Unidad de Planificación Rural Agropecuaria (UPRA) y Ministerio de Agricultura y Desarrollo Rural (MADR). (2026). Evaluaciones Agropecuarias Municipales (EVA) 2019-2025 [Base de datos]. Sistema de Información de Gestión Agropecuaria. https://upra.gov.co/es-co/eva
sessionInfo()
## R version 4.5.2 (2025-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 10 x64 (build 19045)
##
## 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.5.0
##
## loaded via a namespace (and not attached):
## [1] crayon_1.5.3 vctrs_0.7.3 cli_3.6.6 knitr_1.51
## [5] rlang_1.2.0 xfun_0.57 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.31 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.5.2 pkgconfig_2.0.3
## [25] rstudioapi_0.18.0 digest_0.6.39 R6_2.6.1 tidyselect_1.2.1
## [29] parallel_4.5.2 vroom_1.7.1 pillar_1.11.1 magrittr_2.0.5
## [33] bslib_0.10.0 bit64_4.8.0 tools_4.5.2 cachem_1.1.0