library(readr)
library(readxl)
library(dplyr)
library(DBI)
library(RSQLite)Semana 05 — Lectura de Datos desde Múltiples Fuentes
Paquetes
Parte 1 — Leer el CSV
Se especifican los tipos de columna manualmente con col_types. id_empleado queda como character y fecha_ingreso como date.
empleados <- read_csv(
"empleados.csv",
col_types = cols(
id_empleado = col_character(),
nombre = col_character(),
departamento = col_character(),
salario_mensual = col_double(),
fecha_ingreso = col_date(format = "%Y-%m-%d")
)
)
glimpse(empleados)Rows: 20
Columns: 5
$ id_empleado <chr> "001", "002", "003", "004", "005", "006", "007", "008"…
$ nombre <chr> "Ana Torres", "Pedro Méndez", "María López", "Luis Gar…
$ departamento <chr> "Tecnología", "Auditoría", "Tecnología", "RRHH", "Audi…
$ salario_mensual <dbl> 58000, 45000, 63000, 41000, 52000, 70000, 65000, 48000…
$ fecha_ingreso <date> 2019-03-15, 2021-07-01, 2018-11-20, 2022-01-10, 2020-…
glimpse() confirma que id_empleado es <chr> y fecha_ingreso es <date>.
Parte 2 — Leer el Excel
Cada sheet se lee por separado y se agrega una columna anio antes de combinar con bind_rows().
sheet_2022 <- read_excel("empleados.xlsx", sheet = "2022") |>
mutate(anio = 2022L)
sheet_2023 <- read_excel("empleados.xlsx", sheet = "2023") |>
mutate(anio = 2023L)
empleados_excel <- bind_rows(sheet_2022, sheet_2023)
glimpse(empleados_excel)Rows: 7
Columns: 5
$ id_empleado <chr> "004", "009", "012", "017", "018", "008", "016"
$ nombre <chr> "Luis García", "Lucía Blanco", "Ricardo Gómez", "Irene…
$ departamento <chr> "RRHH", "RRHH", "Auditoría", "RRHH", "Finanzas", "Fina…
$ salario_mensual <dbl> 41000, 39000, 47000, 42000, 46000, 48000, 51000
$ anio <int> 2022, 2022, 2022, 2022, 2022, 2023, 2023
Promedio de salario por departamento
promedio_depto <- empleados_excel |>
group_by(departamento) |>
summarise(
n = n(),
salario_prom = mean(salario_mensual, na.rm = TRUE),
.groups = "drop"
) |>
arrange(desc(salario_prom))
promedio_depto# A tibble: 3 × 3
departamento n salario_prom
<chr> <int> <dbl>
1 Auditoría 2 49000
2 Finanzas 2 47000
3 RRHH 3 40667.
Parte 3 — Conectar a SQLite
Crear la conexión y escribir la tabla
con <- dbConnect(SQLite(), dbname = "empleados.db")
datos_sqlite <- tibble(
id_empleado = c("001", "008", "016", "019"),
anio = c(2022L, 2023L, 2023L, 2022L),
monto_total_anio = c(696000, 576000, 612000, 864000)
)
dbWriteTable(con, "empleados_resumen", datos_sqlite, overwrite = TRUE)Leer con filtro WHERE
resultado_2023 <- dbGetQuery(
con,
"SELECT * FROM empleados_resumen WHERE anio = 2023"
)
resultado_2023 id_empleado anio monto_total_anio
1 008 2023 576000
2 016 2023 612000
Cerrar la conexión
dbDisconnect(con)Los registros recuperados corresponden a los empleados cuyo anio es 2023, confirmando que la consulta SQL filtra correctamente.