# Leer los dos sheets de manera independienteexcel_2022 <-read_excel("empleados.xlsx", sheet ="2022") %>%mutate(año =2022)excel_2023 <-read_excel("empleados.xlsx", sheet ="2023") %>%mutate(año =2023)# Combinar ambos en un solo tibbleempleados_excel <-bind_rows(excel_2022, excel_2023)# Mostrar resultado combinadoprint(empleados_excel)
# Calcular el promedio de salario por departamento (usando los datos del CSV)promedio_depto <- empleados_csv %>%group_by(departamento) %>%summarise(promedio_salario =mean(salario_mensual, na.rm =TRUE),total_empleados =n() )print(promedio_depto)
con <-dbConnect(SQLite(), "empleados_db.sqlite")# Definir el tibble/dataframe para la tabla de la base de datosdatos_historicos <-data.frame(id_empleado =c("001", "002", "003", "004"),anio =c(2022, 2023, 2022, 2023), monto_total_año =c(696000, 540000, 756000, 492000))# Escribir la tabla en la base de datosdbWriteTable(con, "empleados", datos_historicos, overwrite =TRUE)# Leer de vuelta usando una consulta SQL con WHEREresultado_query <-dbGetQuery(con, "SELECT * FROM empleados WHERE anio = 2023")# Mostrar el resultado de la consultaprint(resultado_query)
# Desconectar de la base de datosdbDisconnect(con)
Análisis
Este ejercicio práctico implementa un pipeline de ingeniería de datos de tres capas, el cual demuestra cómo R puede consolidar información dispersa al integrar fuentes planas (CSV), estructuradas (Excel multipestaña) y relacionales (SQLite). A través de este flujo, se resuelven desafíos críticos del mundo real como la preservación de metadatos (evitando la pérdida de ceros a la izquierda en los identificadores mediante la coerción de tipos), la unificación de históricos segmentados por años y el almacenamiento eficiente en bases de datos locales para consultas optimizadas mediante SQL.