semana05_AshleyMedina

Autor/a

Ashley Medina

Fecha de publicación

14 de junio de 2026

Código
# Cargar las librerías necesarias
library(readr)
library(readxl)
library(dplyr)
library(DBI)
library(RSQLite)

1 Parte 1 — Leer el CSV:

Código
# 1. Leer el archivo CSV especificando los tipos de columnas manuales
empleados_csv <- read_csv(
  "empleados.csv",
  col_types = cols(
    `ID-EMPLEADO` = col_character(),
    NOMBRE = col_character(),
    DEPARTAMENTO = col_character(),
    `SALARIO MENSUAL` = col_character(), # Se lee como texto temporal debido a la coma (ej: "58,000")
    `FECHA INGRESO` = col_date(format = "%m/%d/%Y") # Formato detectado: mes/día/año
  )
)

# 2. Limpieza de salarios y renombrado de columnas
empleados_csv <- empleados_csv %>%
  mutate(
    # Eliminar la coma del salario y transformarlo en un número real (double)
    salario_mensual = as.numeric(gsub(",", "", `SALARIO MENSUAL`))
  ) %>%
  rename(
    id_empleado = `ID-EMPLEADO`,
    nombre = NOMBRE,
    departamento = DEPARTAMENTO,
    fecha_ingreso = `FECHA INGRESO`
  ) %>%
  # Seleccionar y ordenar las columnas requeridas
  select(id_empleado, nombre, departamento, salario_mensual, fecha_ingreso)

# Verificar con glimpse que los tipos finales sean correctos
glimpse(empleados_csv)
Rows: 20
Columns: 5
$ id_empleado     <chr> "001", "002", "003", "004", "005", "006", "007", "008"…
$ nombre          <chr> "Ana Torres", "Pedro M\xe9ndez", "Mar\xeda L\xf3pez", …
$ departamento    <chr> "Tecnolog\xeda", "Auditor\xeda", "Tecnolog\xeda", "RRH…
$ 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-…

2 Parte 2 — Leer el Excel:

Código
# 1. Leer ambas pestañas (sheets) de empleados.xlsx
excel_2022 <- read_excel("empleados.xlsx", sheet = "2022")
excel_2023 <- read_excel("empleados.xlsx", sheet = "2023")

# 2. Mapear las columnas originales a minúsculas y forzar tipos de datos correctos
excel_2022_limpio <- excel_2022 %>%
  select(
    id_empleado = `ID-EMPLEADO`,
    nombre = NOMBRE,
    departamento = DEPARTAMENTO,
    salario_mensual = `SALARIO MENSUAL`,
    fecha_ingreso = `FECHA INGRESO`
  ) %>%
  mutate(
    id_empleado = as.character(id_empleado),
    fecha_ingreso = as.Date(fecha_ingreso)
  )

excel_2023_limpio <- excel_2023 %>%
  select(
    id_empleado = `ID-EMPLEADO`,
    nombre = NOMBRE,
    departamento = DEPARTAMENTO,
    salario_mensual = `SALARIO MENSUAL`,
    fecha_ingreso = `FECHA INGRESO`
  ) %>%
  mutate(
    id_empleado = as.character(id_empleado),
    fecha_ingreso = as.Date(fecha_ingreso)
  )

# 3. Combinar ambos años añadiendo la columna identificadora 'anio'
empleados_excel_total <- bind_rows(
  excel_2022_limpio %>% mutate(anio = 2022),
  excel_2023_limpio %>% mutate(anio = 2023)
)

# Mostrar una muestra de los datos combinados
head(empleados_excel_total)
# A tibble: 6 × 6
  id_empleado nombre         departamento salario_mensual fecha_ingreso  anio
  <chr>       <chr>          <chr>                  <dbl> <date>        <dbl>
1 001         Ana Torres     Tecnología             58000 2019-03-15     2022
2 002         Pedro Méndez   Auditoría              45000 2021-07-01     2022
3 003         María López    Tecnología             63000 2018-11-20     2022
4 004         Luis García    RRHH                   41000 2022-01-10     2022
5 005         Carmen Díaz    Auditoría              52000 2020-05-30     2022
6 006         Carlos Mendoza Tecnología             70000 2017-04-12     2022
Código
# 4. Calcular el promedio de salario por departamento usando group_by() + summarise()
promedio_departamento <- empleados_excel_total %>%
  group_by(departamento) %>%
  summarise(
    salario_promedio = mean(salario_mensual, na.rm = TRUE),
    total_empleados = n()
  )

# Mostrar la tabla resumen con los salarios promedio
promedio_departamento
# A tibble: 5 × 3
  departamento salario_promedio total_empleados
  <chr>                   <dbl>           <int>
1 Auditoría              48750                4
2 Finanzas               49000                3
3 RRHH                   40667.               3
4 Riesgo                 62250                4
5 Tecnología             63167.               6

3 Parte 3 — Conectar a SQLite:

Código
# 1. Crear o conectarse a una base de datos SQLite local
con <- dbConnect(RSQLite::SQLite(), "mi_base_datos.sqlite")

# 2. Preparar el tibble final calculando el salario total anual (salario mensual * 12)
tabla_sqlite <- empleados_excel_total %>%
  mutate(monto_total_año = salario_mensual * 12) %>%
  select(id_empleado, anio, monto_total_año)

# Escribir la tabla "empleados" dentro de la base de datos (sobrescribe si ya existía)
dbWriteTable(con, "empleados", tabla_sqlite, overwrite = TRUE)

# Listar las tablas disponibles en la base para certificar su creación
dbListTables(con)
[1] "empleados"
Código
# 3. Leer de regreso los datos filtrando únicamente el año 2023 con la cláusula WHERE
consulta_2023 <- dbGetQuery(con, "SELECT * FROM empleados WHERE anio = 2023")

# Mostrar el resultado obtenido de la consulta SQL
consulta_2023
   id_empleado anio monto_total_año
1          011 2023          732000
2          012 2023          564000
3          013 2023          636000
4          014 2023          660000
5          015 2023          804000
6          016 2023          612000
7          017 2023          504000
8          018 2023          552000
9          019 2023          864000
10         020 2023          696000
Código
# Desconectar de forma segura de la base de datos al concluir el proceso
dbDisconnect(con)