#file.choose()
bajas<-read.csv("/Users/elenavela/Downloads/bajas.csv")str(bajas)## 'data.frame': 233 obs. of 11 variables:
## $ NOMBRE.COMPLETO : chr "MARIO VALDEZ ORTIZ" "ISABEL BARRIOS MENDEZ" "MARIA ELIZABETH GOMEZ HERNANDEZ" "ALONDRA ABIGAIL ESCARCIA GOMEZ" ...
## $ EDAD : int 32 36 23 21 29 46 29 31 50 19 ...
## $ GENERO : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ FECHA.DE.ALTA : chr "9/3/2020" "9/11/2021" "10/11/2021" "10/11/2021" ...
## $ MOTIVO.DE.BAJA : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ DÍAS.DE.DURACIÓN : int 628 60 59 59 51 37 37 31 18 224 ...
## $ BAJA : chr "27/11/21" "08/01/22" "08/01/22" "08/01/22" ...
## $ PUESTO : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ SALARIO.DIARIO.IMSS: num 500 152 152 152 152 ...
## $ ESTADO : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ ESTADO.CIVIL : chr "Soltero" "Unión libre" "Matrimonio" "Soltero" ...
234 regsitros y 13 variables
Técnica 4, CONVERTIR TIPO DE DATOS
summary(bajas)## NOMBRE.COMPLETO EDAD GENERO FECHA.DE.ALTA
## Length:233 Min. :18.00 Length:233 Length:233
## Class :character 1st Qu.:23.00 Class :character Class :character
## Mode :character Median :29.00 Mode :character Mode :character
## Mean :30.77
## 3rd Qu.:37.00
## Max. :61.00
##
## MOTIVO.DE.BAJA DÍAS.DE.DURACIÓN BAJA PUESTO
## Length:233 Min. : 0.00 Length:233 Length:233
## Class :character 1st Qu.: 9.00 Class :character Class :character
## Mode :character Median : 20.50 Mode :character Mode :character
## Mean : 78.84
## 3rd Qu.: 48.25
## Max. :1966.00
## NA's :13
## SALARIO.DIARIO.IMSS ESTADO ESTADO.CIVIL
## Min. :144.4 Length:233 Length:233
## 1st Qu.:180.7 Class :character Class :character
## Median :180.7 Mode :character Mode :character
## Mean :177.9
## 3rd Qu.:180.7
## Max. :500.0
##
Convertir de carácter a fecha
bajas2<-bajas
bajas2$FECHA.DE.ALTA<-as.Date(bajas2$FECHA.DE.ALTA,format="%d/%m/%Y")
str(bajas2)## 'data.frame': 233 obs. of 11 variables:
## $ NOMBRE.COMPLETO : chr "MARIO VALDEZ ORTIZ" "ISABEL BARRIOS MENDEZ" "MARIA ELIZABETH GOMEZ HERNANDEZ" "ALONDRA ABIGAIL ESCARCIA GOMEZ" ...
## $ EDAD : int 32 36 23 21 29 46 29 31 50 19 ...
## $ GENERO : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ FECHA.DE.ALTA : Date, format: "2020-03-09" "2021-11-09" ...
## $ MOTIVO.DE.BAJA : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ DÍAS.DE.DURACIÓN : int 628 60 59 59 51 37 37 31 18 224 ...
## $ BAJA : chr "27/11/21" "08/01/22" "08/01/22" "08/01/22" ...
## $ PUESTO : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ SALARIO.DIARIO.IMSS: num 500 152 152 152 152 ...
## $ ESTADO : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ ESTADO.CIVIL : chr "Soltero" "Unión libre" "Matrimonio" "Soltero" ...
Convertir de carácter a entero
bajas3<-bajas2
bajas3$EDAD<-as.integer(bajas3$EDAD)
str(bajas3)## 'data.frame': 233 obs. of 11 variables:
## $ NOMBRE.COMPLETO : chr "MARIO VALDEZ ORTIZ" "ISABEL BARRIOS MENDEZ" "MARIA ELIZABETH GOMEZ HERNANDEZ" "ALONDRA ABIGAIL ESCARCIA GOMEZ" ...
## $ EDAD : int 32 36 23 21 29 46 29 31 50 19 ...
## $ GENERO : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ FECHA.DE.ALTA : Date, format: "2020-03-09" "2021-11-09" ...
## $ MOTIVO.DE.BAJA : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ DÍAS.DE.DURACIÓN : int 628 60 59 59 51 37 37 31 18 224 ...
## $ BAJA : chr "27/11/21" "08/01/22" "08/01/22" "08/01/22" ...
## $ PUESTO : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ SALARIO.DIARIO.IMSS: num 500 152 152 152 152 ...
## $ ESTADO : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ ESTADO.CIVIL : chr "Soltero" "Unión libre" "Matrimonio" "Soltero" ...
Técnica 1, REMOVER DATOS IRRELEVANTES
Eliminar columnas
bajas4<-bajas3
bajas4<-subset(bajas4,select=-c(BAJA))
summary(bajas4)## NOMBRE.COMPLETO EDAD GENERO FECHA.DE.ALTA
## Length:233 Min. :18.00 Length:233 Min. :0016-10-12
## Class :character 1st Qu.:23.00 Class :character 1st Qu.:0022-02-18
## Mode :character Median :29.00 Mode :character Median :0022-05-18
## Mean :30.77 Mean :0339-09-15
## 3rd Qu.:37.00 3rd Qu.:0022-07-19
## Max. :61.00 Max. :2022-07-11
##
## MOTIVO.DE.BAJA DÍAS.DE.DURACIÓN PUESTO SALARIO.DIARIO.IMSS
## Length:233 Min. : 0.00 Length:233 Min. :144.4
## Class :character 1st Qu.: 9.00 Class :character 1st Qu.:180.7
## Mode :character Median : 20.50 Mode :character Median :180.7
## Mean : 78.84 Mean :177.9
## 3rd Qu.: 48.25 3rd Qu.:180.7
## Max. :1966.00 Max. :500.0
## NA's :13
## ESTADO ESTADO.CIVIL
## Length:233 Length:233
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
Técnica 5, VALORES FALTANTES
¿Cuántos NA tengo por variable?
sapply(bajas4,function(x) sum(is.na(x)))## NOMBRE.COMPLETO EDAD GENERO FECHA.DE.ALTA
## 0 0 0 0
## MOTIVO.DE.BAJA DÍAS.DE.DURACIÓN PUESTO SALARIO.DIARIO.IMSS
## 0 13 0 0
## ESTADO ESTADO.CIVIL
## 0 0
Reemplazar NAs por mediana
bajas5<-bajas4
bajas5$DÍAS.DE.DURACIÓN[is.na(bajas5$DÍAS.DE.DURACIÓN)]<- median(bajas5$DÍAS.DE.DURACIÓN, na.rm=TRUE)¿Cuántos NA tengo por variable?
sapply(bajas5,function(x) sum(is.na(x)))## NOMBRE.COMPLETO EDAD GENERO FECHA.DE.ALTA
## 0 0 0 0
## MOTIVO.DE.BAJA DÍAS.DE.DURACIÓN PUESTO SALARIO.DIARIO.IMSS
## 0 0 0 0
## ESTADO ESTADO.CIVIL
## 0 0
Reemplazar NA por mediana
bajas6<-bajas5
bajas6$SALARIO.DIARIO.IMSS[is.na(bajas6$SALARIO.DIARIO.IMSS)]<- median(bajas6$SALARIO.DIARIO.IMSS, na.rm=TRUE)¿Cuántos NA tengo por variable?
sapply(bajas6,function(x) sum(is.na(x)))## NOMBRE.COMPLETO EDAD GENERO FECHA.DE.ALTA
## 0 0 0 0
## MOTIVO.DE.BAJA DÍAS.DE.DURACIÓN PUESTO SALARIO.DIARIO.IMSS
## 0 0 0 0
## ESTADO ESTADO.CIVIL
## 0 0
Exportar nueva base de datos (limpia)
bajas_limpia<-bajas6
write.csv(bajas_limpia, file ="bajas_limpia.csv", row.names = FALSE)str(bajas6)## 'data.frame': 233 obs. of 10 variables:
## $ NOMBRE.COMPLETO : chr "MARIO VALDEZ ORTIZ" "ISABEL BARRIOS MENDEZ" "MARIA ELIZABETH GOMEZ HERNANDEZ" "ALONDRA ABIGAIL ESCARCIA GOMEZ" ...
## $ EDAD : int 32 36 23 21 29 46 29 31 50 19 ...
## $ GENERO : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ FECHA.DE.ALTA : Date, format: "2020-03-09" "2021-11-09" ...
## $ MOTIVO.DE.BAJA : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ DÍAS.DE.DURACIÓN : num 628 60 59 59 51 37 37 31 18 224 ...
## $ PUESTO : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ SALARIO.DIARIO.IMSS: num 500 152 152 152 152 ...
## $ ESTADO : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ ESTADO.CIVIL : chr "Soltero" "Unión libre" "Matrimonio" "Soltero" ...
234 registros y 10 variables
| Variable | Type |
|---|---|
Nombre completo |
Cualitativa |
Edad |
Cuantitativa (discreta) |
Género |
Cualitativa |
Fecha de alta |
Cuantitativa (continua) |
Motivo de baja |
Cualitativa |
Días de duración |
Cuantitativa (discreta) |
Puesto |
Cualitativa |
Salario diario IMSS |
Cuantitativa (discreta) |
Estado |
Cualitativa |
Estado civil |
Cualitativa |
| Variable | Medicion |
|---|---|
Nombre completo |
No aplica |
Edad |
Años |
Género |
No aplica |
Fecha de alta |
Días |
Motivo de baja |
No aplica |
Días de duración |
Días |
Puesto |
No aplica |
Salario diario IMSS |
Pesos mexicanos |
Estado |
No aplica |
Estado civil |
No aplica |
#install.packages("epiDisplay")
library(epiDisplay)## Loading required package: foreign
## Loading required package: survival
## Loading required package: MASS
## Loading required package: nnet
Tabla de frecuencia y gráfica de datos CUALITATIVOS: Puesto
En esta observamos que lo que más se tiene en Form es el puesto de ayudante general, por mucho.
puesto<-table(bajas6$PUESTO)
knitr::kable(puesto)| Var1 | Freq |
|---|---|
| ANALISTA DE NOMINAS /AUX DE R.H. | 1 |
| AUXILIAR DE EMBARQUES | 3 |
| AY. GENERAL | 4 |
| AY.GENERAL (MATERIALES) | 1 |
| AYUD.EMBARQUES | 1 |
| AYUDANTE DE EMBARQUES | 3 |
| AYUDANTE DE MTTO | 1 |
| AYUDANTE DE SOLDADOR | 1 |
| AYUDANTE GENERAL | 171 |
| AYUDANTE GENERAL DE EMBARQUES | 1 |
| CHOFER | 1 |
| CORTADOR | 1 |
| COSTURERA | 10 |
| COSTURERO | 1 |
| DISEÑO | 1 |
| ENCARGADA DE CALIDAD | 1 |
| FACTURACION | 1 |
| GUARDIA DE SEGURIDAD | 2 |
| INSPECTOR CALIDAD | 1 |
| INSPECTOR DE CALIDAD | 2 |
| INSPECTORA DE CALIDAD | 1 |
| LIMPIEZA | 1 |
| MARCADORA | 1 |
| MATERIALISTA | 2 |
| MONTACARGUISTA | 5 |
| PRACTICANTE DE MTTO | 1 |
| RESIDENTE | 2 |
| Residente Yanfeng | 1 |
| SERVICIO AL CLIENTE | 1 |
| SOLDADOR | 10 |
Tabla de frecuencia y gráfica de datos CUALITATIVOS: Motivo de bajas
En el siguiente análisis estadístico notamos cuales son las principales razones, y las que menos, por las que los empleados de Form salen. Principalmente vemos que es por la BAJA POR FALTAS, siguiendo por RENUNCIA VOLUNTARIA. Las que menos vemos son por jubilación y “abandono”.
motivo<-table(bajas6$MOTIVO.DE.BAJA)
knitr::kable(motivo)| Var1 | Freq |
|---|---|
| ABANDONO | 1 |
| BAJA POR FALTAS | 139 |
| JUBILACION | 1 |
| RENUNCIA VOLUNTARIA | 84 |
| TERMINO DE CONTRATO | 8 |
pie(prop.table(table(bajas6$MOTIVO.DE.BAJA)),col=c("orange","blue","green","red"),main="Motivo de bajas",las=1)Comprendemos que la mayor cantidad de las personas que salen son solteras, y las personas que están en matrimonio o en unión libre tienen casi la misma tendencia a salir.
civil<-table(bajas6$ESTADO.CIVIL)
knitr::kable(civil)| Var1 | Freq |
|---|---|
| 1 | |
| Divorcio | 3 |
| Matrimonio | 63 |
| Soltero | 107 |
| Unión libre | 59 |
tab1(bajas6$ESTADO.CIVIL,sort.group = FALSE,graph=TRUE)## bajas6$ESTADO.CIVIL :
## Frequency Percent Cum. percent
## 1 0.4 0.4
## Divorcio 3 1.3 1.7
## Matrimonio 63 27.0 28.8
## Soltero 107 45.9 74.7
## Unión libre 59 25.3 100.0
## Total 233 100.0 100.0
La gran parte de los que salen son de Nuevo León.
estado<-table(bajas6$ESTADO)
knitr::kable(estado)| Var1 | Freq |
|---|---|
| Coahuila | 8 |
| Nuevo León | 225 |
tab1(bajas6$ESTADO,sort.group = FALSE,graph=TRUE)## bajas6$ESTADO :
## Frequency Percent Cum. percent
## Coahuila 8 3.4 3.4
## Nuevo León 225 96.6 100.0
## Total 233 100.0 100.0
De las personas que salen de la empresa, la edad lleva un sesgo positivo, la mayoría de los que salen se concentran en las edades más jóvenes, aproximadamente entre los 20 y los 30.
hist((bajas6$EDAD),col=c("orange"),main="Edad",xlab="Años",ylab="Frecuencia")En cuanto a los días que duran las personas que bajan, observemaos que muchos no duran ni siguiera el año, al estar la gran mayoría en menos de los 250 días dentro de Form. La antigüedad es poca.
hist((bajas6$DÍAS.DE.DURACIÓN),col=c("yellow"),main="Días de duración",xlab="Días",ylab="Frecuencia")El salario no ve muchas diferencias, al estar la gran parte entre los 150 y los 200 pesos diarios.
hist((bajas6$SALARIO.DIARIO.IMSS),col=c("blue"),main="Salario diario",xlab="Pesos",ylab="Frecuencia")Observamos que existe una mayor tendencia en que las personas que salgan sean mujeres.
pie(prop.table(table(bajas6$GENERO)),col=c("pink","blue"),main="Género",las=1)En cuanto a la relación y la dispersión entre los días de duración y la edad, vemos que la edad no influye mucho en los días que duran, puesto que vemos casi la misma frecuencia de duración entre las diferentes edades. Existeen algunos casos que se salen de los “común” al haber durado mucho.
plot(bajas6$EDAD,bajas6$DÍAS.DE.DURACIÓN, main = "Días de duración y edad",
pch = 19, frame = FALSE,col=c("orange"))