Code
library(tidyverse)Warning: package 'tidyverse' was built under R version 4.2.2
Warning: package 'ggplot2' was built under R version 4.2.3
Warning: package 'tibble' was built under R version 4.2.3
Warning: package 'tidyr' was built under R version 4.2.2
Warning: package 'purrr' was built under R version 4.2.2
Warning: package 'stringr' was built under R version 4.2.3
Warning: package 'forcats' was built under R version 4.2.2
Warning: package 'lubridate' was built under R version 4.2.2
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.2 ✔ tidyr 1.3.0
✔ purrr 1.0.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Code
# Asegurar BaseSal mínimo
if (!exists("BaseSal")) {
if (!exists("Salaries")) {
library(readxl)
Salaries <- readxl::read_excel(ruta_salaries)
}
BaseSal <- dplyr::select(Salaries, dplyr::any_of(c("rank","sex","yrs.service","salary")))
}
# Normalizamos nombres mínimos y detectamos antigüedad
names(BaseSal) <- names(BaseSal) |> tolower()
nombre_ant <- intersect(c("yrs.service","yrs_service","years_service"), names(BaseSal))
nombre_ant <- if (length(nombre_ant) == 1) nombre_ant else NA_character_