library(dplyr)
library(plyr)
library(ggplot2)
library(naniar)
library(Hmisc)
library(psych)
library(tidyverse)
library(janitor)
library(knitr)
library(pollster)
setwd("C:\\Users\\javaw\\OneDrive - Instituto Tecnologico y de Estudios Superiores de Monterrey\\7mo Semestre\\Reto")
dperf<-read.csv("Del Perf.csv")
dplan<-read.csv("DP_1.csv")
rh<-read.csv("RH.csv")
rh2<-read.csv("RH2.csv")
Analiza las bases de datos y responde lo siguiente:
La base de datos Delivery Performance tiene 7 variables y 2392 registros.
describe(dperf)
## vars n mean sd median trimmed mad min max range
## Cliente* 1 2392 2.75 1.09 2.5 2.81 1.48 1.00 4.0 3.00
## VUELTAS 2 2392 1.75 0.83 1.5 1.69 0.74 1.00 3.0 2.00
## FECHA* 3 2392 150.00 86.33 150.0 150.00 111.19 1.00 299.0 298.00
## Plan.Arrival 4 2392 6.21 7.42 0.0 5.27 0.00 0.00 20.0 20.00
## Real.Arrival 5 2392 4.30 6.77 0.0 2.88 0.00 0.00 23.5 23.50
## Real.Departure 6 2392 4.65 7.23 0.0 3.20 0.00 0.00 24.5 24.50
## Diference 7 2392 0.35 0.79 0.0 0.26 0.00 -14.35 20.0 34.35
## skew kurtosis se
## Cliente* -0.07 -1.44 0.02
## VUELTAS 0.49 -1.37 0.02
## FECHA* 0.00 -1.20 1.77
## Plan.Arrival 0.73 -0.96 0.15
## Real.Arrival 1.33 0.38 0.14
## Real.Departure 1.26 0.17 0.15
## Diference 2.62 230.35 0.02
dim(dperf)
## [1] 2392 7
La base de datos Recursos Humanos:Bajas tiene 25 variables y 238 registros.
describe(rh)
## vars n mean sd median trimmed mad min max
## ï..APELLIDOS* 1 238 114.72 66.04 113.50 114.54 83.77 1.00 230
## NOMBRE* 2 238 110.46 63.55 110.50 110.47 80.80 1.00 221
## FECHA.DE.NACIMIENTO* 3 238 117.53 67.54 117.50 117.54 86.73 1.00 234
## GENERO* 4 238 3.39 0.52 3.00 3.39 0.00 1.00 4
## RFC* 5 238 117.84 67.88 117.50 117.81 86.73 1.00 235
## FECHA.DE.ALTA* 6 238 71.88 38.42 68.00 72.26 45.96 1.00 141
## MOTIVO.DE.BAJA* 7 238 2.83 1.04 2.00 2.76 0.00 1.00 5
## X 8 213 79.71 224.98 19.00 31.18 19.27 0.00 1966
## BAJA* 9 238 46.84 28.59 49.00 47.07 35.58 1.00 96
## PUESTO* 10 238 12.31 6.49 10.00 10.92 0.00 1.00 32
## DEPARTAMENTO* 11 238 13.78 11.60 12.00 13.48 16.31 1.00 31
## NO.SEGURO.SOCIAL* 12 238 117.15 67.60 117.50 117.18 85.99 1.00 234
## SALARIO.DIARIO.IMSS 13 236 177.96 23.26 180.68 179.14 0.00 144.45 500
## FACTOR.CRED.INFONAVIT* 14 238 17.22 4.99 19.00 18.77 0.00 1.00 19
## NÂ..CREDITO.INFONAVIT* 15 238 18.16 5.18 20.00 19.77 0.00 1.00 20
## LUGAR.DE.NACIMIENTO* 16 238 53.92 25.89 53.00 55.95 33.36 1.00 97
## CURP* 17 238 116.85 67.88 116.50 116.81 86.73 1.00 234
## CALLE* 18 238 101.98 56.11 111.50 102.94 65.98 1.00 197
## NUMERO.INTERNO* 19 238 83.23 51.53 84.50 82.84 63.75 1.00 175
## COLONIA* 20 238 58.43 27.09 73.00 60.30 25.20 1.00 99
## CODIGO.POSTAL* 21 238 15.00 4.07 14.00 15.10 0.00 1.00 26
## MUNICIPIO* 22 238 8.28 1.96 9.00 8.79 0.00 1.00 12
## ESTADO* 23 238 26.49 10.79 23.00 26.15 4.45 1.00 50
## ESTADO.CIVIL* 24 238 7.19 3.28 7.00 7.37 4.45 1.00 12
## TARJETA....CUENTA* 25 238 1.99 0.18 2.00 2.00 0.00 1.00 3
## range skew kurtosis se
## ï..APELLIDOS* 229.00 0.02 -1.19 4.28
## NOMBRE* 220.00 0.00 -1.20 4.12
## FECHA.DE.NACIMIENTO* 233.00 0.00 -1.21 4.38
## GENERO* 3.00 -0.10 -0.02 0.03
## RFC* 234.00 0.00 -1.21 4.40
## FECHA.DE.ALTA* 140.00 -0.02 -1.08 2.49
## MOTIVO.DE.BAJA* 4.00 0.49 -1.51 0.07
## X 1966.00 5.65 35.86 15.42
## BAJA* 95.00 -0.04 -1.24 1.85
## PUESTO* 31.00 1.97 3.05 0.42
## DEPARTAMENTO* 30.00 0.10 -1.73 0.75
## NO.SEGURO.SOCIAL* 233.00 -0.01 -1.20 4.38
## SALARIO.DIARIO.IMSS 355.55 11.05 152.94 1.51
## FACTOR.CRED.INFONAVIT* 18.00 -2.65 5.38 0.32
## NÂ..CREDITO.INFONAVIT* 19.00 -2.68 5.60 0.34
## LUGAR.DE.NACIMIENTO* 96.00 -0.63 -0.56 1.68
## CURP* 233.00 0.00 -1.22 4.40
## CALLE* 196.00 -0.18 -1.19 3.64
## NUMERO.INTERNO* 174.00 0.03 -1.18 3.34
## COLONIA* 98.00 -0.63 -0.88 1.76
## CODIGO.POSTAL* 25.00 -0.32 1.77 0.26
## MUNICIPIO* 11.00 -2.20 3.63 0.13
## ESTADO* 49.00 0.43 0.30 0.70
## ESTADO.CIVIL* 11.00 -0.46 -1.14 0.21
## TARJETA....CUENTA* 2.00 -1.22 26.39 0.01
dim(rh)
## [1] 238 25
La base de datos Recursos Humanos:Colaboradores tiene 26 variables y 122 registros. Si bien las funciones dicen que tiene 27, la última está totalmente vacía por lo que hay que eliminarla más adelante.
describe(rh2)
## vars n mean sd median trimmed
## ï..No..De.Empleado 1 92 56.88 40.06 48.50 53.68
## APELLIDOS* 2 122 51.30 33.32 49.50 50.88
## NOMBRE* 3 122 51.33 33.13 51.50 51.14
## FECHA.DE.NACIMIENTO* 4 122 53.80 34.89 53.50 53.50
## GENERO* 5 122 2.35 0.62 2.00 2.41
## RFC* 6 122 53.80 34.89 53.50 53.50
## FECHA.DE.ALTA* 7 122 43.85 28.60 46.00 43.61
## Primer.mes* 8 122 43.47 28.49 45.50 43.14
## X4to.mes* 9 122 43.66 28.37 43.00 43.35
## BAJA 10 13 3.00 0.00 3.00 3.00
## PUESTO* 11 122 8.86 8.07 5.00 7.51
## DEPARTAMENTO* 12 122 8.52 7.79 6.00 7.88
## NO.SEGURO.SOCIAL* 13 122 52.87 34.78 52.50 52.50
## SALARIO.DIARIO.IMSS 14 113 13461612.46 142678701.96 180.68 177.09
## FACTOR.CRED.INFONAVIT* 15 122 3.91 2.44 6.00 4.01
## NÂ..CREDITO.INFONAVIT* 16 122 3.91 2.44 6.00 4.01
## LUGAR.DE.NACIMIENTO* 17 122 14.34 13.52 11.00 13.22
## CURP* 18 122 53.80 34.89 53.50 53.50
## CALLE* 19 122 50.00 31.74 50.50 49.88
## NUMERO.INTERNO* 20 122 31.38 26.87 28.50 29.62
## COLONIA* 21 122 37.52 21.63 43.50 38.04
## MUNICIPIO* 22 122 3.39 2.39 2.00 3.01
## ESTADO* 23 122 5.11 1.53 6.00 5.48
## CODIGO.POSTAL 24 113 63364.74 11201.89 66646.00 66622.84
## ESTADO.CIVIL* 25 122 6.22 3.57 7.00 6.12
## TARJETA....CUENTA* 26 122 2.02 0.42 2.00 2.00
## X 27 0 NaN NA NA NaN
## mad min max range skew kurtosis
## ï..No..De.Empleado 40.77 1.00 148 147 0.60 -0.67
## APELLIDOS* 42.25 1.00 110 109 0.08 -1.24
## NOMBRE* 42.25 1.00 108 107 0.01 -1.28
## FECHA.DE.NACIMIENTO* 45.22 1.00 114 113 0.04 -1.27
## GENERO* 0.74 1.00 3 2 -0.38 -0.70
## RFC* 45.22 1.00 114 113 0.04 -1.27
## FECHA.DE.ALTA* 37.81 1.00 94 93 0.01 -1.27
## Primer.mes* 37.81 1.00 94 93 0.02 -1.25
## X4to.mes* 37.81 1.00 94 93 0.03 -1.23
## BAJA 0.00 3.00 3 0 NaN NaN
## PUESTO* 1.48 1.00 30 29 1.44 0.67
## DEPARTAMENTO* 7.41 1.00 22 21 0.41 -1.49
## NO.SEGURO.SOCIAL* 45.22 1.00 113 112 0.05 -1.28
## SALARIO.DIARIO.IMSS 0.00 144.45 1516728571 1516728427 10.35 106.05
## FACTOR.CRED.INFONAVIT* 0.00 1.00 6 5 -0.33 -1.88
## NÂ..CREDITO.INFONAVIT* 0.00 1.00 6 5 -0.33 -1.88
## LUGAR.DE.NACIMIENTO* 14.83 1.00 42 41 0.40 -1.35
## CURP* 45.22 1.00 114 113 0.04 -1.27
## CALLE* 40.03 1.00 105 104 -0.01 -1.25
## NUMERO.INTERNO* 40.03 1.00 80 79 0.29 -1.36
## COLONIA* 21.50 1.00 74 73 -0.31 -1.17
## MUNICIPIO* 0.00 1.00 10 9 1.24 0.22
## ESTADO* 0.00 1.00 6 5 -1.79 1.83
## CODIGO.POSTAL 4.45 25016.00 67493 42477 -3.06 7.42
## ESTADO.CIVIL* 4.45 1.00 12 11 0.18 -1.23
## TARJETA....CUENTA* 0.00 1.00 3 2 0.17 2.70
## X NA Inf -Inf -Inf NA NA
## se
## ï..No..De.Empleado 4.18
## APELLIDOS* 3.02
## NOMBRE* 3.00
## FECHA.DE.NACIMIENTO* 3.16
## GENERO* 0.06
## RFC* 3.16
## FECHA.DE.ALTA* 2.59
## Primer.mes* 2.58
## X4to.mes* 2.57
## BAJA 0.00
## PUESTO* 0.73
## DEPARTAMENTO* 0.70
## NO.SEGURO.SOCIAL* 3.15
## SALARIO.DIARIO.IMSS 13422083.24
## FACTOR.CRED.INFONAVIT* 0.22
## NÂ..CREDITO.INFONAVIT* 0.22
## LUGAR.DE.NACIMIENTO* 1.22
## CURP* 3.16
## CALLE* 2.87
## NUMERO.INTERNO* 2.43
## COLONIA* 1.96
## MUNICIPIO* 0.22
## ESTADO* 0.14
## CODIGO.POSTAL 1053.79
## ESTADO.CIVIL* 0.32
## TARJETA....CUENTA* 0.04
## X NA
dim(rh2)
## [1] 122 27
La base de datos Delivery Plan tiene variables y registros.
#count(dplan, CLIENTE.PLANTA, sort = TRUE)
#count(dplan, PROYECTO, sort = TRUE)
#count(dplan, ID.ODOO, sort = TRUE)
#count(dplan, ITEM, sort = TRUE)
Delivery Performance
str(dperf)
## 'data.frame': 2392 obs. of 7 variables:
## $ Cliente : chr "PRINTEL " "MAHLE" "MAHLE" "MAHLE" ...
## $ VUELTAS : int 1 1 2 3 1 1 2 3 1 1 ...
## $ FECHA : chr "22/07/2021" "22/07/2021" "22/07/2021" "22/07/2021" ...
## $ Plan.Arrival : int 16 8 9 20 0 0 0 0 16 8 ...
## $ Real.Arrival : num 0 8 9 20 0 0 0 0 16.3 8 ...
## $ Real.Departure: num 0 8.55 10 21.1 0 0 0 0 18.1 8.5 ...
## $ Diference : num 0 0.55 1 1.1 0 0 0 0 1.8 0.5 ...
Variable<-c("`Cliente`","`Vueltas`","`Fecha`","`Plan Arrival`", "`Real Arrival`", "`Real Departure`","`Difference `")
Type<-c("qualitative (nominal)", "quantiative (discrete)", "quantitative (continous)", "quantitative (discrete)","quantitative (continuos)","quantitative (continuos)","quantitative (continuos)")
table<-data.frame(Variable,Type)
knitr::kable(table)
| Variable | Type |
|---|---|
Cliente |
qualitative (nominal) |
Vueltas |
quantiative (discrete) |
Fecha |
quantitative (continous) |
Plan Arrival |
quantitative (discrete) |
Real Arrival |
quantitative (continuos) |
Real Departure |
quantitative (continuos) |
Difference |
quantitative (continuos) |
Recursos Humanos:Bajas
clean_names(rh)
summary(rh)
## ï..APELLIDOS NOMBRE FECHA.DE.NACIMIENTO GENERO
## Length:238 Length:238 Length:238 Length:238
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## RFC FECHA.DE.ALTA MOTIVO.DE.BAJA X
## Length:238 Length:238 Length:238 Min. : 0.00
## Class :character Class :character Class :character 1st Qu.: 9.00
## Mode :character Mode :character Mode :character Median : 19.00
## Mean : 79.71
## 3rd Qu.: 49.00
## Max. :1966.00
## NA's :25
## BAJA PUESTO DEPARTAMENTO NO.SEGURO.SOCIAL
## Length:238 Length:238 Length:238 Length:238
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## SALARIO.DIARIO.IMSS FACTOR.CRED.INFONAVIT NÂ..CREDITO.INFONAVIT
## Min. :144.4 Length:238 Length:238
## 1st Qu.:180.7 Class :character Class :character
## Median :180.7 Mode :character Mode :character
## Mean :178.0
## 3rd Qu.:180.7
## Max. :500.0
## NA's :2
## LUGAR.DE.NACIMIENTO CURP CALLE NUMERO.INTERNO
## Length:238 Length:238 Length:238 Length:238
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## COLONIA CODIGO.POSTAL MUNICIPIO ESTADO
## Length:238 Length:238 Length:238 Length:238
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## ESTADO.CIVIL TARJETA....CUENTA
## Length:238 Length:238
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
Al observar la base de datos, podemos notar que varias variables no poseen su clase correcta, sin embargo, no todas serán consideradas para realizar análisis por lo que dejaremos su corrección para el futuro.
Variablerh<-c("`ï..APELLIDOS`","`NOMBRE`","`FECHA.DE.NACIMIENTO`","`GENERO`", "`RFC`", "`FECHA.DE.ALTA`","`MOTIVO.DE.BAJA`","`X`","`BAJA`","`PUESTO`","`DEPARTAMENTO`","`NO.SEGURO.SOCIAL`","`SALARIO.DIARIO.IMSS`","`FACTOR.CRED.INFONAVIT`","`NÂ..CREDITO.INFONAVIT`","`LUGAR.DE.NACIMIENTO`","`CURP`","`CALLE`")
Typerh<-c("qualitative (nominal)", "qualitative (nominal)", "quantitative (continous)", "qualitative (nominal)","qualitative (nominal)","quantitative (continous)", "qualitative (nominal)", "quantitative (discrete)","qualitative (nominal)","qualitative (nominal)","qualitative (nominal)","quantitative (discrete)","quantitative (continuos)","quantitative (continuos)","quantitative (discrete)", "qualitative (nominal)", "qualitative (nominal)", "qualitative (nominal)")
tablerh<-data.frame(Variablerh,Typerh)
knitr::kable(tablerh)
| Variablerh | Typerh |
|---|---|
ï..APELLIDOS |
qualitative (nominal) |
NOMBRE |
qualitative (nominal) |
FECHA.DE.NACIMIENTO |
quantitative (continous) |
GENERO |
qualitative (nominal) |
RFC |
qualitative (nominal) |
FECHA.DE.ALTA |
quantitative (continous) |
MOTIVO.DE.BAJA |
qualitative (nominal) |
X |
quantitative (discrete) |
BAJA |
qualitative (nominal) |
PUESTO |
qualitative (nominal) |
DEPARTAMENTO |
qualitative (nominal) |
NO.SEGURO.SOCIAL |
quantitative (discrete) |
SALARIO.DIARIO.IMSS |
quantitative (continuos) |
FACTOR.CRED.INFONAVIT |
quantitative (continuos) |
NÂ..CREDITO.INFONAVIT |
quantitative (discrete) |
LUGAR.DE.NACIMIENTO |
qualitative (nominal) |
CURP |
qualitative (nominal) |
CALLE |
qualitative (nominal) |
Recursos Humanos: Colaboradores
clean_names(rh2)
summary(rh2)
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO
## Min. : 1.00 Length:122 Length:122 Length:122
## 1st Qu.: 24.75 Class :character Class :character Class :character
## Median : 48.50 Mode :character Mode :character Mode :character
## Mean : 56.88
## 3rd Qu.: 82.00
## Max. :148.00
## NA's :30
## GENERO RFC FECHA.DE.ALTA Primer.mes
## Length:122 Length:122 Length:122 Length:122
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## X4to.mes BAJA PUESTO DEPARTAMENTO
## Length:122 Min. :3 Length:122 Length:122
## Class :character 1st Qu.:3 Class :character Class :character
## Mode :character Median :3 Mode :character Mode :character
## Mean :3
## 3rd Qu.:3
## Max. :3
## NA's :109
## NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS FACTOR.CRED.INFONAVIT
## Length:122 Min. :1.440e+02 Length:122
## Class :character 1st Qu.:1.770e+02 Class :character
## Mode :character Median :1.810e+02 Mode :character
## Mean :1.346e+07
## 3rd Qu.:1.810e+02
## Max. :1.517e+09
## NA's :9
## NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO CURP
## Length:122 Length:122 Length:122
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## CALLE NUMERO.INTERNO COLONIA MUNICIPIO
## Length:122 Length:122 Length:122 Length:122
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## ESTADO CODIGO.POSTAL ESTADO.CIVIL TARJETA....CUENTA
## Length:122 Min. :25016 Length:122 Length:122
## Class :character 1st Qu.:66640 Class :character Class :character
## Mode :character Median :66646 Mode :character Mode :character
## Mean :63365
## 3rd Qu.:66649
## Max. :67493
## NA's :9
## X
## Mode:logical
## NA's:122
##
##
##
##
##
Variablerhc<-c("`ï..No..De.Empleado`","`APELLIDOS`","`NOMBRE`","`FECHA.DE.NACIMIENTO`", "`GENERO`","`RFC`","`FECHA.DE.ALTA`","`Primer.mes`","`X4to.mes`","`BAJA`","`PUESTO`","`DEPARTAMENTO`","`NO.SEGURO.SOCIAL`","`SALARIO.DIARIO.IMSS`","`FACTOR.CRED.INFONAVIT`","`NÂ..CREDITO.INFONAVIT`","`LUGAR.DE.NACIMIENTO`","`CURP`","`CALLE`")
Typerhc<-c("qualitative (nominal)", "qualitative (nominal)","qualitative (nominal)", "quantitative (continous)","qualitative (nominal)","qualitative (nominal)","quantitative (continous)","quantitative (continous)","quantitative (continous)","quantiative (discrete)","qualitative (nominal)","qualitative (nominal)","quantitative (discrete)","quantitative (continuos)","quantitative (continuos)","quantitative (discrete)", "qualitative (nominal)", "qualitative (nominal)", "qualitative (nominal)")
tablerhc<-data.frame(Variablerhc,Typerhc)
knitr::kable(tablerhc)
| Variablerhc | Typerhc |
|---|---|
ï..No..De.Empleado |
qualitative (nominal) |
APELLIDOS |
qualitative (nominal) |
NOMBRE |
qualitative (nominal) |
FECHA.DE.NACIMIENTO |
quantitative (continous) |
GENERO |
qualitative (nominal) |
RFC |
qualitative (nominal) |
FECHA.DE.ALTA |
quantitative (continous) |
Primer.mes |
quantitative (continous) |
X4to.mes |
quantitative (continous) |
BAJA |
quantiative (discrete) |
PUESTO |
qualitative (nominal) |
DEPARTAMENTO |
qualitative (nominal) |
NO.SEGURO.SOCIAL |
quantitative (discrete) |
SALARIO.DIARIO.IMSS |
quantitative (continuos) |
FACTOR.CRED.INFONAVIT |
quantitative (continuos) |
NÂ..CREDITO.INFONAVIT |
quantitative (discrete) |
LUGAR.DE.NACIMIENTO |
qualitative (nominal) |
CURP |
qualitative (nominal) |
CALLE |
qualitative (nominal) |
Delivery Plan
summary(dplan)
## ï..CLIENTE.PLANTA PROYECTO ID.ODOO ITEM
## Length:231 Length:231 Length:231 Length:231
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## JUNIO JULIO AGOSTO SEPTIEMBRE
## Min. : 0.00 Min. : 0.0 Min. : 0.00 Min. : 0
## 1st Qu.: 0.00 1st Qu.: 0.0 1st Qu.: 0.00 1st Qu.: 0
## Median : 0.00 Median : 0.0 Median : 0.00 Median : 0
## Mean : 29.06 Mean : 135.9 Mean : 77.45 Mean : 81
## 3rd Qu.: 0.00 3rd Qu.: 0.0 3rd Qu.: 0.00 3rd Qu.: 0
## Max. :1280.00 Max. :13120.0 Max. :3200.00 Max. :3200
## OCTUBRE NOVIEMBRE DICIEMBRE ene.22
## Min. : 0.0 Min. : 0.00 Min. : 0.0 Min. : 0.00
## 1st Qu.: 0.0 1st Qu.: 0.00 1st Qu.: 0.0 1st Qu.: 0.00
## Median : 0.0 Median : 0.00 Median : 0.0 Median : 0.00
## Mean : 62.0 Mean : 89.69 Mean : 100.4 Mean : 82.37
## 3rd Qu.: 11.5 3rd Qu.: 4.00 3rd Qu.: 1.5 3rd Qu.: 26.50
## Max. :3200.0 Max. :6400.00 Max. :6400.0 Max. :3200.00
## feb.22 mar.22 abr.22 may.22
## Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.0
## 1st Qu.: 0.0 1st Qu.: 0.0 1st Qu.: 0.0 1st Qu.: 0.0
## Median : 0.0 Median : 0.0 Median : 0.0 Median : 0.0
## Mean : 103.5 Mean : 153.9 Mean : 186.5 Mean : 187.6
## 3rd Qu.: 0.0 3rd Qu.: 20.0 3rd Qu.: 24.0 3rd Qu.: 22.0
## Max. :9600.0 Max. :9600.0 Max. :16354.0 Max. :17665.0
## jun.22 jul.22 ago.22 sep.22
## Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.0
## 1st Qu.: 0.0 1st Qu.: 0.0 1st Qu.: 0.0 1st Qu.: 0.0
## Median : 0.0 Median : 0.0 Median : 0.0 Median : 0.0
## Mean : 171.2 Mean : 316.9 Mean : 131.5 Mean : 272.3
## 3rd Qu.: 1.0 3rd Qu.: 15.5 3rd Qu.: 0.0 3rd Qu.: 0.0
## Max. :11050.0 Max. :25900.0 Max. :13200.0 Max. :29379.0
## OCTUBRE.22 nov.22 dic.22 ene.23
## Min. : 0.0 Min. : 0.000 Min. : 0.000 Min. : 0.0000
## 1st Qu.: 0.0 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000
## Median : 0.0 Median : 0.000 Median : 0.000 Median : 0.0000
## Mean : 120.9 Mean : 2.113 Mean : 1.225 Mean : 0.5974
## 3rd Qu.: 0.0 3rd Qu.: 0.000 3rd Qu.: 0.000 3rd Qu.: 0.0000
## Max. :16421.0 Max. :324.000 Max. :276.000 Max. :138.0000
## feb.23 mar.23 TOTAL.MESES
## Min. :0 Min. :0 Min. : 0
## 1st Qu.:0 1st Qu.:0 1st Qu.: 16
## Median :0 Median :0 Median : 115
## Mean :0 Mean :0 Mean : 2306
## 3rd Qu.:0 3rd Qu.:0 3rd Qu.: 724
## Max. :0 Max. :0 Max. :136754
Variable<-c("PROYECTO","ID.ODOO", "ITEM", "CLIENTE.PLANTA","ENERO.22", "FEBRERO.22","MARZO.22","ABRIL.22","MAYO.22","JUNIO.22","JULIO.22","AGOSTO.22","SEPTIEMBRE.22","OCTUBRE.22","NOVIEMBRE.22","DICIEMBRE.22", "ENERO.23", "FEBRERO.23", "MARZO.23")
Tipo<-c("Cualitative", "Cualitative", "Cualitative", "Cualitative", "quantiative (discrete)", "quantiative (discrete)", "quantitative (discrete)", "quantitative (discrete)", "quantitative (discrete)", "quantitative (discrete)", "quantitative (discrete)", "quantitative (discrete)","quantitative (discrete)","quantitative (discrete)","quantitative (discrete)","quantitative (discrete)","quantitative (discrete)","quantitative (discrete)","quantitative (discrete)")
table<-data.frame(Variable,Tipo)
knitr::kable(table)
| Variable | Tipo |
|---|---|
| PROYECTO | Cualitative |
| ID.ODOO | Cualitative |
| ITEM | Cualitative |
| CLIENTE.PLANTA | Cualitative |
| ENERO.22 | quantiative (discrete) |
| FEBRERO.22 | quantiative (discrete) |
| MARZO.22 | quantitative (discrete) |
| ABRIL.22 | quantitative (discrete) |
| MAYO.22 | quantitative (discrete) |
| JUNIO.22 | quantitative (discrete) |
| JULIO.22 | quantitative (discrete) |
| AGOSTO.22 | quantitative (discrete) |
| SEPTIEMBRE.22 | quantitative (discrete) |
| OCTUBRE.22 | quantitative (discrete) |
| NOVIEMBRE.22 | quantitative (discrete) |
| DICIEMBRE.22 | quantitative (discrete) |
| ENERO.23 | quantitative (discrete) |
| FEBRERO.23 | quantitative (discrete) |
| MARZO.23 | quantitative (discrete) |
Variable<-c("PROYECTO","ID.ODOO", "ITEM", "CLIENTE.PLANTA","ENERO.22", "FEBRERO.22","MARZO.22","ABRIL.22","MAYO.22","JUNIO.22","JULIO.22","AGOSTO.22","SEPTIEMBRE.22","OCTUBRE.22","NOVIEMBRE.22","DICIEMBRE.22", "ENERO.23", "FEBRERO.23", "MARZO.23")
Escala<-c("nominal", "nominal", "nominal", "nominal", "razon", "razon", "razon", "razon", "razon", "razon", "razon", "razon","razon","razon","razon","razon","razon","razon","razon")
table<-data.frame(Variable,Escala)
knitr::kable(table)
| Variable | Escala |
|---|---|
| PROYECTO | nominal |
| ID.ODOO | nominal |
| ITEM | nominal |
| CLIENTE.PLANTA | nominal |
| ENERO.22 | razon |
| FEBRERO.22 | razon |
| MARZO.22 | razon |
| ABRIL.22 | razon |
| MAYO.22 | razon |
| JUNIO.22 | razon |
| JULIO.22 | razon |
| AGOSTO.22 | razon |
| SEPTIEMBRE.22 | razon |
| OCTUBRE.22 | razon |
| NOVIEMBRE.22 | razon |
| DICIEMBRE.22 | razon |
| ENERO.23 | razon |
| FEBRERO.23 | razon |
| MARZO.23 | razon |
En la base de datos Recursos Humanos: Colaboradores encontramos un salario diario exhorbitante. Por lo que hay que limpiar este error. Además de convertir la variable de character a numeric.
rh2$SALARIO.DIARIO.IMSS<-format(rh2$SALARIO.DIARIO.IMSS, scientific = FALSE)
rh2$SALARIO.DIARIO.IMSS<-as.numeric(rh2$SALARIO.DIARIO.IMSS)
## Warning: NAs introducidos por coerción
unique(rh2$SALARIO.DIARIO.IMSS) %>% format(rh2$SALARIO.DIARIO.IMSS, scientific = FALSE)
## [1] "176.72" "337.05" "4413757.00" "260.01"
## [5] "240.75" "152.86" "175.79" "144.45"
## [9] "279.61" "151.67" "208.65" "240.71"
## [13] "1516728571.00" "151.61" "180.68" "181.68"
## [17] "184.68" "185.68" "NA"
Para limpiarlo, primero identificamos el registro con este error.
rh2[rh2$SALARIO.DIARIO.IMSS == 1516728571.00, ]
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO
## 26 27 AGUILERA RODRIGUEZ JAIME ERNESTO 21/02/1969
## NA NA <NA> <NA> <NA>
## NA.1 NA <NA> <NA> <NA>
## NA.2 NA <NA> <NA> <NA>
## NA.3 NA <NA> <NA> <NA>
## NA.4 NA <NA> <NA> <NA>
## NA.5 NA <NA> <NA> <NA>
## NA.6 NA <NA> <NA> <NA>
## NA.7 NA <NA> <NA> <NA>
## NA.8 NA <NA> <NA> <NA>
## GENERO RFC FECHA.DE.ALTA Primer.mes X4to.mes BAJA
## 26 MASCULINO AURJ6902215X8 08/08/2020 07/09/2020 06/12/2020 NA
## NA <NA> <NA> <NA> <NA> <NA> NA
## NA.1 <NA> <NA> <NA> <NA> <NA> NA
## NA.2 <NA> <NA> <NA> <NA> <NA> NA
## NA.3 <NA> <NA> <NA> <NA> <NA> NA
## NA.4 <NA> <NA> <NA> <NA> <NA> NA
## NA.5 <NA> <NA> <NA> <NA> <NA> NA
## NA.6 <NA> <NA> <NA> <NA> <NA> NA
## NA.7 <NA> <NA> <NA> <NA> <NA> NA
## NA.8 <NA> <NA> <NA> <NA> <NA> NA
## PUESTO DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS
## 26 AYUDANTE GENERAL Producción Retorn 43896946522 1516728571
## NA <NA> <NA> <NA> NA
## NA.1 <NA> <NA> <NA> NA
## NA.2 <NA> <NA> <NA> NA
## NA.3 <NA> <NA> <NA> NA
## NA.4 <NA> <NA> <NA> NA
## NA.5 <NA> <NA> <NA> NA
## NA.6 <NA> <NA> <NA> NA
## NA.7 <NA> <NA> <NA> NA
## NA.8 <NA> <NA> <NA> NA
## FACTOR.CRED.INFONAVIT NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO
## 26
## NA <NA> <NA> <NA>
## NA.1 <NA> <NA> <NA>
## NA.2 <NA> <NA> <NA>
## NA.3 <NA> <NA> <NA>
## NA.4 <NA> <NA> <NA>
## NA.5 <NA> <NA> <NA>
## NA.6 <NA> <NA> <NA>
## NA.7 <NA> <NA> <NA>
## NA.8 <NA> <NA> <NA>
## CURP CALLE NUMERO.INTERNO COLONIA
## 26 AURJ690221HNLGDM07 PUERTO CABELLO 655A LOS PUERTOS 2° SECTOR
## NA <NA> <NA> <NA> <NA>
## NA.1 <NA> <NA> <NA> <NA>
## NA.2 <NA> <NA> <NA> <NA>
## NA.3 <NA> <NA> <NA> <NA>
## NA.4 <NA> <NA> <NA> <NA>
## NA.5 <NA> <NA> <NA> <NA>
## NA.6 <NA> <NA> <NA> <NA>
## NA.7 <NA> <NA> <NA> <NA>
## NA.8 <NA> <NA> <NA> <NA>
## MUNICIPIO ESTADO CODIGO.POSTAL ESTADO.CIVIL TARJETA....CUENTA X
## 26 JUAREZ Nuevo León 67267 Casado BANORTE NA
## NA <NA> <NA> NA <NA> <NA> NA
## NA.1 <NA> <NA> NA <NA> <NA> NA
## NA.2 <NA> <NA> NA <NA> <NA> NA
## NA.3 <NA> <NA> NA <NA> <NA> NA
## NA.4 <NA> <NA> NA <NA> <NA> NA
## NA.5 <NA> <NA> NA <NA> <NA> NA
## NA.6 <NA> <NA> NA <NA> <NA> NA
## NA.7 <NA> <NA> NA <NA> <NA> NA
## NA.8 <NA> <NA> NA <NA> <NA> NA
Podemos observar que su puesto es Ayudante general y que está en el departamento de Producción Retorno. Al observar registros con el mismo puesto y departamento, podemos observar que tres colaboradores tienen un salario de 151.61, y el salario equivocado es de 1516728571.00, por lo que podríamos asumir ha sido un error de dedo y el salario correcto es 151.61, por lo que optamos por remplazarlo por este valor.
filter(rh2, DEPARTAMENTO == "Producción Retorn")
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO
## 1 8 TOVAR PEREZ PEDRO ISAI 10/12/1996
## 2 11 GUERRERO TENORIO VICENTE 06/05/1964
## 3 27 AGUILERA RODRIGUEZ JAIME ERNESTO 21/02/1969
## 4 38 HERNANDEZ FELIX BRISEIDA 28/12/1996
## 5 42 CHAPAN MARCIAL ERNESTINA 11/11/1969
## 6 50 GARCIA GONZALEZ LUIS DANIEL 25/10/2001
## 7 63 HERNANDEZ HERNANDEZ LUIS GERARDO 11/06/2003
## 8 72 ZAMARRON PUENTES JESSICA LOURDES 18/02/1983
## 9 NA DELGADO JERONIMO RAFAEL 21/01/2002
## 10 NA CRUZ RAMOS JOSUE FRANCISCO 22/09/1988
## GENERO RFC FECHA.DE.ALTA Primer.mes X4to.mes BAJA
## 1 MASCULINO TOPP961210989 23/08/2016 22/09/2016 21/12/2016 NA
## 2 MASCULINO GUTV9405066TA 26/08/2017 25/09/2017 24/12/2017 NA
## 3 MASCULINO AURJ6902215X8 08/08/2020 07/09/2020 06/12/2020 NA
## 4 FEMENINO HEFB961228G86 25/03/2021 24/04/2021 23/07/2021 NA
## 5 FEMENINO CAME691111HCA 27/05/2021 26/06/2021 24/09/2021 NA
## 6 MASCULINO GAGL011025IG2 27/11/2021 27/12/2021 27/03/2022 NA
## 7 MASCULINO HEHL030611453 23/02/2022 25/03/2022 23/06/2022 NA
## 8 FEMENINO ZAPJ830218LZ9 03/05/2022 02/06/2022 31/08/2022 NA
## 9 MASCULINO DEJR020121FM6 03/08/2022 03/09/2022 03/12/2022 NA
## 10 MASCULINO CURJ880922KM4 03/08/2022 03/09/2022 03/12/2022 NA
## PUESTO DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS
## 1 AYUDANTE GENERAL Producción Retorn 43129645503 2.407500e+02
## 2 AYUDANTE GENERAL Producción Retorn 43129495305 1.757900e+02
## 3 AYUDANTE GENERAL Producción Retorn 43896946522 1.516729e+09
## 4 AY. GENERAL Producción Retorn 32169692806 1.516100e+02
## 5 AY. GENERAL Producción Retorn 0 2166991287 1.516100e+02
## 6 AYUDANTE GENERAL Producción Retorn 44190106417 1.516100e+02
## 7 AYUDANTE GENERAL Producción Retorn 54170325234 1.806800e+02
## 8 AYUDANTE GENERAL Producción Retorn 43998316194 1.806800e+02
## 9 AYUDANTE GENERAL Producción Retorn 10180275660 1.806800e+02
## 10 AYUDANTE GENERAL Producción Retorn 02 228859076 1.806800e+02
## FACTOR.CRED.INFONAVIT NÂ..CREDITO.INFONAVIT
## 1
## 2
## 3
## 4
## 5
## 6 N/A N/A
## 7 N/A N/A
## 8 N/A N/A
## 9 N/A N/A
## 10 N/A N/A
## LUGAR.DE.NACIMIENTO CURP CALLE
## 1 TOPP961210HNLVRD07 RIO ACAPONETA
## 2 GUTV940506HVZRNC04 AGUSTIN LARA
## 3 AURJ690221HNLGDM07 PUERTO CABELLO
## 4 HEFB961228MSPRLR08 ANTONIO AGUILAR
## 5 CAME691111MVZHRR02 VISTAS DEL RIO
## 6 MIGUEL HIDALGO CIUDAD DE MEXICO GAGL011025HDFRNSA5 PINOS
## 7 MONTERREY, NUEVO LEON HEHL030611HNLRRSA3 RIO TISZA
## 8 MONTERREY, NUEVO LEON ZAPJ830218MNLMNS04 HUNGAROS
## 9 SAN NICOLAS DE LOS GARZA, NUEVO LEON DEJR020121HNLLRFA3 RIO PASTAZA
## 10 HONDURAS, SANTA BARBARA CURJ880922HNERMS05 RIO AMAZONAS
## NUMERO.INTERNO COLONIA MUNICIPIO ESTADO
## 1 PUEBLO NUEVO 5TO SECTOR APODACA Nuevo León
## 2 CANTORAL PESQUERIA Nuevo León
## 3 655A LOS PUERTOS 2° SECTOR JUAREZ Nuevo León
## 4 564 CANTORAL 3 APODACA COAHUILA
## 5 134 VISTAS DEL RIO JUAREZ NUEVO LEON
## 6 618 CAÑADA BLANCA CAÑADA BLANCA GUADALUPE N.L.
## 7 818 PUEBLO NUEVO APODACA NUEVO LEON
## 8 130 ROBERTO ESPINOZA APODACA NUEVO LEON
## 9 800 PUEBLO NUEVO APODACA NUEVO LEON
## 10 146 PUEBLO NUEVO APODACA NUEVO LEON
## CODIGO.POSTAL ESTADO.CIVIL TARJETA....CUENTA X
## 1 66649 Casado BANORTE NA
## 2 66673 Soltero BANORTE NA
## 3 67267 Casado BANORTE NA
## 4 66673 SOLTERA SANTANDER NA
## 5 67267 SOLTERA SANTANDER NA
## 6 67114 SOLTERO BANORTE NA
## 7 66646 SOLTERO BANORTE NA
## 8 66648 UNION LIBRE BANORTE NA
## 9 66646 SOLTERO BANORTE NA
## 10 66646 SOLTERO BANORTE NA
rh2$SALARIO.DIARIO.IMSS[rh2$NOMBRE == "JAIME ERNESTO"] <- 151.61
unique(rh2$SALARIO.DIARIO.IMSS)
## [1] 176.72 337.05 4413757.00 260.01 240.75 152.86
## [7] 175.79 144.45 279.61 151.67 208.65 240.71
## [13] 151.61 180.68 181.68 184.68 185.68 NA
El segundo salario equivocado es de 4413757.00. Repetimos el mismo procedimiento. Primero identificamos el registro.
rh2[rh2$SALARIO.DIARIO.IMSS == 4413757.00, ]
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO GENERO
## 5 5 LOPEZ RAMOS YOLANDA 06/09/1965 FEMENINO
## NA NA <NA> <NA> <NA> <NA>
## NA.1 NA <NA> <NA> <NA> <NA>
## NA.2 NA <NA> <NA> <NA> <NA>
## NA.3 NA <NA> <NA> <NA> <NA>
## NA.4 NA <NA> <NA> <NA> <NA>
## NA.5 NA <NA> <NA> <NA> <NA>
## NA.6 NA <NA> <NA> <NA> <NA>
## NA.7 NA <NA> <NA> <NA> <NA>
## NA.8 NA <NA> <NA> <NA> <NA>
## RFC FECHA.DE.ALTA Primer.mes X4to.mes BAJA PUESTO
## 5 LORY650906DBA 05/05/2014 04/06/2014 02/09/2014 NA SUPERVISORA
## NA <NA> <NA> <NA> <NA> NA <NA>
## NA.1 <NA> <NA> <NA> <NA> NA <NA>
## NA.2 <NA> <NA> <NA> <NA> NA <NA>
## NA.3 <NA> <NA> <NA> <NA> NA <NA>
## NA.4 <NA> <NA> <NA> <NA> NA <NA>
## NA.5 <NA> <NA> <NA> <NA> NA <NA>
## NA.6 <NA> <NA> <NA> <NA> NA <NA>
## NA.7 <NA> <NA> <NA> <NA> NA <NA>
## NA.8 <NA> <NA> <NA> <NA> NA <NA>
## DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS FACTOR.CRED.INFONAVIT
## 5 Costura 43836531525 4413757
## NA <NA> <NA> NA <NA>
## NA.1 <NA> <NA> NA <NA>
## NA.2 <NA> <NA> NA <NA>
## NA.3 <NA> <NA> NA <NA>
## NA.4 <NA> <NA> NA <NA>
## NA.5 <NA> <NA> NA <NA>
## NA.6 <NA> <NA> NA <NA>
## NA.7 <NA> <NA> NA <NA>
## NA.8 <NA> <NA> NA <NA>
## NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO CURP CALLE
## 5 LORY650906MNLPML08 BETANZOS
## NA <NA> <NA> <NA> <NA>
## NA.1 <NA> <NA> <NA> <NA>
## NA.2 <NA> <NA> <NA> <NA>
## NA.3 <NA> <NA> <NA> <NA>
## NA.4 <NA> <NA> <NA> <NA>
## NA.5 <NA> <NA> <NA> <NA>
## NA.6 <NA> <NA> <NA> <NA>
## NA.7 <NA> <NA> <NA> <NA>
## NA.8 <NA> <NA> <NA> <NA>
## NUMERO.INTERNO COLONIA MUNICIPIO ESTADO CODIGO.POSTAL
## 5 RINCON DE GALICIA APODACA Nuevo León 66620
## NA <NA> <NA> <NA> <NA> NA
## NA.1 <NA> <NA> <NA> <NA> NA
## NA.2 <NA> <NA> <NA> <NA> NA
## NA.3 <NA> <NA> <NA> <NA> NA
## NA.4 <NA> <NA> <NA> <NA> NA
## NA.5 <NA> <NA> <NA> <NA> NA
## NA.6 <NA> <NA> <NA> <NA> NA
## NA.7 <NA> <NA> <NA> <NA> NA
## NA.8 <NA> <NA> <NA> <NA> NA
## ESTADO.CIVIL TARJETA....CUENTA X
## 5 Soltero BANORTE NA
## NA <NA> <NA> NA
## NA.1 <NA> <NA> NA
## NA.2 <NA> <NA> NA
## NA.3 <NA> <NA> NA
## NA.4 <NA> <NA> NA
## NA.5 <NA> <NA> NA
## NA.6 <NA> <NA> NA
## NA.7 <NA> <NA> NA
## NA.8 <NA> <NA> NA
Ahora hay que identificar puestos similares en el mismo departamento.
filter(rh2, DEPARTAMENTO == "Costura")
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO
## 1 5 LOPEZ RAMOS YOLANDA 06/09/1965
## 2 7 PERALTA MARTINEZ ARACELY 01/07/1967
## 3 26 GARCIA CARRIZALES MA DEL CARMEN 03/02/1978
## 4 30 MENDOZA NAVARRO ADELAIDA 16/12/1979
## 5 31 BARRON RAMOS BLANCA OLIVIA 29/06/1969
## 6 43 VAZQUEZ CEPEDA JOSE ALFREDO 28/08/1963
## 7 51 NATIVIDAD MARTINEZ MARCIANA 04/01/1967
## GENERO RFC FECHA.DE.ALTA Primer.mes X4to.mes BAJA PUESTO
## 1 FEMENINO LORY650906DBA 05/05/2014 04/06/2014 02/09/2014 NA SUPERVISORA
## 2 FEMENINO PEMA6707017U2 06/08/2015 05/09/2015 04/12/2015 NA COSTURERA
## 3 FEMENINO GACM780203JT9 07/04/2020 07/05/2020 05/08/2020 NA COSTURERA
## 4 FEMENINO MENA791216NF0 26/08/2020 25/09/2020 24/12/2020 NA COSTURERA
## 5 FEMENINO BARB690629HF9 28/08/2020 27/09/2020 26/12/2020 NA COSTURERA
## 6 MASCULINO VACA630828F84 12/08/2021 11/09/2021 10/12/2021 NA COSTURERA
## 7 FEMENINO NAMM670104G81 06/12/2021 05/01/2022 05/04/2022 NA COSTURERA
## DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS FACTOR.CRED.INFONAVIT
## 1 Costura 43836531525 4413757.00
## 2 Costura 3876700802 260.01
## 3 Costura 43007814338 240.71
## 4 Costura 47967919706 176.72
## 5 Costura 43076902675 176.72
## 6 Costura 43806306155 176.72 N/A
## 7 Costura 0 2186770489 176.72 N/A
## NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO CURP
## 1 LORY650906MNLPML08
## 2 PEMA670701MNLRRR02
## 3 GACC780203MTSRRR03
## 4 MENA791216MNLNVD00
## 5 BARB690629MNLRML15
## 6 N/A TERMINAL DE PROVIDENCIA - ZACATECAS VXCA630828HZSZPL02
## 7 N/A VERACRUZ NAMM670104MVZTRR00
## CALLE NUMERO.INTERNO COLONIA MUNICIPIO ESTADO
## 1 BETANZOS RINCON DE GALICIA APODACA Nuevo León
## 2 ALAMO TEMBLON ALAMOS DEL PARQUE APODACA Nuevo León
## 3 RIO LEMPA PUEBLO NUEVO APODACA Nuevo León
## 4 BLANCA 306 LOS CANDILES APODACA Nuevo León
## 5 RIO SENA 107 PUEBLO NUEVO APODACA Nuevo León
## 6 SECRETARIOS 825 LA ALIANZA SECTOR C MONTERREY NUEVO LEON
## 7 TAJIN 509 LA JOYA GUADALUPE NUEVO LEON
## CODIGO.POSTAL ESTADO.CIVIL TARJETA....CUENTA X
## 1 66620 Soltero BANORTE NA
## 2 66633 Casado BANORTE NA
## 3 66646 Union Libre BANORTE NA
## 4 66647 CASADA BANORTE NA
## 5 66646 Casado BANORTE NA
## 6 64103 DIVORCIADO SANTANDER NA
## 7 67160 CASADA BANORTE NA
En este caso, es el único registro con ese puesto en el departamento, por lo tanto identificaremos puestos similares pero en diversos departamentos.
filter(rh2, PUESTO == "SUPERVISORA")
## ï..No..De.Empleado APELLIDOS NOMBRE FECHA.DE.NACIMIENTO GENERO
## 1 4 CAZARES MORALES MARIA 01/05/1990 FEMENINO
## 2 5 LOPEZ RAMOS YOLANDA 06/09/1965 FEMENINO
## RFC FECHA.DE.ALTA Primer.mes X4to.mes BAJA PUESTO
## 1 CAMM9005019S8 30/01/2013 01/03/2013 30/05/2013 NA SUPERVISORA
## 2 LORY650906DBA 05/05/2014 04/06/2014 02/09/2014 NA SUPERVISORA
## DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS
## 1 Produccion Cartón MC 43089001317 337.05
## 2 Costura 43836531525 4413757.00
## FACTOR.CRED.INFONAVIT NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO
## 1
## 2
## CURP CALLE NUMERO.INTERNO COLONIA MUNICIPIO
## 1 CAMM900501MVZZRR00 RIO ACAPONETA PUEBLO NUEVO APODACA
## 2 LORY650906MNLPML08 BETANZOS RINCON DE GALICIA APODACA
## ESTADO CODIGO.POSTAL ESTADO.CIVIL TARJETA....CUENTA X
## 1 Nuevo León 66649 Casado BANORTE NA
## 2 Nuevo León 66620 Soltero BANORTE NA
Hemos identificado solo un registro más con el mismo puesto, por lo que optaremos por asignar el mismo salario al registro con el salario elevado.
rh2$SALARIO.DIARIO.IMSS[rh2$NOMBRE == "YOLANDA"] <- 337.05
unique(rh2$SALARIO.DIARIO.IMSS)
## [1] 176.72 337.05 260.01 240.75 152.86 175.79 144.45 279.61 151.67 208.65
## [11] 240.71 151.61 180.68 181.68 184.68 185.68 NA
Al observar los tipos de variables de Delivery Performance podemos notar que la fecha está como character y debería estar como fecha. Por lo tanto, hay que modificarla.
dperf2<-dperf
dperf2$FECHA<-as.Date(dperf2$FECHA, format ="%d/%m/%Y")
str(dperf2)
## 'data.frame': 2392 obs. of 7 variables:
## $ Cliente : chr "PRINTEL " "MAHLE" "MAHLE" "MAHLE" ...
## $ VUELTAS : int 1 1 2 3 1 1 2 3 1 1 ...
## $ FECHA : Date, format: "2021-07-22" "2021-07-22" ...
## $ Plan.Arrival : int 16 8 9 20 0 0 0 0 16 8 ...
## $ Real.Arrival : num 0 8 9 20 0 0 0 0 16.3 8 ...
## $ Real.Departure: num 0 8.55 10 21.1 0 0 0 0 18.1 8.5 ...
## $ Diference : num 0 0.55 1 1.1 0 0 0 0 1.8 0.5 ...
Así mismo, en ambas bases de datos de Recursos Humanos hemos identificado el mismo error.
rh2_2<-rh2
rh2_2$FECHA.DE.ALTA<-as.Date(rh2_2$FECHA.DE.ALTA, format ="%d/%m/%Y")
rh2_2$FECHA.DE.NACIMIENTO<-as.Date(rh2_2$FECHA.DE.NACIMIENTO, format ="%d/%m/%Y")
rh2_2$Primer.mes<-as.Date(rh2_2$Primer.mes, format ="%d/%m/%Y")
rh2_2$X4to.mes<-as.Date(rh2_2$X4to.mes, format ="%d/%m/%Y")
str(rh2_2$FECHA.DE.ALTA)
## Date[1:122], format: "2010-07-01" "2011-07-01" "2011-11-22" "2013-01-30" "2014-05-05" ...
str(rh2_2$FECHA.DE.NACIMIENTO)
## Date[1:122], format: "1955-09-10" "1979-05-14" "1949-11-21" "1990-05-01" "1965-09-06" ...
str(rh2_2$Primer.mes)
## Date[1:122], format: "2010-07-31" "2011-07-31" NA "2013-03-01" "2014-06-04" "2014-08-02" ...
str(rh2_2$X4to.mes)
## Date[1:122], format: "2010-10-29" "2011-10-29" NA "2013-05-30" "2014-09-02" "2014-10-31" ...
rh_baja<-rh
rh_baja$FECHA.DE.ALTA<-as.Date(rh_baja$FECHA.DE.ALTA, format ="%d/%m/%Y")
rh_baja$FECHA.DE.NACIMIENTO<-as.Date(rh_baja$FECHA.DE.NACIMIENTO, format ="%d/%m/%Y")
rh_baja$BAJA<-as.Date(rh_baja$BAJA, format ="%d/%m/%Y")
str(rh_baja$FECHA.DE.ALTA)
## Date[1:238], format: "2020-03-09" "2021-11-09" "2021-11-10" "2021-11-10" "2021-11-18" ...
str(rh_baja$FECHA.DE.NACIMIENTO)
## Date[1:238], format: "1990-06-24" "1986-07-11" "1999-01-29" "2001-06-11" "1993-01-28" ...
str(rh_baja$BAJA)
## Date[1:238], format: "2021-11-27" "2022-01-08" "2022-01-08" "2022-01-08" "2022-01-08" ...
Que no vayamos a utilizar todas las variables para nuestra exploración de datos no significa que eliminemos las columnas que no nos sirven. Sin embargo, en la base de datos de Recursos Humanos: Colaboradores hay una columna extra al final con valores vacíos y que debe ser eliminada.
rh2_2<-select(rh2_2, ï..No..De.Empleado:TARJETA....CUENTA)
colnames(rh2_2)
## [1] "ï..No..De.Empleado" "APELLIDOS" "NOMBRE"
## [4] "FECHA.DE.NACIMIENTO" "GENERO" "RFC"
## [7] "FECHA.DE.ALTA" "Primer.mes" "X4to.mes"
## [10] "BAJA" "PUESTO" "DEPARTAMENTO"
## [13] "NO.SEGURO.SOCIAL" "SALARIO.DIARIO.IMSS" "FACTOR.CRED.INFONAVIT"
## [16] "NÂ..CREDITO.INFONAVIT" "LUGAR.DE.NACIMIENTO" "CURP"
## [19] "CALLE" "NUMERO.INTERNO" "COLONIA"
## [22] "MUNICIPIO" "ESTADO" "CODIGO.POSTAL"
## [25] "ESTADO.CIVIL" "TARJETA....CUENTA"
Eliminamos la columna de ID.ODOO en Delivery Plan debido a que para nuestro análisis no representa algo importante a analizar. Dentro de la misma base de datos tenemos la columan de ITEM la cuál representa lo mismo, presentado de una forma más clara y entendible. Explorando más la base de datos nos dimos cuenta que teniamos dos columnas con información vacia al final de la tabla, de igual manera las eliminamos.
dp_1<-dplan
dp_1$ID.ODOO <- NULL
dp_1$X <- NULL
dp_1$X.1 <- NULL
head(dp_1)
## ï..CLIENTE.PLANTA PROYECTO ITEM JUNIO
## 1 STB3 CANASTILLA GRIS CABLE SET CAJA BACK UP CANASTILLA 0
## 2 STB4 Caja inter chica Caja intercompaâ\210šÂ±â\210šâ‰ a chica 0
## 3 STB5 CHAROLA G09 CHAROLA G09 915898 0
## 4 STB6 MOTOR GEAR BOX 0
## 5 STB7 BLOQUEO GAS SPRING 0
## 6 STB8 CABLE SET INSERTOS CABLE SET 0
## JULIO AGOSTO SEPTIEMBRE OCTUBRE NOVIEMBRE DICIEMBRE ene.22 feb.22 mar.22
## 1 140 530 0 200 0 150 230 500 0
## 2 0 0 0 0 0 184 125 55 55
## 3 0 0 0 0 0 75 126 10 5
## 4 0 0 0 0 0 1 0 1 0
## 5 0 0 0 0 0 0 0 0 0
## 6 300 0 0 0 0 0 0 0 0
## abr.22 may.22 jun.22 jul.22 ago.22 sep.22 OCTUBRE.22 nov.22 dic.22 ene.23
## 1 0 0 200 900 1000 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 3 0 15 5 10 0 5 50 125 0 0
## 4 1 3 2 5 3 4 6 7 7 0
## 5 0 0 100 100 0 0 0 0 0 0
## 6 400 0 0 0 0 0 0 0 0 0
## feb.23 mar.23 TOTAL.MESES
## 1 0 0 3850
## 2 0 0 419
## 3 0 0 426
## 4 0 0 40
## 5 0 0 200
## 6 0 0 700
En Recursos Humanos:Bajas en la variable de género nos encontramos con un valor que no corresponde al género y hay que asignar el género correcto.
unique(rh_baja$GENERO)
## [1] "MASCULINO" "FEMENINO" "CAPJ000926597" ""
filter(rh_baja, GENERO == "CAPJ000926597")
## ï..APELLIDOS NOMBRE FECHA.DE.NACIMIENTO GENERO RFC
## 1 CASTILLO PERALES JANETH 2000-09-26 CAPJ000926597 CAPJ000926597
## FECHA.DE.ALTA MOTIVO.DE.BAJA X BAJA PUESTO
## 1 2021-10-19 RENUNCIA VOLUNTARIA 86 2022-01-13 AY. GENERAL
## DEPARTAMENTO NO.SEGURO.SOCIAL SALARIO.DIARIO.IMSS
## 1 Produccion Cartón MC 26170070374 151.61
## FACTOR.CRED.INFONAVIT NÂ..CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO
## 1 N/A N/A SAN NICOLAS DE LOS GARZA
## CURP CALLE NUMERO.INTERNO COLONIA CODIGO.POSTAL
## 1 CAPJ000926MNLSRN01 RIO URUGUAY 718 PUEBLO NUEVO 66646
## MUNICIPIO ESTADO ESTADO.CIVIL TARJETA....CUENTA
## 1 APODACA NUEVO LEON CASADA BANORTE
rh_baja$GENERO[rh_baja$NOMBRE == "JANETH"] <- "FEMENINO"
unique(rh_baja$GENERO)
## [1] "MASCULINO" "FEMENINO" ""
Esta actividad es un ejemplo perfecto de cómo son las bases de datos de las emrpesas en realidad. Hay que comprender que la gran mayoría de las empresas no son expertos en bases de datos ni en recopilación de información, por lo que sus datos suelen carecer de estructura correcta u orden apropiado para su análisis en herramientas como R. Este ejercicio nos ha sido de gran utilidad para aprender a transformar las bases de datos, y limpiarlas para su futuro análisis.
Realizar un análisis estadístico descriptivo en el que logres destacar el conjunto de datos, que apoyan a la empresa a mejorar su operación. Incorpora al menos dos propuestas concretas, apoyadas de tu análisis en donde se incluye al menos: (1) Tabla de frecuencia, (opcional) Tablas cruzadas, (2-3) Gráficos de datos cualitativos y cuantitativos, así como (2-3) Gráficos de dispersión.
bd_ext <- read.csv("Consumer Expenditure on Pharmaceutical Products, Medical Appliances and Equipment.csv")
Utilizaremos la función str() para mostrar la estructura interna de un objeto.
str(bd_ext)
## 'data.frame': 30 obs. of 8 variables:
## $ ï..Geography: chr "Argentina" "Belgium" "Bolivia" "Brazil" ...
## $ Region : chr "LATAM" "EUROPE" "LATAM" "LATAM" ...
## $ X2016 : num 134135 3902 1509 129879 24802 ...
## $ X2017 : num 178976 3933 1636 141744 26053 ...
## $ X2018 : num 267389 3928 1739 149986 27096 ...
## $ X2019 : num 375429 4211 1802 157013 27648 ...
## $ X2020 : num 459736 3809 1637 185792 28338 ...
## $ X2021 : num 748630 4168 1746 200785 29641 ...
summary(bd_ext)
## ï..Geography Region X2016 X2017
## Length:30 Length:30 Min. : 11 Min. : 52
## Class :character Class :character 1st Qu.: 5229 1st Qu.: 5373
## Mode :character Mode :character Median : 16902 Median : 17426
## Mean : 1098578 Mean : 1166896
## 3rd Qu.: 107778 3rd Qu.: 117145
## Max. :25415783 Max. :26859592
## X2018 X2019 X2020 X2021
## Min. : 840 Min. : 853 Min. : 759 Min. :9.330e+02
## 1st Qu.: 10722 1st Qu.: 11424 1st Qu.: 11200 1st Qu.:1.253e+04
## Median : 19301 Median : 19795 Median : 19829 Median :2.149e+04
## Mean : 1266633 Mean : 1504649 Mean : 3645097 Mean :4.075e+07
## 3rd Qu.: 124464 3rd Qu.: 284312 3rd Qu.: 303711 3rd Qu.:3.406e+05
## Max. :29173224 Max. :31651040 Max. :68889712 Max. :1.174e+09
| Variable | Type |
|---|---|
Geography |
Qualitative |
| Region | Qualitative |
X2016 |
Quantitative (discrete) |
X2017 |
Quantitative (discrete) |
X2018 |
Quantitative (discrete) |
X2019 |
Quantitative (discrete) |
X2020 |
Quantitative (discrete) |
X2021 |
Quantitative (discrete) |
bd_ext1 <- gather(bd_ext, key="Year", value="points", 3:8)
region <- table(bd_ext$Region)
region
##
## EUROPE LATAM NAM
## 11 16 3
knitr::kable(region)
| Var1 | Freq |
|---|---|
| EUROPE | 11 |
| LATAM | 16 |
| NAM | 3 |
str(bd_ext)
## 'data.frame': 30 obs. of 8 variables:
## $ ï..Geography: chr "Argentina" "Belgium" "Bolivia" "Brazil" ...
## $ Region : chr "LATAM" "EUROPE" "LATAM" "LATAM" ...
## $ X2016 : num 134135 3902 1509 129879 24802 ...
## $ X2017 : num 178976 3933 1636 141744 26053 ...
## $ X2018 : num 267389 3928 1739 149986 27096 ...
## $ X2019 : num 375429 4211 1802 157013 27648 ...
## $ X2020 : num 459736 3809 1637 185792 28338 ...
## $ X2021 : num 748630 4168 1746 200785 29641 ...
frec_reg<-bd_ext%>%group_by(Region)%>%tally()
X_2016<-aggregate(X2016 ~ Region , data = bd_ext, mean)
X_2017<-aggregate(X2017 ~ Region , data = bd_ext, mean)
X_2018<-aggregate(X2018 ~ Region , data = bd_ext, mean)
X_2019<-aggregate(X2019 ~ Region , data = bd_ext, mean)
X_2020<-aggregate(X2020 ~ Region , data = bd_ext, mean)
X_2021<-aggregate(X2021 ~ Region , data = bd_ext, mean)
ggplot(X_2016, aes(x=Region, y=X2016)) +
geom_bar(stat="identity", fill="purple") + scale_fill_grey() + # Add bars to the plot
labs(title = "Average Expenditure by Region in 2016", # Add a title
x = "Region", y = "$ Million")
ggplot(X_2017, aes(x=Region, y=X2017)) +
geom_bar(stat="identity", fill="purple")+ scale_fill_grey() +
labs(title = "Average Expenditure by Region in 2017",
x = "Region", y = "$ Million")
ggplot(X_2018, aes(x=Region, y=X2018)) +
geom_bar(stat="identity", fill="purple") + scale_fill_grey() + # Add bars to the plot
labs(title = "Average Expenditure by Region in 2018", # Add a title
x = "Region", y = "$ Million")
ggplot(X_2019, aes(x=Region, y=X2019)) +
geom_bar(stat="identity", fill="purple") + scale_fill_grey() + # Add bars to the plot
labs(title = "Average Expenditure by Region in 2019", # Add a title
x = "Region", y = "$ Million")
ggplot(X_2020, aes(x=Region, y=X2020)) +
geom_bar(stat="identity", fill="purple") + scale_fill_grey() + # Add bars to the plot
labs(title = "Average Expenditure by Region in 2020", # Add a title
x = "Region", y = "$ Million")
ggplot(X_2021, aes(x=Region, y=X2021)) +
geom_bar(stat="identity", fill="purple") + scale_fill_grey() + # Add bars to the plot
labs(title = "Average Expenditure by Region in 2021", # Add a title
x = "Region", y = "$ Million")
ggplot(bd_ext1, aes(x=Year, y=points)) +
geom_boxplot(outlier.colour="black", outlier.shape=16,
outlier.size=2, notch=FALSE)
labs(title = "Promedio del Gasto por Consumidor por Año",
x="Año", y="$ Millones") +
theme_classic()
## NULL
ggplot(bd_ext1, aes(x=Region, y=points)) +
geom_boxplot(outlier.colour="black", outlier.shape=16,
outlier.size=2, notch=FALSE)
labs(title = "Promedio del Gasto por Consumidor por Región",
x="Año", y="$ Millones") +
theme_classic()
## NULL
longer_data <- bd_ext %>%
pivot_longer(X2016:X2021, names_to = "year", values_to = "expenditure")
ggplot(data = longer_data, aes(year, expenditure)) +
geom_line(color = "steelblue", size = 1) +
geom_point(color="steelblue") +
labs(title = "Expenditure per Region by Years",
y = "Expenditure", x = "Year") +
facet_wrap(~ Region)
Propuesta #1 De acuerdo con Statista 2022, la industria médica farmacéutica es la número 4 en generar mayor utilidad para la industria del empaque. En el año presente cuenta con una utilidad del 0.97% y en los próximos se ve reflejado un incremento, para el 2023 tendrá una utilidad del 1.01% y para el 2024 una utilidad del 1.11%. Es por ello que recomendamos a FORM introducirse a la industria médica farmacéutica.
Propuesta #2 En base a las gráficas presentadas anteriormente podemos observar que Latinoamérica es la región con mayores gastos en equipo médico, esta industria alcanza los $2,500,000 millones de pesos en gastos. Por lo que recomendamos a FORM adentrarse en la industria médica farmacéutica específicamente en Latinoamérica ya que es una industria muy rentable. De la misma manera, pensamos que es conveniente que FORM realice convenios con diferentes hospitales y/o farmacias para ser su principal proveedor de empaque.
Empleando las base de datos correspondientes.
a. FORM – Recursos Humanos
b. FORM – Delivery Plan
c. FORM – Delivery Performance
Realizar un análisis estadístico descriptivo en el que logres destacar el conjunto de datos, que apoyan a la empresa a mejorar su operación. Incorpora al menos dos propuestas concretas, apoyadas de tu análisis en donde se incluye al menos: (1) Tabla de frecuencia, (opcional) Tablas cruzadas, (2-3) Gráficos de datos cualitativos y cuantitativos, así como (2-3) Gráficos de dispersión.
Recursos Humanos: Bajas
mot_baja<-rh_baja %>% group_by(MOTIVO.DE.BAJA) %>% tally()
mot_baja
## # A tibble: 5 x 2
## MOTIVO.DE.BAJA n
## <chr> <int>
## 1 ABANDONO 1
## 2 BAJA POR FALTAS 141
## 3 JUBILACION 1
## 4 RENUNCIA VOLUNTARIA 87
## 5 TERMINO DE CONTRATO 8
Recursos Humanos: Colaboradores
rh2_2["GENERO"][rh2_2["GENERO"] == ''] <- NA
rh2_2$GENERO<-rh2_2$GENERO%>% replace_na('FALTANTE')
genero<-rh2_2 %>% group_by(GENERO) %>% tally()
genero
## # A tibble: 3 x 2
## GENERO n
## <chr> <int>
## 1 FALTANTE 9
## 2 FEMENINO 61
## 3 MASCULINO 52
##Tablas cruzadas
Tabla cruzada de género y motivo de baja
rh_baja["GENERO"][rh_baja["GENERO"] == ''] <- NA
rh_baja$GENERO<-rh_baja$GENERO%>% replace_na('FALTANTE')
tablax1<-rh_baja %>% tabyl(GENERO,MOTIVO.DE.BAJA)
tablax1
## GENERO ABANDONO BAJA POR FALTAS JUBILACION RENUNCIA VOLUNTARIA
## FALTANTE 0 0 0 1
## FEMENINO 0 90 0 44
## MASCULINO 1 51 1 42
## TERMINO DE CONTRATO
## 0
## 6
## 2
Tabla cruzada de Cliente y vueltas
tablax2<-dperf2 %>% tabyl(Cliente,VUELTAS)
tablax2
## Cliente 1 2 3
## MAGNA 299 0 0
## MAHLE 299 299 299
## PRINTEL 299 0 0
## VARROC 299 299 299
Tabla cruzada de genero y salario diario
tablax3<-rh2_2 %>% tabyl(GENERO,SALARIO.DIARIO.IMSS)
tablax3
## GENERO 144.45 151.61 151.67 152.86 175.79 176.72 180.68 181.68 184.68
## FALTANTE 0 0 0 0 0 0 0 0 0
## FEMENINO 3 7 1 1 0 7 34 1 1
## MASCULINO 0 5 3 0 1 16 25 0 0
## 185.68 208.65 240.71 240.75 260.01 279.61 337.05 NA_
## 0 0 0 0 0 0 0 9
## 1 1 1 0 1 0 2 0
## 0 0 0 1 0 1 0 0
Tabla cruzada de MOTIVO DE BAJA y departamento
tablax4<-rh_baja %>% tabyl(MOTIVO.DE.BAJA,DEPARTAMENTO)
tablax4
## MOTIVO.DE.BAJA ADMINISTRATIVO Ay.flexo CAJAS Calidad Cedis CEDIS celdas
## ABANDONO 0 1 0 0 0 0 0
## BAJA POR FALTAS 0 3 2 1 4 1 0
## JUBILACION 0 0 0 0 1 0 0
## RENUNCIA VOLUNTARIA 3 1 0 2 0 2 1
## TERMINO DE CONTRATO 1 0 0 0 1 0 0
## Celdas CELDAS CORTADORAS Costura COSTURA EHS Embarques EMBARQUES Laminado
## 0 0 0 0 0 0 0 0 0
## 5 1 1 3 1 0 1 2 1
## 0 0 0 0 0 0 0 0 0
## 3 0 0 6 0 0 0 4 1
## 1 0 0 0 0 1 0 0 0
## MANTENIMIENTO Mantenimiento FF Marcadora Materiales Paileria PAILERIA
## 0 0 0 0 0 0
## 0 0 2 3 6 1
## 0 0 0 0 0 0
## 1 1 0 4 3 1
## 0 0 0 0 0 0
## Producción Retorn Produccion Cartón MC Produccion Cartón MDL stabilus
## 0 0 0 0
## 6 4 0 0
## 0 0 0 0
## 6 4 2 1
## 0 1 0 0
## Stabilus STABILUS Troquel TROQUEL emptystring_
## 0 0 0 0 0
## 29 2 6 1 55
## 0 0 0 0 0
## 15 1 3 0 22
## 1 0 0 0 2
Tabla cruzada de puesto y salario diario
tablax5<-rh2_2 %>% tabyl(PUESTO,SALARIO.DIARIO.IMSS)
tablax5
## PUESTO 144.45 151.61 151.67 152.86 175.79 176.72
## 0 0 0 0 0 0
## AY. GENERAL 0 7 0 0 0 0
## AYUDANTE DE MANTENIMIENTO 0 0 0 0 0 0
## Ayudante general 0 0 0 0 0 1
## AYUDANTE GENERAL 2 5 3 0 1 1
## CHOFER 0 0 0 0 0 3
## CHOFER GESTOR 0 0 0 0 0 0
## COSTURERA 0 0 0 1 0 4
## CUSTOMER SERVICE INF 0 0 0 0 0 1
## ENFERMERA 0 0 0 0 0 1
## Externo 0 0 0 0 0 1
## EXTERNO 0 0 1 0 0 0
## GESTOR 0 0 0 0 0 1
## GUARDIA DE SEGURIDAD 0 0 0 0 0 0
## INSPECTOR DE CALIDAD 0 0 0 0 0 0
## INSPECTORA DE CALIDAD 0 0 0 0 0 0
## LIDER 1 0 0 0 0 0
## LIMPIEZA 0 0 0 0 0 1
## MANTENIMIENTO 0 0 0 0 0 0
## MONTACARGUISTA 0 0 0 0 0 0
## MOZO 0 0 0 0 0 0
## OP. FLEXO-RANURADORA-REFILADORA 0 0 0 0 0 1
## OPERADOR SIERRA 0 0 0 0 0 0
## PINTOR 0 0 0 0 0 1
## RECIBO 0 0 0 0 0 1
## RESIDENTE 0 0 0 0 0 3
## SOLDADOR 0 0 0 0 0 1
## Supervisor de Máquin 0 0 0 0 0 1
## Supervisor de pegado 0 0 0 0 0 1
## SUPERVISORA 0 0 0 0 0 0
## 180.68 181.68 184.68 185.68 208.65 240.71 240.75 260.01 279.61 337.05 NA_
## 0 0 0 0 0 0 0 0 0 0 9
## 0 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 43 1 1 1 0 0 1 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 1 0 1 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 1 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 1 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 1 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 0 0
## 0 0 0 0 0 0 0 0 0 2 0
Bar Graph/histograma de motivo de bajas
ggplot(mot_baja,aes(x=MOTIVO.DE.BAJA,y=n,fill=n))+
geom_bar(stat="identity")+
theme_minimal()+
labs(title="Motivo de Bajas")
Bar Graph de motivo de bajas por departamento
ggplot(rh_baja,aes(x=DEPARTAMENTO,y=MOTIVO.DE.BAJA,fill=MOTIVO.DE.BAJA))+
geom_bar(stat="identity")+
theme_minimal()+
labs(title="Motivo de Bajas por Departamento")
Bar graph de género y salario promedio
genero_salprom<-aggregate(SALARIO.DIARIO.IMSS ~ GENERO, data = rh2_2, mean)
genero_salprom
## GENERO SALARIO.DIARIO.IMSS
## 1 FEMENINO 182.2102
## 2 MASCULINO 177.9563
ggplot(genero_salprom,aes(x=GENERO,y=SALARIO.DIARIO.IMSS,fill=SALARIO.DIARIO.IMSS))+
geom_bar(stat="identity")+
theme_minimal()+
labs(title="Salario promedio por género")
Histograma de salarios
hist(rh2_2$SALARIO.DIARIO.IMSS, col="darkblue")
Diferencia promedio por cliente
dif_prom<-aggregate(Diference ~ Cliente, data = dperf2, mean)
dif_prom
## Cliente Diference
## 1 MAGNA 0.0000000
## 2 MAHLE 0.7880936
## 3 PRINTEL 0.4418395
## 4 VARROC 0.0000000
ggplot(dif_prom,aes(x=Cliente,y=Diference, fill=Diference))+
geom_bar(stat="identity")+
theme_minimal()+
labs(title="Diferencia promedio por cliente")
Plot de salarios
n_distinct(rh2_2$SALARIO.DIARIO.IMSS)
## [1] 17
salario<-rh2_2 %>% group_by(SALARIO.DIARIO.IMSS) %>% tally()
salario
## # A tibble: 17 x 2
## SALARIO.DIARIO.IMSS n
## <dbl> <int>
## 1 144. 3
## 2 152. 12
## 3 152. 4
## 4 153. 1
## 5 176. 1
## 6 177. 23
## 7 181. 59
## 8 182. 1
## 9 185. 1
## 10 186. 1
## 11 209. 1
## 12 241. 1
## 13 241. 1
## 14 260. 1
## 15 280. 1
## 16 337. 2
## 17 NA 9
plot(salario$SALARIO.DIARIO.IMSS,salario$n, type="b",col="blue", lwd=1.5, xlab ="Salario Diario",ylab ="Personas con ese salario", main = "Salario diario")
Boxplot de salarios
boxplot(rh2_2$SALARIO.DIARIO.IMSS,col=rainbow(ncol(trees)))
Boxplot de Diferencia por Mes
dperf3<-dperf2
dperf3$month <- format(dperf2$FECHA, "%m")
head(dperf3$month)
## [1] "07" "07" "07" "07" "07" "07"
boxplot(dperf3$Diference ~ dperf3$month, main="Distribucion de diferencia por mes",
xlab="Mes",ylab="Diferencia",col=rainbow(ncol(trees)))
Plot de bajas por mes
rh_baja2<-rh_baja
rh_baja2$month_baja <- format(rh_baja2$BAJA, "%m")
rh_baja2$month_baja<-as.integer(rh_baja2$month_baja)
n_distinct(rh_baja2$month_baja)
## [1] 10
mes_baja<-rh_baja2 %>% group_by(month_baja) %>% tally()
mes_baja
## # A tibble: 10 x 2
## month_baja n
## <int> <int>
## 1 1 37
## 2 2 21
## 3 3 21
## 4 4 33
## 5 5 30
## 6 6 27
## 7 7 23
## 8 8 30
## 9 11 1
## 10 NA 15
plot(mes_baja$month_baja, mes_baja$n,, main="Bajas por mes",
xlab="Mes",ylab="No. de bajas")
Tiempo promedio de permanencia en FORM
rh_baja2$Permanencia<-difftime(rh_baja2$BAJA,rh_baja2$FECHA.DE.ALTA, units = "days")
boxplot(rh_baja2$Permanencia, main="Permanencia en FORM",
xlab="Permanencia",ylab="Tiempo en dias",col=rainbow(ncol(trees)))
## Propuestas
Propuestas De acuerdo con el análisis realizado de la base de datos “FORM - Recursos Humanos” se observó que los motivos de baja más comunes son: Baja por faltas: 141 Renuncia voluntaria: 87 Término de contrato: 8
De acuerdo con datos de OCCMundial y Forbes México, el 58% de los trabajadores del país no se presenta a laborar por cuestiones de salud. Entre los principales problemas que se manifiestan están las enfermedades estomacales o gástricas y las cefaleas. De igual manera, el 36% se ausenta de sus obligaciones laborales para resolver trámites personales.
De acuerdo con el IMSS, el 75% de la población trabajadora en México padece de estrés laboral y según datos del Wellness Council México un trabajador falta a sus labores hasta 25 días al año cuando sufre depresión y hasta 20 días por ansiedad.
Por lo tanto, la primera propuesta se basa en mejorar la gestión del absentismo laboral. Primero es importante establecer políticas de asistencia y ausencia para determinar qué casos se considerarán justificados y cuáles no. También proporcionar flexibilidad en cuanto a solicitudes de permisos por trámites personales de acuerdo a la agenda laboral y el nivel de importancia/urgencia del trámite.
Así como también llevar a cabo un proyecto llamado “Un día sin ti”, en el que se involucre a todos los empleados y simulen la ausencia de 1 o varios de sus compañeros durante la jornada laboral con el fin de demostrar cuán valiosa es su presencia dentro de las actividades diarias de la empresa y cómo influye de manera negativa para sus compañeros el faltar injustificadamente al trabajo.
Implementar el horario flexible de trabajo el cual permita que los trabajadores puedan tener un rol más activo en las decisiones que se toman en torno a su jornada laboral. Ofrecer diversas opciones dentro del esquema de horarios de la organización.
Crear un programa de beneficios para los colaboradores, como bonos por desempeño, asistencia, cursos de capacitación, etc. Para fomentar el trabajo en equipo y la motivación.
Y por último crear un programa de bienestar que permita ofrecer acompañamiento psicológico, realizar eventos ya sea 1 vez por quincena para realizar actividades dinámicas combinando el aprendizaje con la diversión, con el fin de fomentar la empatía, trabajo en equipo, escucha activa. Así como también brindar acompañamiento a cada uno de los empleados para conocer su situación personal, cómo se siente, qué desea, si ocurre algo en el trabajo, si tiene algún problema o si tiene alguna propuesta de mejora para alguno de los procesos. Fomentar la confianza entre colaborador - líder que permita el desarrollo personal y profesional de ambas partes. Las empresas con programas de reconocimiento eficaces tienen un 31% menos de rotación voluntaria, según análisis de Bersin por Deloitte.