Bibliotecas
- La activación de las bibliotecas se hace con la función library
# Biblioteca para leer archivos de excel
library(readxl)
# Biblioteca para leer archivos csv
library(readr)
# Biblioteca para manejo y visualización de datos
library(tidyverse)
# Biblioteca para edición rápida de nombres de columnas
library(janitor)
Datos de excel
Importando datos
- La lectura de archivos de excel la podemos realizar con la función
read_excel
- Siempre la función read_excel tomará la primera hoja del archivo de
excel
arroz <- read_excel("datos/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx")
Consultando nombre de hojas
excel_sheets("datos/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx")
## [1] "Costos" "ejemplo"
- Lectura de la hoja “Costos”:
arroz2 <- read_excel("datos/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx",
sheet = "Costos")
- Lectura de la hoja “Ejemplo”:
otra_hoja <- read_excel("datos/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx",
sheet = "ejemplo")
Archivo en carpeta previa
- Para indicar una carpeta o ruta previa usamos los dos puntos
seguidos: ../
ejemplo <- read_excel("../prueba/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx")
Omitiendo filas
- Podemos omitir filas al momento de leer los archivos de excel con el
argumento “skip”:
arroz3 <- read_excel("datos/COSTOS POR HECTÁREA DE ARROZ, SISTEMA RIEGO, NACIONAL, I SEMESTRE.xlsx",
sheet = "Costos",
skip = 1)
arroz3
Datos CSV
- read_csv(): para valores separados por comas (,)
- read_csv2(): para valores separados por punto y comas (;)
datos_csv <- read_csv("datos/Superficie_Sembrada_con_Ra_ces_Bulbos_y_Tub_rculos_en_el_departamento_del_Valle_del_Cauca.csv")
- ¿Qué ocurre si leo una base de datos separada por comas, con la
función read_csv2?
datos_error <- read_csv2("datos/Superficie_Sembrada_con_Ra_ces_Bulbos_y_Tub_rculos_en_el_departamento_del_Valle_del_Cauca.csv")
Tipos de datos en R
- Numérico (decimales):
- Enteros:
- Texto sin orden (cualitativa nomimal):
- Texto con orden (cualitativa ordinal)
- Fechas
- Booleanos o lógicos:

Operador de tubería tidyverse
- El operador de tubería es: %>%
- Se puede obtener con Ctrl + Shift + M
- Facilita el encadenamiento de procesos y hace más legible el
código
Consultar tipos de datos
- str: permite ver la estructura interna de una base de datos.
# Sin operador de tubería
str(otra_hoja)
## tibble [6 × 6] (S3: tbl_df/tbl/data.frame)
## $ Nombre: chr [1:6] "x1" "x2" "x3" "x4" ...
## $ Edad : num [1:6] 1 2 3 4 5 6
## $ Peso : num [1:6] 23.4 45.5 34.5 NA 50.5 80.9
## $ Altura: num [1:6] 9 8 7 6 5 4
## $ Fecha : POSIXct[1:6], format: "2023-01-01" "2023-01-15" ...
## $ IMC : chr [1:6] "2.56" "2.13" "2.15" NA ...
# Con operador de tubería
otra_hoja %>%
str()
## tibble [6 × 6] (S3: tbl_df/tbl/data.frame)
## $ Nombre: chr [1:6] "x1" "x2" "x3" "x4" ...
## $ Edad : num [1:6] 1 2 3 4 5 6
## $ Peso : num [1:6] 23.4 45.5 34.5 NA 50.5 80.9
## $ Altura: num [1:6] 9 8 7 6 5 4
## $ Fecha : POSIXct[1:6], format: "2023-01-01" "2023-01-15" ...
## $ IMC : chr [1:6] "2.56" "2.13" "2.15" NA ...
- Podemos usar la función class para validar el tipo de dato de una
columna específica.
# Sin operador
class(otra_hoja$Nombre)
## [1] "character"
# Con operador
otra_hoja$Nombre %>%
class()
## [1] "character"
Datos lógicos o booleanos
- Toman valores TRUE o FALSE
- Son muy útiles para aplicar filtros sobre una base de datos
# Mayor
2 > 3
## [1] FALSE
# Mayor o igual
2 >= 3
## [1] FALSE
# Menor
2 < 3
## [1] TRUE
# Menor o igual
2 <= 3
## [1] TRUE
# Igualdad
10 == 10
## [1] TRUE
# Diferencia
10 != 10
## [1] FALSE
# Ejemplo con texto
"a" == "A"
## [1] FALSE
# Comparación en un vector
altura_plantas <- c(43.5, 50.2, 45.7, 31.0, 28.7)
altura_plantas > 30
## [1] TRUE TRUE TRUE TRUE FALSE
Filtros sobre una base de datos
- Para aplicar filtros de filas en una base de datos usamos la fucnión
filter (tidyverse).
otra_hoja %>%
filter(Nombre == "x2")
otra_hoja %>%
filter(Altura >= 6)
- También es posible filtrar fechas:
otra_hoja %>%
filter(Fecha <= "2023-01-15")
Mínimo de una variable
otra_hoja$Peso %>%
min()
## [1] NA
otra_hoja$Peso %>%
min(na.rm = TRUE)
## [1] 23.4
Datos ordenados
- Cada variable es una columna
- Cada fila es una observación
- Cada celda es un valor

Ejemplo 2


Manipulación de datos
Procesos frecuentes
Datos EVAs
df_eva <- read_csv("datos/Evaluaciones_Agropecuarias_Municipales___EVA._2019_-_2021._Base_Agr_cola.csv") %>%
clean_names()
df_eva %>% head()
Conteos
df_eva %>%
count(cultivo, sort = TRUE)
- Puedo contar por más de un grupo o variable:
df_eva %>%
count(departamento, cultivo, sort = TRUE)
Filtro de filas
df_eva %>%
filter(cultivo == "Maíz")
Selección de columnas
df_eva %>%
select(departamento, municipio, cultivo, rendimiento)
Editar o crear columnas (mutar)
df_eva %>%
mutate(area_perdida = area_sembrada - area_cosechada)
filtrar + seleccionar + mutar
df_eva %>%
filter(cultivo == "Maíz") %>%
select(departamento, municipio, cultivo, area_sembrada, area_cosechada) %>%
mutate(area_perdida = area_sembrada - area_cosechada)
Agrupaciones y resumen
- Podemos usar summarise() o reframe()
df_eva %>%
group_by(cultivo) %>%
reframe(total_area_siembra = sum(area_sembrada),
promedio_rto = mean(rendimiento))