Introducción

Este cuaderno presenta un ejemplo sencillo para la lectura y procesamiento de las estadísticas agrícolas de la Evaluación Agropecuaria (EVA) correspondientes al periodo 2019-2022, publicadas por la Unidad de Planificación Rural Agropecuaria (UPRA).

A lo largo del documento se desarrollan procedimientos para importar archivos de Excel, inspeccionar su estructura, seleccionar subconjuntos de información y exportar los resultados obtenidos.

El objetivo es fortalecer las habilidades básicas en el manejo y transformación de datos agrícolas utilizando R, facilitando la preparación de la información para análisis posteriores.

1. Configuración del entorno

Se prepara el entorno de trabajo y se cargarán las librerías necesarias para la lectura y manipulación de datos agrícolas.

1.1 Limpieza del entorno de trabajo

La función rm(list = ls()) elimina todos los objetos almacenados en la memoria temporal de R. Esta práctica permite iniciar el análisis en un entorno limpio, evitando conflictos con objetos creados en sesiones anteriores.

rm(list = ls())

1.2 Librerías utilizadas

En este cuaderno se emplean diferentes librerías de R para la lectura, manipulación y exportación de datos tabulares.

La librería readxl permite importar archivos de Microsoft Excel (.xlsx) al entorno de trabajo de R.

La librería dplyr facilita la manipulación de datos mediante funciones para filtrar, seleccionar, agrupar y resumir información.

La librería readr proporciona herramientas para la lectura y escritura de archivos de texto y valores separados por comas (CSV), permitiendo exportar los resultados obtenidos durante el análisis.

1.3 Instalación y carga de librerías

Si las librerías no están instaladas, se pueden instalar con la función install.packages() desde la consola de R.

# install.packages("readxl")
# install.packages("dplyr")
# install.packages("readr")

La función library() permite cargar los paquetes instalados al entorno de trabajo, activando sus funciones para ser utilizadas durante el análisis de datos.

library(readxl)
library(dplyr)
library(readr)

2. Lectura de los datos de la Evaluación Agropecuaria (EVA)

2.1 Verificación de los archivos del directorio

Antes de importar la información, es conveniente verificar los archivos disponibles en el directorio de trabajo.

list.files("D:/Geomatica Basica (Gr 2)/GB2/Proyecto2/datos")
##  [1] "20250617_BaseAgricola20192024.xlsx" "Choco"                             
##  [3] "Chocó.gpkg"                         "choco_buffer.gpkg"                 
##  [5] "choco_ciudades.gpkg"                "choco_curvas_nivel.cpg"            
##  [7] "choco_curvas_nivel.dbf"             "choco_curvas_nivel.prj"            
##  [9] "choco_curvas_nivel.shp"             "choco_curvas_nivel.shx"            
## [11] "choco_elevacion.tif"                "choco_elevacion.tif.aux.xml"       
## [13] "choco_municipios.gpkg"              "choco_municipios_MAGMA.gpkg"       
## [15] "choco_municipios_UTM18N.gpkg"       "choco_rangos_elevacion.cpg"        
## [17] "choco_rangos_elevacion.dbf"         "choco_rangos_elevacion.prj"        
## [19] "choco_rangos_elevacion.shp"         "choco_rangos_elevacion.shx"        
## [21] "choco_relieve.tif"                  "choco_relieve.tif.aux.xml"         
## [23] "choco_relieve.txt"                  "choco_rios.gpkg"                   
## [25] "choco_vias.gpkg"                    "Ciudades de Colombia.gpkg"         
## [27] "Ciudades de Santander.gpkg"         "Ciudades del mundo"                
## [29] "COL_adm"                            "COL_adm2.cpg"                      
## [31] "COL_adm2.csv"                       "COL_adm2.dbf"                      
## [33] "COL_adm2.prj"                       "COL_adm2.shp"                      
## [35] "COL_adm2.shx"                       "COL_alt_tif"                       
## [37] "COL_msk_alt_tif"                    "COL_msk_cov_tif"                   
## [39] "COL_rds"                            "COL_wat"                           
## [41] "Colombia"                           "Santander"                         
## [43] "Tierra"

La función list.files() permite visualizar los archivos almacenados en el directorio de trabajo actual. Esta verificación facilita la identificación del archivo que contiene la base de datos de la Evaluación Agropecuaria (EVA) y confirma que el archivo se encuentra disponible para su lectura desde R.

En este caso, el archivo de interés es 20250617_BaseAgricola20192024.xlsx, el cual corresponde a la versión depurada de la base de datos original.

2.2 Lectura del conjunto de datos

Debido a que el archivo de Excel contiene una única hoja de trabajo, se procede a su importación directa en R.

EVA <- read_excel("D:/Geomatica Basica (Gr 2)/GB2/Proyecto2/datos/20250617_BaseAgricola20192024.xlsx")
EVA
## # A tibble: 141,073 × 18
##    `Codigo Dane departamento` Departamento `Codigo Dane municipio` Municipio
##    <chr>                      <chr>        <chr>                   <chr>    
##  1 05                         Antioquia    05001                   Medellín 
##  2 05                         Antioquia    05001                   Medellín 
##  3 05                         Antioquia    05001                   Medellín 
##  4 05                         Antioquia    05001                   Medellín 
##  5 05                         Antioquia    05001                   Medellín 
##  6 05                         Antioquia    05001                   Medellín 
##  7 05                         Antioquia    05001                   Medellín 
##  8 05                         Antioquia    05001                   Medellín 
##  9 05                         Antioquia    05001                   Medellín 
## 10 05                         Antioquia    05001                   Medellín 
## # ℹ 141,063 more rows
## # ℹ 14 more variables: `Desagregacion cultivo` <chr>, Cultivo <chr>,
## #   `Ciclo del cultivo` <chr>, `Grupo cultivo` <chr>, Subgrupo <chr>,
## #   Año <dbl>, Periodo <chr>, `Area sembrada (ha)` <dbl>,
## #   `Area cosechada (ha)` <dbl>, `Produccion (t)` <dbl>,
## #   `Rendimiento (t/ha)` <dbl>, `Nombre cientifico del cultivo` <chr>,
## #   `Codigo del cultivo` <dbl>, `Estado fisico del cultivo` <chr>

La función read_excel() del paquete readxl permite importar archivos de Excel directamente al entorno de R. En este caso, el archivo se carga como un objeto denominado EVA.

El conjunto de datos contiene 141.073 registros y 18 variables, lo que corresponde a información agrícola a nivel nacional, organizada por departamento, municipio y cultivo.

3. Subconjunto de datos para el departamento de interés

Dado que el análisis se enfoca en un departamento específico, se procede a filtrar la base de datos EVA para conservar únicamente la información correspondiente al departamento de Chocó.

choco <- dplyr::filter(EVA, Departamento == "Chocó")
choco
## # A tibble: 2,869 × 18
##    `Codigo Dane departamento` Departamento `Codigo Dane municipio` Municipio
##    <chr>                      <chr>        <chr>                   <chr>    
##  1 27                         Chocó        27001                   Quibdó   
##  2 27                         Chocó        27001                   Quibdó   
##  3 27                         Chocó        27001                   Quibdó   
##  4 27                         Chocó        27001                   Quibdó   
##  5 27                         Chocó        27001                   Quibdó   
##  6 27                         Chocó        27001                   Quibdó   
##  7 27                         Chocó        27001                   Quibdó   
##  8 27                         Chocó        27001                   Quibdó   
##  9 27                         Chocó        27001                   Quibdó   
## 10 27                         Chocó        27001                   Quibdó   
## # ℹ 2,859 more rows
## # ℹ 14 more variables: `Desagregacion cultivo` <chr>, Cultivo <chr>,
## #   `Ciclo del cultivo` <chr>, `Grupo cultivo` <chr>, Subgrupo <chr>,
## #   Año <dbl>, Periodo <chr>, `Area sembrada (ha)` <dbl>,
## #   `Area cosechada (ha)` <dbl>, `Produccion (t)` <dbl>,
## #   `Rendimiento (t/ha)` <dbl>, `Nombre cientifico del cultivo` <chr>,
## #   `Codigo del cultivo` <dbl>, `Estado fisico del cultivo` <chr>

En este caso, la función filter() del paquete dplyr permite seleccionar únicamente las observaciones asociadas al departamento de Chocó, generando un nuevo objeto denominado choco.

Este subconjunto contiene los registros agrícolas correspondientes a este departamento, incluyendo información por municipio y tipo de cultivo.

Para restringir aún más el análisis, se puede filtrar la información por año:

choco_2022 <- dplyr::filter(choco, `Año` == 2022)
choco_2022
## # A tibble: 490 × 18
##    `Codigo Dane departamento` Departamento `Codigo Dane municipio` Municipio
##    <chr>                      <chr>        <chr>                   <chr>    
##  1 27                         Chocó        27001                   Quibdó   
##  2 27                         Chocó        27001                   Quibdó   
##  3 27                         Chocó        27001                   Quibdó   
##  4 27                         Chocó        27001                   Quibdó   
##  5 27                         Chocó        27001                   Quibdó   
##  6 27                         Chocó        27001                   Quibdó   
##  7 27                         Chocó        27001                   Quibdó   
##  8 27                         Chocó        27001                   Quibdó   
##  9 27                         Chocó        27001                   Quibdó   
## 10 27                         Chocó        27001                   Quibdó   
## # ℹ 480 more rows
## # ℹ 14 more variables: `Desagregacion cultivo` <chr>, Cultivo <chr>,
## #   `Ciclo del cultivo` <chr>, `Grupo cultivo` <chr>, Subgrupo <chr>,
## #   Año <dbl>, Periodo <chr>, `Area sembrada (ha)` <dbl>,
## #   `Area cosechada (ha)` <dbl>, `Produccion (t)` <dbl>,
## #   `Rendimiento (t/ha)` <dbl>, `Nombre cientifico del cultivo` <chr>,
## #   `Codigo del cultivo` <dbl>, `Estado fisico del cultivo` <chr>

De esta manera, se obtiene una base de datos más específica que contiene únicamente los registros del año 2022 para el departamento de Chocó, lo cual facilita el análisis temporal de la producción agrícola.

4. Subconjunto de cultivos y resumen de producción

A partir del conjunto de datos filtrado para el año 2022 en el departamento de Chocó, se selecciona el grupo de cultivos de interés y se resume la producción por municipio.

choco_2022 %>%
  group_by(`Codigo Dane municipio`, Municipio, `Grupo cultivo`) %>%
  filter(`Grupo cultivo` == "Frutales") %>%
  summarize(max_prod = max(`Produccion (t)`, na.rm = TRUE)) %>%
  arrange(desc(max_prod)) -> frutales2022
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by Codigo Dane municipio, Municipio, and
##   Grupo cultivo.
## ℹ Output is grouped by Codigo Dane municipio and Municipio.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(Codigo Dane municipio, Municipio, Grupo cultivo))` for
##   per-operation grouping (`?dplyr::dplyr_by`) instead.
frutales2022
## # A tibble: 30 × 4
## # Groups:   Codigo Dane municipio, Municipio [30]
##    `Codigo Dane municipio` Municipio           `Grupo cultivo` max_prod
##    <chr>                   <chr>               <chr>              <dbl>
##  1 27150                   Carmen del Darién   Frutales         136000 
##  2 27615                   Riosucio            Frutales          33348 
##  3 27001                   Quibdó              Frutales          21714 
##  4 27800                   Unguía              Frutales           9806.
##  5 27099                   Bojayá              Frutales           9750 
##  6 27660                   San José del Palmar Frutales           6490 
##  7 27430                   Medio Baudó         Frutales           6021 
##  8 27425                   Medio Atrato        Frutales           5152 
##  9 27077                   Bajo Baudó          Frutales           4371 
## 10 27495                   Nuquí               Frutales           4050 
## # ℹ 20 more rows

El resultado permite identificar los municipios con mayor producción dentro del grupo de cultivos seleccionados, facilitando el análisis comparativo entre territorios del departamento.

5. Exportación y verificación de datos

Para guardar el resultado del análisis, se exporta el conjunto de datos a un archivo en formato CSV utilizando la librería readr.

write_csv(frutales2022, "choco_frutales_2022.csv")

La función write_csv() permite guardar objetos de R en un archivo externo, facilitando su reutilización en otros análisis o programas.

Luego, se verifica que el archivo se haya creado correctamente en el directorio de trabajo:

list.files()
##  [1] "choco_frutales_2022.csv"     "choco_munic.gpkg"           
##  [3] "choco_pendiente.tif"         "choco_pendiente.tif.aux.xml"
##  [5] "cuaderno1.html"              "cuaderno1.nb.html"          
##  [7] "cuaderno1.pdf"               "cuaderno1.Rmd"              
##  [9] "cuaderno2.html"              "cuaderno2.nb.html"          
## [11] "cuaderno2.Rmd"               "cuaderno3.nb.html"          
## [13] "cuaderno3.Rmd"               "datos"                      
## [15] "municipios.gpkg"             "Proyecto2.qgz"              
## [17] "rsconnect"                   "RScript.R"

Para comprobar que la información se exportó correctamente, se vuelve a leer el archivo:

los_datos22 <- read_csv(
  "choco_frutales_2022.csv",
  locale = locale(encoding = "Latin1")
)
## Rows: 30 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Municipio, Grupo cultivo
## dbl (2): Codigo Dane municipio, 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_datos22
## # A tibble: 30 × 4
##    `Codigo Dane municipio` Municipio            `Grupo cultivo` max_prod
##                      <dbl> <chr>                <chr>              <dbl>
##  1                   27150 Carmen del Darién   Frutales         136000 
##  2                   27615 Riosucio             Frutales          33348 
##  3                   27001 Quibdó              Frutales          21714 
##  4                   27800 Unguía               Frutales           9806.
##  5                   27099 Bojayá              Frutales           9750 
##  6                   27660 San José del Palmar Frutales           6490 
##  7                   27430 Medio Baudó         Frutales           6021 
##  8                   27425 Medio Atrato         Frutales           5152 
##  9                   27077 Bajo Baudó          Frutales           4371 
## 10                   27495 Nuquí                Frutales           4050 
## # ℹ 20 more rows

Al leer el archivo, R reconoce automáticamente los tipos de datos de cada columna, mostrando la estructura del conjunto exportado.

En algunos casos, los códigos de los municipios pueden ser interpretados como valores numéricos. Si es necesario, se puede corregir este tipo de dato:

los_datos22 <- los_datos22 %>%
  mutate(`Codigo Dane municipio` = as.character(`Codigo Dane municipio`))
head(los_datos22)
## # A tibble: 6 × 4
##   `Codigo Dane municipio` Municipio            `Grupo cultivo` max_prod
##   <chr>                   <chr>                <chr>              <dbl>
## 1 27150                   Carmen del Darién   Frutales         136000 
## 2 27615                   Riosucio             Frutales          33348 
## 3 27001                   Quibdó              Frutales          21714 
## 4 27800                   Unguía               Frutales           9806.
## 5 27099                   Bojayá              Frutales           9750 
## 6 27660                   San José del Palmar Frutales           6490

De esta manera, se asegura la consistencia de los identificadores geográficos para futuros análisis o uniones con datos espaciales.

La producción de cultivos frutales en el departamento de Chocó presenta una distribución espacial heterogénea, con una fuerte concentración en ciertos municipios como Carmen del Darién y Riosucio. Mientras algunos territorios muestran alta producción, otros presentan valores significativamente menores, lo que sugiere diferencias en condiciones agroecológicas, infraestructura y niveles de desarrollo agrícola.

6. Entorno de computación

La función sessionInfo() permite registrar el entorno de trabajo utilizado para el análisis en R.

Esto incluye la versión de R, el sistema operativo y los paquetes cargados, lo cual es importante para garantizar la reproducibilidad del análisis.

sessionInfo()
## R version 4.6.0 (2026-04-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] readr_2.2.0  dplyr_1.2.1  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.58         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.6.0    pkgconfig_2.0.3  
## [25] rstudioapi_0.19.0 digest_0.6.39     R6_2.6.1          utf8_1.2.6       
## [29] tidyselect_1.2.1  parallel_4.6.0    vroom_1.7.1       pillar_1.11.1    
## [33] magrittr_2.0.5    bslib_0.11.0      bit64_4.8.2       tools_4.6.0      
## [37] cachem_1.1.0

Referencias

Lizarazo, I. (2023). How to read and subset .xlsx agricultural statistics data. RPubs. https://rpubs.com/ials2un/okra_vez_eva