semana_05

1 - Leer el CSV:

Code
empleados_csv <- read_csv(
  "data/raw/empleados.csv",
  col_types = cols(
    id_empleado = col_character(),
    nombre = col_character(),
    departamento = col_character(),
    salario_mensual = col_double(),
    fecha_ingreso = col_date(),
  )
)
glimpse(empleados_csv)
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-…

2 - Leer el Excel:

Code
empleados_2022 <- read_excel("data/raw/empleados.xlsx",
                             sheet = "2022") %>%
  mutate(anio = 2022)  # todos los datos en esta columna seran del 2022 por mutate 

empleados_2023 <- read_excel("data/raw/empleados.xlsx", 
                             sheet = "2023",) %>%
  mutate(anio = 2023) # todos los datos en esta columna seran del 2023 por mutate  

empleados_excel <- bind_rows(empleados_2022, empleados_2023) 

glimpse(empleados_excel) # Al haber dos columnas llamadas "anio" solo una se imprime, pudiendo asi identificar de donde viene cada dato.
Rows: 14
Columns: 6
$ id_empleado     <chr> "001", "002", "003", "004", "005", "006", "007", "008"…
$ nombre          <chr> "Leonardo DiCaprio", "Robert Downey Jr.", "Tom Holland…
$ departamento    <chr> "Riesgo", "Riesgo", "Auditoría", "Finanzas", "Tecnolog…
$ salario_mensual <dbl> 59000, 61000, 47000, 53000, 55000, 67000, 51000, 58500…
$ fecha_ingreso   <dttm> 2022-01-08, 2022-02-17, 2022-04-03, 2022-06-25, 2022-…
$ anio            <dbl> 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2023, 2023, …
Code
promedio_salario <- empleados_excel %>% 
  group_by(departamento)%>%  # para agrupar jeje 
  summarise(
    total     = n(),  # hace referencia al numero total de empleados 
     promedio = mean(salario_mensual, na.rm = TRUE)  #na.rm sirve para que no se impriman los valores NA 
  ) |>
  arrange(desc(promedio)) # Ordena de mayor a menor 

print(promedio_salario)
# A tibble: 4 × 3
  departamento total promedio
  <chr>        <int>    <dbl>
1 Finanzas         2    62550
2 Tecnología       4    61075
3 Riesgo           4    60675
4 Auditoría        4    56350

3 - Conectar a SQLite:

Code
con <- dbConnect(RSQLite::SQLite(), "data/empleados.db") #para conectar a SQL 

empleados_tibble_sql <- tibble(
  id_empleado = c("001", "002", "003", "004"),
  anio = c(2022, 2022, 2023, 2023),
  monto_total_año = c(650000, 520000, 720000, 480000)
)

dbWriteTable(con, "empleados", empleados_tibble_sql, overwrite = TRUE) # para escribir el tibble a una nueva tabla 

rango_empleados_2023 <- dbGetQuery(con, 
  "SELECT * 
    FROM empleados -- empleados es el nombre que se le da a la tabla 
    WHERE anio = 2023 -- where sirve aqui para coger los datos en ese rango 
  ")

print(rango_empleados_2023) 
  id_empleado anio monto_total_año
1         003 2023          720000
2         004 2023          480000
Tip

Recomendable siempre usar dbDisconnect(con) al finalizar.

Code
dbDisconnect(con) # para desconectar