PUNTO 1 EXPLORACION, DIAGNOSTICO Y PREPARACION DE LOS DATOS

# Importar datos desde Excel
data <- read_excel("SalaryEducationJob.xlsx")

# Exploración inicial
str(data)
## tibble [6,704 × 6] (S3: tbl_df/tbl/data.frame)
##  $ Age                : num [1:6704] 32 28 45 36 52 29 42 31 26 38 ...
##  $ Gender             : chr [1:6704] "Male" "Female" "Male" "Female" ...
##  $ Education Level    : chr [1:6704] "Bachelor's" "Master's" "PhD" "Bachelor's" ...
##  $ Job Title          : chr [1:6704] "Software Engineer" "Data Analyst" "Senior Manager" "Sales Associate" ...
##  $ Years of Experience: chr [1:6704] "5" "3" "15" "7" ...
##  $ Salary             : num [1:6704] 90000 65000 150000 60000 200000 55000 120000 80000 45000 110000 ...
summary(data)
##       Age              Gender      Education Level     Job Title   
##  Min.   :21.00   Length   :6704   Length   :6704   Length   :6704  
##  1st Qu.:28.00   N.unique :   3   N.unique :   7   N.unique : 193  
##  Median :32.00   N.blank  :   0   N.blank  :   0   N.blank  :   0  
##  Mean   :33.62   Min.nchar:   4   Min.nchar:   3   Min.nchar:   3  
##  3rd Qu.:38.00   Max.nchar:   6   Max.nchar:  17   Max.nchar:  37  
##  Max.   :62.00   NAs      :   2   NAs      :   3   NAs      :   2  
##  NAs    :2                                                         
##  Years of Experience     Salary      
##  Length   :6704      Min.   :   350  
##  N.unique :  37      1st Qu.: 70000  
##  N.blank  :   0      Median :115000  
##  Min.nchar:   1      Mean   :115327  
##  Max.nchar:   3      3rd Qu.:160000  
##  NAs      :   3      Max.   :250000  
##                      NAs    :5
nrow(data); ncol(data)
## [1] 6704
## [1] 6
# Valores perdidos
colSums(is.na(data))
##                 Age              Gender     Education Level           Job Title 
##                   2                   2                   3                   2 
## Years of Experience              Salary 
##                   3                   5
# Observaciones duplicadas
duplicated_rows <- data[duplicated(data), ]
nrow(duplicated_rows)
## [1] 4912
# Homologar categorías de educación
data$`Education Level` <- recode(data$`Education Level`,
                               "Bachelor's" = "Bachillerato",
                               "Master's"   = "Maestría",
                               "PhD"        = "Doctorado")

# Eliminar filas vacías y duplicadas
data <- data %>% drop_na() %>% distinct()

CONCLUSION: La base contenía duplicados y registros incompletos. Se homologaron las categorías de educación y se eliminaron duplicados y valores perdidos para obtener una base limpia.

PUNTO 2 CAACTERIZACIÓN GENERAL DE LOS RABAJADORES

# Crear grupos de edad
data$GrupoEdad <- cut(data$Age,
                      breaks = c(20,29,39,49,100),
                      labels = c("21-29","30-39","40-49","50+"),
                      right = TRUE)
data$`Years of Experience` <- as.numeric(data$`Years of Experience`)
# Crear grupos de experiencia
data$GrupoExp <- cut(data$`Years of Experience`,
                     breaks = c(-1,2,5,10,20,100),
                     labels = c("0-2","3-5","6-10","11-20","20+"),
                     right = TRUE)

# Tabla descriptiva
vars <- c("Age","Gender","Education Level","Years of Experience","Salary")
tab <- CreateTableOne(vars = vars, data = data)
print(tab)
##                                  
##                                   Overall             
##   n                                    1787           
##   Age (mean (SD))                     35.14 (8.21)    
##   Gender (%)                                          
##      Female                             814 (45.6)    
##      Male                               966 (54.1)    
##      Other                                7 ( 0.4)    
##   Education Level (%)                                 
##      Bachelor's Degree                  506 (28.3)    
##      Bachillerato                       262 (14.7)    
##      Doctorado                          340 (19.0)    
##      High School                        110 ( 6.2)    
##      Maestría                           122 ( 6.8)    
##      Master's Degree                    446 (25.0)    
##      phD                                  1 ( 0.1)    
##   Years of Experience (mean (SD))      9.16 (6.84)    
##   Salary (mean (SD))              113184.66 (51596.54)

Conclusión:
La mayoría de trabajadores están entre 30 y 39 años, con experiencia de 3 a 10 años. Los salarios tienden a subir con la experiencia y el nivel educativo. Los hombres predominan en cargos directivos con salarios altos, mientras que las mujeres aparecen más en áreas administrativas.

PUNTO 3 ANALISIS DE LA DISTRIBUCION SALARIAL

# Estadísticos básicos
summary(data$Salary)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     350   70000  110000  113185  160000  250000
sd(data$Salary)
## [1] 51596.54
quantile(data$Salary, probs = c(0.25,0.5,0.75,0.9))
##    25%    50%    75%    90% 
##  70000 110000 160000 185000
# Histograma
ggplot(data, aes(x=Salary)) +
  geom_histogram(binwidth=10000, fill="skyblue", color="black") +
  labs(title="Distribución de salarios", x="Salario", y="Frecuencia")

# Boxplot por grupo de edad
ggplot(data, aes(x=GrupoEdad, y=Salary)) +
  geom_boxplot(fill="lightgreen") +
  labs(title="Salarios por grupo de edad", x="Grupo de Edad", y="Salario")

Conclusión:
La distribución salarial es asimétrica hacia la derecha, con valores extremos en altos cargos. La media es mayor que la mediana, lo que confirma la influencia de salarios muy altos. Los outliers reflejan casos reales de ejecutivos y especialistas, por lo que no se recomienda eliminarlos. Los grupos de mayor edad y experiencia concentran los salarios más altos.