Este es un cuaderno muy simple que ilustra cómo subconjuntos de datos de estadísticas agrícolas del EVA 2019-2022 proporcionados por la UPRA en
https://upra.gov.co/es-co/Evas_Documentos/BaseEVA_Agr%C3%ADcola20192022.xlsx
El objetivo es ayudar a los estudiantes de Geomática Básica de la UNAL a adquirir habilidades digitales en R.
Requisitos previos Se supone que ya descargó el archivo xlsx mencionado anteriormente y lo guardó en el mismo directorio donde se encuentra este cuaderno.
Cuando se abre en Excel, las primeras filas del archivo BaseEVA_Agricola20192022.xlsx tienen este aspecto:
Luego, debe modificar el archivo original para eliminar las imagenes y cacillas porque que posoblemente no son leidas en R, ademas de cambiar el nombre de las columnas para poder leerlo mas facilmente desde R. No debe haber espacios en blanco ni caracteres extraños en el nombre de ninguna columna.
Limpiar la memoria temporarl de R
rm(list = ls())
Cargar las librerias de R
library(readxl)
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
list.files()
## [1] "01.qgz"
## [2] "BaseEVA_Agrícola20192022.xlsx"
## [3] "Capturacafe.PNG"
## [4] "Diccionario_Datos_Niveles_Variables_MGN_CNPV2018Int.xlsx"
## [5] "EVA_19_22.xlsx"
## [6] "EVA_28_22.xlsx"
## [7] "huila_frutales_2022.csv"
## [8] "Huila_Mun.gpkg"
## [9] "MGN_ANM_MPIOS.dbf"
## [10] "MGN_ANM_MPIOS.prj"
## [11] "MGN_ANM_MPIOS.sbn"
## [12] "MGN_ANM_MPIOS.sbx"
## [13] "MGN_ANM_MPIOS.shp"
## [14] "MGN_ANM_MPIOS.shp.xml"
## [15] "MGN_ANM_MPIOS.shx"
## [16] "PROYECTO_EVA.html"
## [17] "PROYECTO_EVA.Rmd"
## [18] "rsconnect"
## [19] "upra.png"
Cargar las librerias de R
En este caso necesitamos el archivo “EVA_19_22.xlsx”, como se trata de excel es bueno saber cuantas hojas hay.
hojas <- excel_sheets("EVA_19_22.xlsx")
vamos a ver
hojas
## [1] "DatosEVA2019-2022"
Como hay una sola hoja, vamos a leerla
EVA19_22= read_excel("EVA_19_22.xlsx")
EVA19_22
## # A tibble: 91,777 × 12
## COD_DPTO DEPTO COD_MUN MUNICIPIO CULTIVO GRUPO SUBGRUPO YEAR AREA_SIEMBRA
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 05 Antioqu… 05001 Medellín Aguaca… Frut… Demas f… 2019 24
## 2 05 Antioqu… 05001 Medellín Brevo Frut… Demas f… 2019 15
## 3 05 Antioqu… 05001 Medellín Fresa Frut… Demas f… 2019 29
## 4 05 Antioqu… 05001 Medellín Guayaba Frut… Mirtáce… 2019 2.5
## 5 05 Antioqu… 05001 Medellín Lima Frut… Cítricos 2019 7.5
## 6 05 Antioqu… 05001 Medellín Mandar… Frut… Cítricos 2019 14.5
## 7 05 Antioqu… 05001 Medellín Mango Frut… Demas f… 2019 8
## 8 05 Antioqu… 05001 Medellín Mora Frut… Demas f… 2019 146
## 9 05 Antioqu… 05001 Medellín Naranja Frut… Cítricos 2019 12.5
## 10 05 Antioqu… 05001 Medellín Plátano Frut… Demas f… 2019 160
## # ℹ 91,767 more rows
## # ℹ 3 more variables: AREA_COSECHA <dbl>, PRODUCCION <dbl>, RENDIMIENTO <dbl>
Tengamos en cuenta que la columna COD_MUN es un caracter (chr). este es el tipo de datoos comun para identificadores.
Como estamos interesados solo en un departmaneto , Huila, lo filtramos.
(huila19_22 = dplyr::filter(EVA19_22, DEPTO == "Huila"))
## # A tibble: 6,564 × 12
## COD_DPTO DEPTO COD_MUN MUNICIPIO CULTIVO GRUPO SUBGRUPO YEAR AREA_SIEMBRA
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 41 Huila 41001 Neiva Aguacate Frut… Demas f… 2019 128
## 2 41 Huila 41001 Neiva Badea Frut… Pasiflo… 2019 20
## 3 41 Huila 41001 Neiva Banano Frut… Demas f… 2019 279
## 4 41 Huila 41001 Neiva Curuba Frut… Pasiflo… 2019 10
## 5 41 Huila 41001 Neiva Granadilla Frut… Pasiflo… 2019 25
## 6 41 Huila 41001 Neiva Guanábana Frut… Anonáce… 2019 39
## 7 41 Huila 41001 Neiva Gulupa o … Frut… Pasiflo… 2019 21.5
## 8 41 Huila 41001 Neiva Lulo Frut… Solanác… 2019 50
## 9 41 Huila 41001 Neiva Mango Frut… Demas f… 2019 16
## 10 41 Huila 41001 Neiva Maracuyá Frut… Pasiflo… 2019 42
## # ℹ 6,554 more rows
## # ℹ 3 more variables: AREA_COSECHA <dbl>, PRODUCCION <dbl>, RENDIMIENTO <dbl>
Ahora seleccionaremos los datos mas recientes, año 2022.
(huila_22 = dplyr::filter(huila19_22, YEAR == 2022))
## # A tibble: 1,767 × 12
## COD_DPTO DEPTO COD_MUN MUNICIPIO CULTIVO GRUPO SUBGRUPO YEAR AREA_SIEMBRA
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 41 Huila 41001 Neiva Aguacate Frut… Demas f… 2022 160
## 2 41 Huila 41001 Neiva Badea Frut… Pasiflo… 2022 26
## 3 41 Huila 41001 Neiva Banano Frut… Demas f… 2022 297
## 4 41 Huila 41001 Neiva Curuba Frut… Pasiflo… 2022 26
## 5 41 Huila 41001 Neiva Granadilla Frut… Pasiflo… 2022 30.5
## 6 41 Huila 41001 Neiva Guanábana Frut… Anonáce… 2022 43.5
## 7 41 Huila 41001 Neiva Gulupa o … Frut… Pasiflo… 2022 27.5
## 8 41 Huila 41001 Neiva Limón Frut… Cítricos 2022 3.73
## 9 41 Huila 41001 Neiva Limón Frut… Cítricos 2022 137.
## 10 41 Huila 41001 Neiva Lulo Frut… Solanác… 2022 58
## # ℹ 1,757 more rows
## # ℹ 3 more variables: AREA_COSECHA <dbl>, PRODUCCION <dbl>, RENDIMIENTO <dbl>
Seleccionamos el cultivo de interes y resumimos la produccion por municipio.
huila_22 %>%
group_by(COD_MUN, MUNICIPIO, GRUPO) %>%
filter(GRUPO=='Frutales') %>%
summarize(max_prod = max(PRODUCCION, na.rm = TRUE)) %>%
arrange(desc(max_prod)) -> frutales2022
## `summarise()` has grouped output by 'COD_MUN', 'MUNICIPIO'. You can override
## using the `.groups` argument.
frutales2022
## # A tibble: 37 × 4
## # Groups: COD_MUN, MUNICIPIO [37]
## COD_MUN MUNICIPIO GRUPO max_prod
## <chr> <chr> <chr> <dbl>
## 1 41298 Garzón Frutales 41745
## 2 41551 Pitalito Frutales 31434
## 3 41020 Algeciras Frutales 12516
## 4 41359 Isnos Frutales 11487.
## 5 41006 Acevedo Frutales 11328
## 6 41799 Tello Frutales 9960
## 7 41530 Palestina Frutales 8608
## 8 41001 Neiva Frutales 8388.
## 9 41676 Santa María Frutales 8169
## 10 41306 Gigante Frutales 7452.
## # ℹ 27 more rows
Usaremos la libreria readr para guardar nuestros datos en formato csv :
write_csv(frutales2022, "huila_frutales_2022.csv")
Comprobaremos que el archivo .csv halla sido creado:
list.files()
## [1] "01.qgz"
## [2] "BaseEVA_Agrícola20192022.xlsx"
## [3] "Capturacafe.PNG"
## [4] "Diccionario_Datos_Niveles_Variables_MGN_CNPV2018Int.xlsx"
## [5] "EVA_19_22.xlsx"
## [6] "EVA_28_22.xlsx"
## [7] "huila_frutales_2022.csv"
## [8] "Huila_Mun.gpkg"
## [9] "MGN_ANM_MPIOS.dbf"
## [10] "MGN_ANM_MPIOS.prj"
## [11] "MGN_ANM_MPIOS.sbn"
## [12] "MGN_ANM_MPIOS.sbx"
## [13] "MGN_ANM_MPIOS.shp"
## [14] "MGN_ANM_MPIOS.shp.xml"
## [15] "MGN_ANM_MPIOS.shx"
## [16] "PROYECTO_EVA.html"
## [17] "PROYECTO_EVA.Rmd"
## [18] "rsconnect"
## [19] "upra.png"
Leamos el archivo para verificar que los datos esten correctos:
los_datos22 <- read_csv("huila_frutales_2022.csv")
## Rows: 37 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_datos22
## # A tibble: 37 × 4
## COD_MUN MUNICIPIO GRUPO max_prod
## <dbl> <chr> <chr> <dbl>
## 1 41298 Garzón Frutales 41745
## 2 41551 Pitalito Frutales 31434
## 3 41020 Algeciras Frutales 12516
## 4 41359 Isnos Frutales 11487.
## 5 41006 Acevedo Frutales 11328
## 6 41799 Tello Frutales 9960
## 7 41530 Palestina Frutales 8608
## 8 41001 Neiva Frutales 8388.
## 9 41676 Santa María Frutales 8169
## 10 41306 Gigante Frutales 7452.
## # ℹ 27 more rows
Tenga en cuenta que la columna COD_MUN ahora es doble (es decir, numérica(dbl)). Este no es el tipo de datos común para identificadores.
En caso de que necesitemos cambiar dicho tipo de datos, podemos usar mutate:
los_datos22 %>% mutate(COD_MUN=as.character(COD_MUN)) -> nuevos_datos22
head(nuevos_datos22)
## # A tibble: 6 × 4
## COD_MUN MUNICIPIO GRUPO max_prod
## <chr> <chr> <chr> <dbl>
## 1 41298 Garzón Frutales 41745
## 2 41551 Pitalito Frutales 31434
## 3 41020 Algeciras Frutales 12516
## 4 41359 Isnos Frutales 11487.
## 5 41006 Acevedo Frutales 11328
## 6 41799 Tello Frutales 9960
¡Bien hecho! Ahora, se puede proceder a crear el cuaderno donde uniremos los datos de producción de 2022 a los polígonos que representan a los municipios de nuestro departamento.
ESte cuaderno puede encontrarse publicado en : https://rpubs.com/alejandrotrianComoleerycrearsubconjuntosxlsx2
sessionInfo()
## R version 4.3.1 (2023-06-16 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
##
## 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.1.3 readr_2.1.4 readxl_1.4.3
##
## loaded via a namespace (and not attached):
## [1] crayon_1.5.2 vctrs_0.6.3 cli_3.6.1 knitr_1.44
## [5] rlang_1.1.1 xfun_0.40 generics_0.1.3 jsonlite_1.8.7
## [9] bit_4.0.5 glue_1.6.2 htmltools_0.5.6 sass_0.4.7
## [13] hms_1.1.3 fansi_1.0.4 rmarkdown_2.25 cellranger_1.1.0
## [17] evaluate_0.21 jquerylib_0.1.4 tibble_3.2.1 tzdb_0.4.0
## [21] fastmap_1.1.1 yaml_2.3.7 lifecycle_1.0.3 compiler_4.3.1
## [25] pkgconfig_2.0.3 rstudioapi_0.15.0 digest_0.6.33 R6_2.5.1
## [29] tidyselect_1.2.0 utf8_1.2.3 parallel_4.3.1 vroom_1.6.3
## [33] pillar_1.9.0 magrittr_2.0.3 bslib_0.5.1 bit64_4.0.5
## [37] tools_4.3.1 cachem_1.0.8