RH_Colaboradores/Bajas
#file.choose()
RhColab<-read.csv("/Users/joseramonvazquezguzman/Documents/Tecnológico de Monterrey/Septimo semestre/Analítica de datos /RETO/Bases de datos (limpias) CSV /BaseDatosL RH_Colaboradores.csv")
RhBajas<-read.csv("/Users/joseramonvazquezguzman/Documents/Tecnológico de Monterrey/Septimo semestre/Analítica de datos /RETO/Bases de datos (limpias) CSV /BaseD_Limpia RH_ Bajas .csv")
Tipos de Variables Existentes para RHCOLAB
variable<-c("numero_de_empleado","nombre_completo", "edad", "genero", "fecha_de_alta", "antioguedad", "BAJA", "puesto", "departamento", "mano_de_obra", "salario_diario", "colonia", "municipio")
type<-c("Cualitativo (nominal)","Cualitativo (nominal)", "Cuantitativo(discreta)", "Cualitativo (nominal)", "Cuantitativo(discreta)", "cualitativo (nominal)", "Cualitativo (nominal)", "Cualitativo (nominal)", "Cualitativo (nominal)", "Cualitativo (nominal)", "Cuantitativo (continua)", "Cualitativo (nominal)", "Cualitativo (nominal)")
Escala_de_Medición<-c("Numero", "Fecha", "Departamento", "Salario", "Estado")
table<-data.frame(variable,type)
knitr::kable(table)
| numero_de_empleado |
Cualitativo (nominal) |
| nombre_completo |
Cualitativo (nominal) |
| edad |
Cuantitativo(discreta) |
| genero |
Cualitativo (nominal) |
| fecha_de_alta |
Cuantitativo(discreta) |
| antioguedad |
cualitativo (nominal) |
| BAJA |
Cualitativo (nominal) |
| puesto |
Cualitativo (nominal) |
| departamento |
Cualitativo (nominal) |
| mano_de_obra |
Cualitativo (nominal) |
| salario_diario |
Cuantitativo (continua) |
| colonia |
Cualitativo (nominal) |
| municipio |
Cualitativo (nominal) |
Tipos de Variables Existentes para RHBAJAS
variable<-c ("nombre","edad", "genero", "fecha_alta", "motivo_baja", "dias_de_trabajo", "baja", "puesto_que_desempeña", "salario_imss", "colonia", "municipio", "estado", "estado_civil" )
type<-c ("Cualitativo (nominal)","Cuantitativo(discreta)", "Cualitativo (nominal)", "Cuantitativo(discreta)", "Cualitativo (nominal)", "Cuantitativo(discreta)", "Cuantitativo(discreta)", "Cualitativo (nominal)", "Cuantitativo(Continua)", "Cualitativo (nominal)", "Cualitativo (nominal)", "Cualitativo (nominal)", "Cualitativo (nominal)" )
Escala_de_Medición<-c("Numero", "Fecha", "Departamento", "Salario", "Estado")
table<-data.frame(variable,type)
knitr::kable(table)
| nombre |
Cualitativo (nominal) |
| edad |
Cuantitativo(discreta) |
| genero |
Cualitativo (nominal) |
| fecha_alta |
Cuantitativo(discreta) |
| motivo_baja |
Cualitativo (nominal) |
| dias_de_trabajo |
Cuantitativo(discreta) |
| baja |
Cuantitativo(discreta) |
| puesto_que_desempeña |
Cualitativo (nominal) |
| salario_imss |
Cuantitativo(Continua) |
| colonia |
Cualitativo (nominal) |
| municipio |
Cualitativo (nominal) |
| estado |
Cualitativo (nominal) |
| estado_civil |
Cualitativo (nominal) |
Llamar librerias
library(foreign)
library(dplyr) # data manipulation
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(forcats) # to work with categorical variables
library(ggplot2) # data visualization
library(janitor) # data exploration and cleaning
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(Hmisc) # several useful functions for data analysis
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
library(psych) # functions for multivariate analysis
##
## Attaching package: 'psych'
## The following object is masked from 'package:Hmisc':
##
## describe
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(naniar) # summaries and visualization of missing values NAs
library(dlookr) # summaries and visualization of missing values NAs
##
## Attaching package: 'dlookr'
## The following object is masked from 'package:psych':
##
## describe
## The following object is masked from 'package:Hmisc':
##
## describe
## The following object is masked from 'package:base':
##
## transform
library(corrplot) # correlation plots
## corrplot 0.92 loaded
library(jtools) # presentation of regression analysis
##
## Attaching package: 'jtools'
## The following object is masked from 'package:Hmisc':
##
## %nin%
library(lmtest) # diagnostic checks - linear regression analysis
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car) # diagnostic checks - linear regression analysis
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
## The following object is masked from 'package:dplyr':
##
## recode
library(olsrr) # diagnostic checks - linear regression analysis
##
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
##
## rivers
library(kableExtra) # HTML table attributes
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
Verificar la estructura de la base de datos
str(RhColab)
## 'data.frame': 999 obs. of 13 variables:
## $ numero_de_empleado: int 1 2 3 4 5 6 7 8 9 10 ...
## $ nombre_completo : chr "NICOLAS MARTINEZ DE LOERA" "MARIANA DE LEON MORENO" "JOSE LUIS HERNANDEZ CERVANTES" "MARIA CAZARES MORALES" ...
## $ edad : int 67 43 73 32 57 38 55 26 27 37 ...
## $ genero : chr "MASCULINO" "FEMENINO" "MASCULINO" "FEMENINO" ...
## $ fecha_de_alta : chr "1/7/2010" "1/7/2011" "22/11/2011" "30/1/2013" ...
## $ antiguedad : int 12 11 11 9 8 8 7 6 5 5 ...
## $ BAJA : int NA NA NA NA NA NA NA NA NA NA ...
## $ puesto : chr "Supervisor de Máquin" "Supervisor de pegado" "Externo" "SUPERVISORA" ...
## $ departamento : chr "Produccion Cartón MDL" "Produccion Cartón MDL" "Externo" "Produccion Cartón MC" ...
## $ mano_de_obra : chr "Indirecto" "Indirecto" "Indirecto" "Indirecto" ...
## $ salario_diario : num 177 177 177 337 441 ...
## $ colonia : chr "UNIDAD LABORAL" "SANTA TERESITA" "VILLAS DE HUINALA" "PUEBLO NUEVO" ...
## $ municipio : chr "SAN NICOLAS DE LOS G" "APODACA" "APODACA" "APODACA" ...
str(RhBajas)
## 'data.frame': 237 obs. of 13 variables:
## $ nombre : 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" ...
## $ dias_de_trabajo : int 628 60 59 59 51 37 37 31 18 224 ...
## $ baja : chr "27/11/2021" "8/1/2022" "8/1/2022" "8/1/2022" ...
## $ puesto_que_desempeña: chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ salario_imss : num 500 152 152 152 152 ...
## $ colonia : chr "SAN NICOLAS DE LOS G" "COLINAS DEL AEROPÑUERTO" "PUEBLO NUEVO" "PUEBLO NUEVO" ...
## $ municipio : chr "SAN NICOLAS DE LOS G" "PESQUERIA" "APODACA" "APODACA" ...
## $ estado : chr "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" ...
## $ estado_civil : chr "SOLTERO" "UNIÓN LIBRE" "CASADO" "SOLTERO" ...
seleccionar columnas / variables
RhColab1<-RhColab
RhBajas1<-RhBajas
Limpieza de datos
RhColab1<-RhColab %>% select(-one_of('numero_de_empleado','Fecha_alta' , 'BAJA', 'edad'))
# lets rename the selected columns / variables
summary(RhColab1)
## nombre_completo genero fecha_de_alta antiguedad
## Length:999 Length:999 Length:999 Min. : 0.000
## Class :character Class :character Class :character 1st Qu.: 0.000
## Mode :character Mode :character Mode :character Median : 0.000
## Mean : 1.425
## 3rd Qu.: 2.000
## Max. :12.000
## NA's :886
## puesto departamento mano_de_obra salario_diario
## Length:999 Length:999 Length:999 Min. :144.4
## Class :character Class :character Class :character 1st Qu.:176.7
## Mode :character Mode :character Mode :character Median :180.7
## Mean :181.4
## 3rd Qu.:180.7
## Max. :441.4
## NA's :886
## colonia municipio
## Length:999 Length:999
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
names(RhColab1)<-c('Nom_Comp', 'Gen', 'Fecha_alta', 'Ant', 'Puesto', 'Dep', 'MDO', 'Sal_Diario', 'Col', 'Mun')
names(RhBajas1)<-c('Nom', 'Edad', 'Gen', 'Fecha_alta', 'MB', 'Días_trab', 'Baja', 'PuestDes', 'Sal_IMSS', 'Col', 'Mun', 'Estado', 'EstCiv')
##lets convert fecha_nacimiento to date format
RhColab1$Fecha_alta<-as.Date(RhColab$fecha_de_alta, format = "%d/%m/%Y")
RhBajas1$Fecha_alta<-as.Date(RhBajas1$Fecha_alta, format = "%d/%m/%Y")
RhBajas1$Baja<-as.Date(RhBajas1$Baja, format = "%d/%m/%Y")
str(RhColab1)
## 'data.frame': 999 obs. of 10 variables:
## $ Nom_Comp : chr "NICOLAS MARTINEZ DE LOERA" "MARIANA DE LEON MORENO" "JOSE LUIS HERNANDEZ CERVANTES" "MARIA CAZARES MORALES" ...
## $ Gen : chr "MASCULINO" "FEMENINO" "MASCULINO" "FEMENINO" ...
## $ Fecha_alta: Date, format: "2010-07-01" "2011-07-01" ...
## $ Ant : int 12 11 11 9 8 8 7 6 5 5 ...
## $ Puesto : chr "Supervisor de Máquin" "Supervisor de pegado" "Externo" "SUPERVISORA" ...
## $ Dep : chr "Produccion Cartón MDL" "Produccion Cartón MDL" "Externo" "Produccion Cartón MC" ...
## $ MDO : chr "Indirecto" "Indirecto" "Indirecto" "Indirecto" ...
## $ Sal_Diario: num 177 177 177 337 441 ...
## $ Col : chr "UNIDAD LABORAL" "SANTA TERESITA" "VILLAS DE HUINALA" "PUEBLO NUEVO" ...
## $ Mun : chr "SAN NICOLAS DE LOS G" "APODACA" "APODACA" "APODACA" ...
str(RhBajas1)
## 'data.frame': 237 obs. of 13 variables:
## $ Nom : 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 ...
## $ Gen : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ Fecha_alta: Date, format: "2020-03-09" "2021-11-09" ...
## $ MB : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ Días_trab : int 628 60 59 59 51 37 37 31 18 224 ...
## $ Baja : Date, format: "2021-11-27" "2022-01-08" ...
## $ PuestDes : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ Sal_IMSS : num 500 152 152 152 152 ...
## $ Col : chr "SAN NICOLAS DE LOS G" "COLINAS DEL AEROPÑUERTO" "PUEBLO NUEVO" "PUEBLO NUEVO" ...
## $ Mun : chr "SAN NICOLAS DE LOS G" "PESQUERIA" "APODACA" "APODACA" ...
## $ Estado : chr "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" ...
## $ EstCiv : chr "SOLTERO" "UNIÓN LIBRE" "CASADO" "SOLTERO" ...
# Eliminar NA's y sustituir con 0's
sum(is.na(RhColab1))
## [1] 2658
sum(is.na(RhBajas1))
## [1] 0
summary(RhColab1)
## Nom_Comp Gen Fecha_alta Ant
## Length:999 Length:999 Min. :2010-07-01 Min. : 0.000
## Class :character Class :character 1st Qu.:2020-08-28 1st Qu.: 0.000
## Mode :character Mode :character Median :2022-02-23 Median : 0.000
## Mean :2021-01-16 Mean : 1.425
## 3rd Qu.:2022-07-05 3rd Qu.: 2.000
## Max. :2022-08-23 Max. :12.000
## NA's :886 NA's :886
## Puesto Dep MDO Sal_Diario
## Length:999 Length:999 Length:999 Min. :144.4
## Class :character Class :character Class :character 1st Qu.:176.7
## Mode :character Mode :character Mode :character Median :180.7
## Mean :181.4
## 3rd Qu.:180.7
## Max. :441.4
## NA's :886
## Col Mun
## Length:999 Length:999
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
summary(RhBajas1)
## Nom Edad Gen Fecha_alta
## Length:237 Min. : 0.00 Length:237 Min. :2016-10-12
## Class :character 1st Qu.:23.00 Class :character 1st Qu.:2022-01-19
## Mode :character Median :29.00 Mode :character Median :2022-04-04
## Mean :30.52 Mean :2022-02-10
## 3rd Qu.:37.00 3rd Qu.:2022-06-14
## Max. :61.00 Max. :2022-08-17
## MB Días_trab Baja PuestDes
## Length:237 Min. : 0.00 Min. :2021-11-27 Length:237
## Class :character 1st Qu.: 9.00 1st Qu.:2022-03-01 Class :character
## Mode :character Median : 21.00 Median :2022-05-06 Mode :character
## Mean : 83.42 Mean :2022-05-05
## 3rd Qu.: 49.00 3rd Qu.:2022-07-07
## Max. :1966.00 Max. :2022-08-25
## Sal_IMSS Col Mun Estado
## Min. :144.4 Length:237 Length:237 Length:237
## 1st Qu.:180.7 Class :character Class :character Class :character
## Median :180.7 Mode :character Mode :character Mode :character
## Mean :178.6
## 3rd Qu.:180.7
## Max. :500.0
## EstCiv
## Length:237
## Class :character
## Mode :character
##
##
##
RhColab1 <- na.omit(RhColab1)
RhBajas1 <- na.omit(RhBajas1)
summary(RhColab1)
## Nom_Comp Gen Fecha_alta Ant
## Length:113 Length:113 Min. :2010-07-01 Min. : 0.000
## Class :character Class :character 1st Qu.:2020-08-28 1st Qu.: 0.000
## Mode :character Mode :character Median :2022-02-23 Median : 0.000
## Mean :2021-01-16 Mean : 1.425
## 3rd Qu.:2022-07-05 3rd Qu.: 2.000
## Max. :2022-08-23 Max. :12.000
## Puesto Dep MDO Sal_Diario
## Length:113 Length:113 Length:113 Min. :144.4
## Class :character Class :character Class :character 1st Qu.:176.7
## Mode :character Mode :character Mode :character Median :180.7
## Mean :181.4
## 3rd Qu.:180.7
## Max. :441.4
## Col Mun
## Length:113 Length:113
## Class :character Class :character
## Mode :character Mode :character
##
##
##
summary(RhBajas1)
## Nom Edad Gen Fecha_alta
## Length:237 Min. : 0.00 Length:237 Min. :2016-10-12
## Class :character 1st Qu.:23.00 Class :character 1st Qu.:2022-01-19
## Mode :character Median :29.00 Mode :character Median :2022-04-04
## Mean :30.52 Mean :2022-02-10
## 3rd Qu.:37.00 3rd Qu.:2022-06-14
## Max. :61.00 Max. :2022-08-17
## MB Días_trab Baja PuestDes
## Length:237 Min. : 0.00 Min. :2021-11-27 Length:237
## Class :character 1st Qu.: 9.00 1st Qu.:2022-03-01 Class :character
## Mode :character Median : 21.00 Median :2022-05-06 Mode :character
## Mean : 83.42 Mean :2022-05-05
## 3rd Qu.: 49.00 3rd Qu.:2022-07-07
## Max. :1966.00 Max. :2022-08-25
## Sal_IMSS Col Mun Estado
## Min. :144.4 Length:237 Length:237 Length:237
## 1st Qu.:180.7 Class :character Class :character Class :character
## Median :180.7 Mode :character Mode :character Mode :character
## Mean :178.6
## 3rd Qu.:180.7
## Max. :500.0
## EstCiv
## Length:237
## Class :character
## Mode :character
##
##
##
str(RhColab1)
## 'data.frame': 113 obs. of 10 variables:
## $ Nom_Comp : chr "NICOLAS MARTINEZ DE LOERA" "MARIANA DE LEON MORENO" "JOSE LUIS HERNANDEZ CERVANTES" "MARIA CAZARES MORALES" ...
## $ Gen : chr "MASCULINO" "FEMENINO" "MASCULINO" "FEMENINO" ...
## $ Fecha_alta: Date, format: "2010-07-01" "2011-07-01" ...
## $ Ant : int 12 11 11 9 8 8 7 6 5 5 ...
## $ Puesto : chr "Supervisor de Máquin" "Supervisor de pegado" "Externo" "SUPERVISORA" ...
## $ Dep : chr "Produccion Cartón MDL" "Produccion Cartón MDL" "Externo" "Produccion Cartón MC" ...
## $ MDO : chr "Indirecto" "Indirecto" "Indirecto" "Indirecto" ...
## $ Sal_Diario: num 177 177 177 337 441 ...
## $ Col : chr "UNIDAD LABORAL" "SANTA TERESITA" "VILLAS DE HUINALA" "PUEBLO NUEVO" ...
## $ Mun : chr "SAN NICOLAS DE LOS G" "APODACA" "APODACA" "APODACA" ...
## - attr(*, "na.action")= 'omit' Named int [1:886] 114 115 116 117 118 119 120 121 122 123 ...
## ..- attr(*, "names")= chr [1:886] "114" "115" "116" "117" ...
str(RhBajas1)
## 'data.frame': 237 obs. of 13 variables:
## $ Nom : 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 ...
## $ Gen : chr "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
## $ Fecha_alta: Date, format: "2020-03-09" "2021-11-09" ...
## $ MB : chr "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" "RENUNCIA VOLUNTARIA" ...
## $ Días_trab : int 628 60 59 59 51 37 37 31 18 224 ...
## $ Baja : Date, format: "2021-11-27" "2022-01-08" ...
## $ PuestDes : chr "DISEÑO" "AYUDANTE GENERAL" "AYUDANTE GENERAL" "AYUDANTE GENERAL" ...
## $ Sal_IMSS : num 500 152 152 152 152 ...
## $ Col : chr "SAN NICOLAS DE LOS G" "COLINAS DEL AEROPÑUERTO" "PUEBLO NUEVO" "PUEBLO NUEVO" ...
## $ Mun : chr "SAN NICOLAS DE LOS G" "PESQUERIA" "APODACA" "APODACA" ...
## $ Estado : chr "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" "NUEVO LEÓN" ...
## $ EstCiv : chr "SOLTERO" "UNIÓN LIBRE" "CASADO" "SOLTERO" ...
Calcular la variable “año” en años para realizar caracteristicas
adicionales de los colaboradores
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
edad<-trunc((RhColab1$Fecha_alta %--% RhColab1$Fecha_alta) / years(1)) # %--% creates a time interval based on as.date() format
RhColab1$edad<-edad
edad<-trunc((RhBajas1$Fecha_alta %--% RhBajas1$Fecha_alta) / years(1))
edad<-trunc((RhBajas1$Baja %--% RhBajas1$Baja) / years(1))
Convertir las variables a factor para poder crear graficas
descriptivas
### Colab1
RhColab1$Gen<-as.factor(RhColab1$Gen)
RhColab1$Puesto<-as.factor(RhColab1$Puesto)
RhColab1$Dep<-as.factor(RhColab1$Dep)
RhColab1$Mun<-as.factor(RhColab1$Mun)
RhColab1$Col<-as.factor(RhColab1$Col)
### Bajas1
RhBajas1$Gen<-as.factor(RhBajas1$Gen)
RhBajas1$MB<-as.factor(RhBajas1$MB)
RhBajas1$Días_trab<-as.factor(RhBajas1$Días_trab)
RhBajas1$PuestDes<-as.factor(RhBajas1$PuestDes)
RhBajas1$Col<-as.factor(RhBajas1$Col)
RhBajas1$Mun<-as.factor(RhBajas1$Mun)
RhBajas1$Estado<-as.factor(RhBajas1$Estado)
RhBajas1$EstCiv<-as.factor(RhBajas1$EstCiv)
Verioficar la estructura de las bases de datos RhColab1 y
RhBajas1
str(RhColab1)
## 'data.frame': 113 obs. of 11 variables:
## $ Nom_Comp : chr "NICOLAS MARTINEZ DE LOERA" "MARIANA DE LEON MORENO" "JOSE LUIS HERNANDEZ CERVANTES" "MARIA CAZARES MORALES" ...
## $ Gen : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 2 1 1 2 1 2 2 1 ...
## $ Fecha_alta: Date, format: "2010-07-01" "2011-07-01" ...
## $ Ant : int 12 11 11 9 8 8 7 6 5 5 ...
## $ Puesto : Factor w/ 29 levels "AY. GENERAL",..: 27 28 10 29 29 8 7 4 3 7 ...
## $ Dep : Factor w/ 22 levels "","Ay.flexo",..: 18 18 13 17 8 4 8 19 4 10 ...
## $ MDO : chr "Indirecto" "Indirecto" "Indirecto" "Indirecto" ...
## $ Sal_Diario: num 177 177 177 337 441 ...
## $ Col : Factor w/ 73 levels "ALAMOS DEL PARQUE",..: 64 61 69 51 56 18 1 52 14 5 ...
## $ Mun : Factor w/ 9 levels "APODACA","CAÑADA BLANCA",..: 9 1 1 1 1 8 1 1 8 9 ...
## $ edad : num 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, "na.action")= 'omit' Named int [1:886] 114 115 116 117 118 119 120 121 122 123 ...
## ..- attr(*, "names")= chr [1:886] "114" "115" "116" "117" ...
summary(RhColab1)
## Nom_Comp Gen Fecha_alta Ant
## Length:113 FEMENINO :61 Min. :2010-07-01 Min. : 0.000
## Class :character MASCULINO:52 1st Qu.:2020-08-28 1st Qu.: 0.000
## Mode :character Median :2022-02-23 Median : 0.000
## Mean :2021-01-16 Mean : 1.425
## 3rd Qu.:2022-07-05 3rd Qu.: 2.000
## Max. :2022-08-23 Max. :12.000
##
## Puesto Dep MDO
## AYUDANTE GENERAL:59 :40 Length:113
## COSTURERA :10 Producción Retorn :10 Class :character
## AY. GENERAL : 7 Costura : 7 Mode :character
## SOLDADOR : 5 Produccion Cartón MDL: 7
## CHOFER : 4 Stabilus : 7
## RESIDENTE : 4 Cedis : 6
## (Other) :24 (Other) :36
## Sal_Diario Col Mun edad
## Min. :144.4 PUEBLO NUEVO :27 APODACA :72 Min. :0
## 1st Qu.:176.7 CANTORAL : 4 JUAREZ :10 1st Qu.:0
## Median :180.7 CAÑADA BLANCA : 3 PESQUERIA: 9 Median :0
## Mean :181.4 MISION SAN PABLO : 3 GUADALUPE: 6 Mean :0
## 3rd Qu.:180.7 PORTAL DE HUINALA : 3 SALTILLO : 5 3rd Qu.:0
## Max. :441.4 VALLE DE SANTA MARIA: 3 MONTERREY: 4 Max. :0
## (Other) :70 (Other) : 7
str(RhBajas1)
## 'data.frame': 237 obs. of 13 variables:
## $ Nom : 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 ...
## $ Gen : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 1 1 1 1 2 2 2 ...
## $ Fecha_alta: Date, format: "2020-03-09" "2021-11-09" ...
## $ MB : Factor w/ 5 levels "ABANDONO","BAJA POR FALTAS",..: 4 4 4 4 4 2 2 2 2 4 ...
## $ Días_trab : Factor w/ 95 levels "0","1","2","3",..: 88 53 52 52 48 37 37 31 19 79 ...
## $ Baja : Date, format: "2021-11-27" "2022-01-08" ...
## $ PuestDes : Factor w/ 31 levels "ANALISTA DE NOMINAS /AUX DE R.H.",..: 15 9 9 9 9 9 9 9 9 4 ...
## $ Sal_IMSS : num 500 152 152 152 152 ...
## $ Col : Factor w/ 98 levels "ACANTO RESIDENCIAL",..: 82 18 72 72 73 28 72 48 15 80 ...
## $ Mun : Factor w/ 13 levels "APODACA","CADEREYTA",..: 10 7 1 1 1 1 1 5 4 1 ...
## $ Estado : Factor w/ 3 levels "COAHUILA","NUEVO LEÓN",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ EstCiv : Factor w/ 5 levels "CASADO","DIVORCIADO",..: 3 5 1 3 3 3 5 5 3 3 ...
summary(RhBajas1)
## Nom Edad Gen Fecha_alta
## Length:237 Min. : 0.00 FEMENINO :140 Min. :2016-10-12
## Class :character 1st Qu.:23.00 MASCULINO: 97 1st Qu.:2022-01-19
## Mode :character Median :29.00 Median :2022-04-04
## Mean :30.52 Mean :2022-02-10
## 3rd Qu.:37.00 3rd Qu.:2022-06-14
## Max. :61.00 Max. :2022-08-17
##
## MB Días_trab Baja
## ABANDONO : 1 15 : 11 Min. :2021-11-27
## BAJA POR FALTAS :141 1 : 9 1st Qu.:2022-03-01
## JUBILACION : 1 6 : 9 Median :2022-05-06
## RENUNCIA VOLUNTARIA: 86 9 : 8 Mean :2022-05-05
## TERMINO DE CONTRATO: 8 0 : 7 3rd Qu.:2022-07-07
## 8 : 7 Max. :2022-08-25
## (Other):186
## PuestDes Sal_IMSS Col
## AYUDANTE GENERAL :173 Min. :144.4 PUEBLO NUEVO : 67
## SOLDADOR : 11 1st Qu.:180.7 VALLE DE SANTA MARIA: 15
## COSTURERA : 10 Median :180.7 CANTORAL : 10
## MONTACARGUISTA : 5 Mean :178.6 PORTAL DE HUINALA : 6
## AY. GENERAL : 4 3rd Qu.:180.7 SAN ISIDRO : 6
## AUXILIAR DE EMBARQUES: 3 Max. :500.0 BOSQUES DE HUINALA : 4
## (Other) : 31 (Other) :129
## Mun Estado EstCiv
## APODACA :162 COAHUILA : 9 CASADO : 64
## PESQUERIA : 32 NUEVO LEÓN:227 DIVORCIADO : 3
## JUAREZ : 15 SALTILLO : 1 SOLTERO :110
## GUADALUPE : 10 Unión libre: 1
## RAMOS ARIZPE : 8 UNIÓN LIBRE: 59
## SAN NICOLAS DE LOS GARZA: 3
## (Other) : 7
Mostrar tablas de visualización para identificar perspectivas
relevantes de las bases de datos RhColab1 y RhBajas1
## Colaboradores
tapply(RhColab1$Sal_Diario,
list(RhColab1$Gen,RhColab1$Puesto), mean)
## AY. GENERAL AYUDANTE DE MANTENIMIENTO Ayudante general
## FEMENINO 151.61 NA NA
## MASCULINO 151.61 180.68 176.72
## AYUDANTE GENERAL CHOFER CHOFER GESTOR COSTURERA CUSTOMER SERVICE INF
## FEMENINO 177.4222 NA NA 191.7533 NA
## MASCULINO 176.2268 177.71 180.68 176.7200 176.72
## ENFERMERA Externo EXTERNO GESTOR GUARDIA DE SEGURIDAD
## FEMENINO 176.72 NA NA NA NA
## MASCULINO NA 176.72 151.67 176.72 180.68
## INSPECTOR DE CALIDAD INSPECTORA DE CALIDAD LIDER LIMPIEZA
## FEMENINO 208.65 180.68 144.45 176.72
## MASCULINO NA NA NA NA
## MANTENIMIENTO MONTACARGUISTA MOZO OP. FLEXO-RANURADORA-REFILADORA
## FEMENINO NA NA NA NA
## MASCULINO 279.61 180.68 180.68 176.72
## OPERADOR SIERRA PINTOR RECIBO RESIDENTE SOLDADOR Supervisor de Máquin
## FEMENINO NA NA 176.72 NA NA NA
## MASCULINO 180.68 176.72 NA 177.71 179.888 176.72
## Supervisor de pegado SUPERVISORA
## FEMENINO 176.72 389.21
## MASCULINO NA NA
tapply(RhColab1$Sal_Diario,
list(RhColab1$Gen,RhColab1$Dep), mean)
## Ay.flexo Calidad Cedis CEDIS Celdas CORTADORAS Costura
## FEMENINO 178.7544 NA 194.665 NA NA 180.68 NA 245.375
## MASCULINO 176.5400 180.68 NA 176.72 180.68 NA 180.68 176.720
## COSTURA Costura T2 EHS Embarques Externo Limpieza Materiales
## FEMENINO 151.61 152.86 176.720 NA NA 176.72 176.72
## MASCULINO NA NA 230.145 177.71 164.195 NA NA
## Paileria Produccion Cartón MC Produccion Cartón MDL Producción Retorn
## FEMENINO NA 194.405 156.0975 161.3000
## MASCULINO 178.7 151.670 168.3700 183.8443
## Rotativa Stabilus Troquel
## FEMENINO NA 180.68 180.68
## MASCULINO 151.61 180.68 180.68
## Bajas
tapply(RhBajas1$Sal_IMSS,RhBajas1$Gen,mean)
## FEMENINO MASCULINO
## 177.3126 180.5544
Conclusiones
En promedio la mayor parte de los colaboradores de Form tienen una
edad de entre 20 y 30 años, hay empleadas que tienen un máximo de 56
años mientras que hay un empleado que pasa ya de los 60 años de edad.
Entre hombres y mujeres están en un rango de 20 a 40 años de edad
El saldo promedio tanto para hombres como para mujeres ronda en un
monto de 170 y 180 pesos, pero hay una empleada que llega a un salario
diario de 441 pesos, duplicando el saldo promedio de la mayor parte de
los empleados de la compañía.
En cuanto a solteros y casados la mujer tiene un salario más elevado
que el de los hombres.
LS0tCnRpdGxlOiAiUkhfQ29sYWJvcmFkb3Jlcy9CYWphcyIKYXV0aG9yOiAiRXF1aXBvIDYiCmRhdGU6ICIwNC0xMC0yMDIyIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgdG9jOiB0cnVlCiAgIHRvY19mbG9hdDogdHJ1ZQogICBjb2RlX2Rvd25sb2FkOiB0cnVlCgotLS0KIyMgUkhfQ29sYWJvcmFkb3Jlcy9CYWphcwoKYGBge3J9CiNmaWxlLmNob29zZSgpCgpSaENvbGFiPC1yZWFkLmNzdigiL1VzZXJzL2pvc2VyYW1vbnZhenF1ZXpndXptYW4vRG9jdW1lbnRzL1RlY25vbG/MgWdpY28gZGUgTW9udGVycmV5L1NlcHRpbW8gc2VtZXN0cmUvQW5hbGnMgXRpY2EgZGUgZGF0b3MgL1JFVE8vQmFzZXMgZGUgZGF0b3MgKGxpbXBpYXMpIENTViAvQmFzZURhdG9zTCBSSF9Db2xhYm9yYWRvcmVzLmNzdiIpClJoQmFqYXM8LXJlYWQuY3N2KCIvVXNlcnMvam9zZXJhbW9udmF6cXVlemd1em1hbi9Eb2N1bWVudHMvVGVjbm9sb8yBZ2ljbyBkZSBNb250ZXJyZXkvU2VwdGltbyBzZW1lc3RyZS9BbmFsacyBdGljYSBkZSBkYXRvcyAvUkVUTy9CYXNlcyBkZSBkYXRvcyAobGltcGlhcykgQ1NWIC9CYXNlRF9MaW1waWEgUkhfIEJhamFzIC5jc3YiKQoKCgoKYGBgCgoKIyMgIFRpcG9zIGRlIFZhcmlhYmxlcyBFeGlzdGVudGVzIHBhcmEgUkhDT0xBQgoKYGBge3J9Cgp2YXJpYWJsZTwtYygibnVtZXJvX2RlX2VtcGxlYWRvIiwibm9tYnJlX2NvbXBsZXRvIiwgImVkYWQiLCAiZ2VuZXJvIiwgImZlY2hhX2RlX2FsdGEiLCAiYW50aW9ndWVkYWQiLCAiQkFKQSIsICJwdWVzdG8iLCAiZGVwYXJ0YW1lbnRvIiwgIm1hbm9fZGVfb2JyYSIsICJzYWxhcmlvX2RpYXJpbyIsICJjb2xvbmlhIiwgIm11bmljaXBpbyIpCgp0eXBlPC1jKCJDdWFsaXRhdGl2byAobm9taW5hbCkiLCJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbnRpdGF0aXZvKGRpc2NyZXRhKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbnRpdGF0aXZvKGRpc2NyZXRhKSIsICJjdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbGl0YXRpdm8gKG5vbWluYWwpIiwgIkN1YWxpdGF0aXZvIChub21pbmFsKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbGl0YXRpdm8gKG5vbWluYWwpIiwgIkN1YW50aXRhdGl2byAoY29udGludWEpIiwgIkN1YWxpdGF0aXZvIChub21pbmFsKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiKQoKRXNjYWxhX2RlX01lZGljacOzbjwtYygiTnVtZXJvIiwgIkZlY2hhIiwgIkRlcGFydGFtZW50byIsICJTYWxhcmlvIiwgIkVzdGFkbyIpCgoKdGFibGU8LWRhdGEuZnJhbWUodmFyaWFibGUsdHlwZSkKa25pdHI6OmthYmxlKHRhYmxlKQoKCgpgYGAKCgojIyAgVGlwb3MgZGUgVmFyaWFibGVzIEV4aXN0ZW50ZXMgcGFyYSBSSEJBSkFTCgpgYGB7cn0KCnZhcmlhYmxlPC1jICgibm9tYnJlIiwiZWRhZCIsICJnZW5lcm8iLCAiZmVjaGFfYWx0YSIsICJtb3Rpdm9fYmFqYSIsICJkaWFzX2RlX3RyYWJham8iLCAiYmFqYSIsICJwdWVzdG9fcXVlX2Rlc2VtcGXDsWEiLCAic2FsYXJpb19pbXNzIiwgImNvbG9uaWEiLCAibXVuaWNpcGlvIiwgImVzdGFkbyIsICJlc3RhZG9fY2l2aWwiICkKCgp0eXBlPC1jICgiQ3VhbGl0YXRpdm8gKG5vbWluYWwpIiwiQ3VhbnRpdGF0aXZvKGRpc2NyZXRhKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbnRpdGF0aXZvKGRpc2NyZXRhKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbnRpdGF0aXZvKGRpc2NyZXRhKSIsICJDdWFudGl0YXRpdm8oZGlzY3JldGEpIiwgIkN1YWxpdGF0aXZvIChub21pbmFsKSIsICJDdWFudGl0YXRpdm8oQ29udGludWEpIiwgIkN1YWxpdGF0aXZvIChub21pbmFsKSIsICJDdWFsaXRhdGl2byAobm9taW5hbCkiLCAiQ3VhbGl0YXRpdm8gKG5vbWluYWwpIiwgIkN1YWxpdGF0aXZvIChub21pbmFsKSIgKQoKRXNjYWxhX2RlX01lZGljacOzbjwtYygiTnVtZXJvIiwgIkZlY2hhIiwgIkRlcGFydGFtZW50byIsICJTYWxhcmlvIiwgIkVzdGFkbyIpCgoKdGFibGU8LWRhdGEuZnJhbWUodmFyaWFibGUsdHlwZSkKa25pdHI6OmthYmxlKHRhYmxlKQoKCgpgYGAKCiMjIyBMbGFtYXIgbGlicmVyaWFzIAoKYGBge3Igd2FybmluZz1UUlVFfQoKbGlicmFyeShmb3JlaWduKQpsaWJyYXJ5KGRwbHlyKSAgICAgICAgIyBkYXRhIG1hbmlwdWxhdGlvbiAKbGlicmFyeShmb3JjYXRzKSAgICAgICMgdG8gd29yayB3aXRoIGNhdGVnb3JpY2FsIHZhcmlhYmxlcwpsaWJyYXJ5KGdncGxvdDIpICAgICAgIyBkYXRhIHZpc3VhbGl6YXRpb24gCmxpYnJhcnkoamFuaXRvcikgICAgICAjIGRhdGEgZXhwbG9yYXRpb24gYW5kIGNsZWFuaW5nIApsaWJyYXJ5KEhtaXNjKSAgICAgICAgIyBzZXZlcmFsIHVzZWZ1bCBmdW5jdGlvbnMgZm9yIGRhdGEgYW5hbHlzaXMgCmxpYnJhcnkocHN5Y2gpICAgICAgICAjIGZ1bmN0aW9ucyBmb3IgbXVsdGl2YXJpYXRlIGFuYWx5c2lzIApsaWJyYXJ5KG5hbmlhcikgICAgICAgIyBzdW1tYXJpZXMgYW5kIHZpc3VhbGl6YXRpb24gb2YgbWlzc2luZyB2YWx1ZXMgTkFzCmxpYnJhcnkoZGxvb2tyKSAgICAgICAjIHN1bW1hcmllcyBhbmQgdmlzdWFsaXphdGlvbiBvZiBtaXNzaW5nIHZhbHVlcyBOQXMKbGlicmFyeShjb3JycGxvdCkgICAgICMgY29ycmVsYXRpb24gcGxvdHMKbGlicmFyeShqdG9vbHMpICAgICAgICMgcHJlc2VudGF0aW9uIG9mIHJlZ3Jlc3Npb24gYW5hbHlzaXMgCmxpYnJhcnkobG10ZXN0KSAgICAgICAjIGRpYWdub3N0aWMgY2hlY2tzIC0gbGluZWFyIHJlZ3Jlc3Npb24gYW5hbHlzaXMgCmxpYnJhcnkoY2FyKSAgICAgICAgICAjIGRpYWdub3N0aWMgY2hlY2tzIC0gbGluZWFyIHJlZ3Jlc3Npb24gYW5hbHlzaXMKbGlicmFyeShvbHNycikgICAgICAgICMgZGlhZ25vc3RpYyBjaGVja3MgLSBsaW5lYXIgcmVncmVzc2lvbiBhbmFseXNpcyAKbGlicmFyeShrYWJsZUV4dHJhKSAgICMgSFRNTCB0YWJsZSBhdHRyaWJ1dGVzCgoKYGBgCgoKIyMgVmVyaWZpY2FyIGxhIGVzdHJ1Y3R1cmEgZGUgbGEgYmFzZSBkZSBkYXRvcwoKYGBge3J9CgpzdHIoUmhDb2xhYikKc3RyKFJoQmFqYXMpCgoKYGBgCgojIyBzZWxlY2Npb25hciBjb2x1bW5hcyAvIHZhcmlhYmxlcyAKCmBgYHtyfQoKUmhDb2xhYjE8LVJoQ29sYWIgClJoQmFqYXMxPC1SaEJhamFzIAoKYGBgCgoKIyMgTGltcGllemEgZGUgZGF0b3MgCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKUmhDb2xhYjE8LVJoQ29sYWIgJT4lIHNlbGVjdCgtb25lX29mKCdudW1lcm9fZGVfZW1wbGVhZG8nLCdGZWNoYV9hbHRhJyAsICdCQUpBJywgJ2VkYWQnKSkKCgoKIyBsZXRzIHJlbmFtZSB0aGUgc2VsZWN0ZWQgY29sdW1ucyAvIHZhcmlhYmxlcwpzdW1tYXJ5KFJoQ29sYWIxKQpuYW1lcyhSaENvbGFiMSk8LWMoJ05vbV9Db21wJywgJ0dlbicsICdGZWNoYV9hbHRhJywgJ0FudCcsICdQdWVzdG8nLCAnRGVwJywgJ01ETycsICdTYWxfRGlhcmlvJywgJ0NvbCcsICdNdW4nKQpuYW1lcyhSaEJhamFzMSk8LWMoJ05vbScsICdFZGFkJywgJ0dlbicsICdGZWNoYV9hbHRhJywgJ01CJywgJ0TDrWFzX3RyYWInLCAnQmFqYScsICdQdWVzdERlcycsICdTYWxfSU1TUycsICdDb2wnLCAnTXVuJywgJ0VzdGFkbycsICdFc3RDaXYnKQoKIyNsZXRzIGNvbnZlcnQgZmVjaGFfbmFjaW1pZW50byB0byBkYXRlIGZvcm1hdCAKCgpSaENvbGFiMSRGZWNoYV9hbHRhPC1hcy5EYXRlKFJoQ29sYWIkZmVjaGFfZGVfYWx0YSwgZm9ybWF0ID0gIiVkLyVtLyVZIikKUmhCYWphczEkRmVjaGFfYWx0YTwtYXMuRGF0ZShSaEJhamFzMSRGZWNoYV9hbHRhLCBmb3JtYXQgPSAiJWQvJW0vJVkiKQpSaEJhamFzMSRCYWphPC1hcy5EYXRlKFJoQmFqYXMxJEJhamEsIGZvcm1hdCA9ICIlZC8lbS8lWSIpCgpzdHIoUmhDb2xhYjEpCnN0cihSaEJhamFzMSkKCgoKCiMgRWxpbWluYXIgTkEncyB5IHN1c3RpdHVpciBjb24gMCdzCgpzdW0oaXMubmEoUmhDb2xhYjEpKQpzdW0oaXMubmEoUmhCYWphczEpKQoKCnN1bW1hcnkoUmhDb2xhYjEpCnN1bW1hcnkoUmhCYWphczEpCgpSaENvbGFiMSA8LSBuYS5vbWl0KFJoQ29sYWIxKQpSaEJhamFzMSA8LSBuYS5vbWl0KFJoQmFqYXMxKQoKCnN1bW1hcnkoUmhDb2xhYjEpCnN1bW1hcnkoUmhCYWphczEpICAKCnN0cihSaENvbGFiMSkKc3RyKFJoQmFqYXMxKQoKCmBgYAoKCiMjIENhbGN1bGFyIGxhIHZhcmlhYmxlICJhw7FvIiBlbiBhw7FvcyBwYXJhIHJlYWxpemFyIGNhcmFjdGVyaXN0aWNhcyBhZGljaW9uYWxlcyBkZSBsb3MgY29sYWJvcmFkb3JlcyAKCmBgYHtyfQoKbGlicmFyeShsdWJyaWRhdGUpCgoKZWRhZDwtdHJ1bmMoKFJoQ29sYWIxJEZlY2hhX2FsdGEgJS0tJSBSaENvbGFiMSRGZWNoYV9hbHRhKSAvIHllYXJzKDEpKSAjICUtLSUgY3JlYXRlcyBhIHRpbWUgaW50ZXJ2YWwgYmFzZWQgb24gYXMuZGF0ZSgpIGZvcm1hdApSaENvbGFiMSRlZGFkPC1lZGFkCgplZGFkPC10cnVuYygoUmhCYWphczEkRmVjaGFfYWx0YSAlLS0lIFJoQmFqYXMxJEZlY2hhX2FsdGEpIC8geWVhcnMoMSkpCmVkYWQ8LXRydW5jKChSaEJhamFzMSRCYWphICUtLSUgUmhCYWphczEkQmFqYSkgLyB5ZWFycygxKSkKCgpgYGAKCgojIyBDb252ZXJ0aXIgbGFzIHZhcmlhYmxlcyBhIGZhY3RvciBwYXJhIHBvZGVyIGNyZWFyIGdyYWZpY2FzIGRlc2NyaXB0aXZhcyAKCmBgYHtyfQoKIyMjICBDb2xhYjEKUmhDb2xhYjEkR2VuPC1hcy5mYWN0b3IoUmhDb2xhYjEkR2VuKQpSaENvbGFiMSRQdWVzdG88LWFzLmZhY3RvcihSaENvbGFiMSRQdWVzdG8pClJoQ29sYWIxJERlcDwtYXMuZmFjdG9yKFJoQ29sYWIxJERlcCkKUmhDb2xhYjEkTXVuPC1hcy5mYWN0b3IoUmhDb2xhYjEkTXVuKQpSaENvbGFiMSRDb2w8LWFzLmZhY3RvcihSaENvbGFiMSRDb2wpCgoKIyMjICBCYWphczEgCgpSaEJhamFzMSRHZW48LWFzLmZhY3RvcihSaEJhamFzMSRHZW4pClJoQmFqYXMxJE1CPC1hcy5mYWN0b3IoUmhCYWphczEkTUIpClJoQmFqYXMxJETDrWFzX3RyYWI8LWFzLmZhY3RvcihSaEJhamFzMSREw61hc190cmFiKQpSaEJhamFzMSRQdWVzdERlczwtYXMuZmFjdG9yKFJoQmFqYXMxJFB1ZXN0RGVzKQpSaEJhamFzMSRDb2w8LWFzLmZhY3RvcihSaEJhamFzMSRDb2wpClJoQmFqYXMxJE11bjwtYXMuZmFjdG9yKFJoQmFqYXMxJE11bikKUmhCYWphczEkRXN0YWRvPC1hcy5mYWN0b3IoUmhCYWphczEkRXN0YWRvKQpSaEJhamFzMSRFc3RDaXY8LWFzLmZhY3RvcihSaEJhamFzMSRFc3RDaXYpCgpgYGAKCgoKIyMgIFZlcmlvZmljYXIgbGEgZXN0cnVjdHVyYSBkZSBsYXMgYmFzZXMgZGUgZGF0b3MgUmhDb2xhYjEgeSBSaEJhamFzMSAgCgpgYGB7cn0KCnN0cihSaENvbGFiMSkKc3VtbWFyeShSaENvbGFiMSkKCnN0cihSaEJhamFzMSkKc3VtbWFyeShSaEJhamFzMSkKCgoKYGBgCgojIyBNb3N0cmFyIHRhYmxhcyBkZSB2aXN1YWxpemFjacOzbiBwYXJhIGlkZW50aWZpY2FyIHBlcnNwZWN0aXZhcyByZWxldmFudGVzIGRlIGxhcyBiYXNlcyBkZSBkYXRvcyBSaENvbGFiMSB5IFJoQmFqYXMxIAoKYGBge3J9CgojIyBDb2xhYm9yYWRvcmVzCgoKdGFwcGx5KFJoQ29sYWIxJFNhbF9EaWFyaW8sCiAgICAgICBsaXN0KFJoQ29sYWIxJEdlbixSaENvbGFiMSRQdWVzdG8pLCBtZWFuKQoKdGFwcGx5KFJoQ29sYWIxJFNhbF9EaWFyaW8sCiAgICAgICBsaXN0KFJoQ29sYWIxJEdlbixSaENvbGFiMSREZXApLCBtZWFuKQoKIyMgQmFqYXMKCnRhcHBseShSaEJhamFzMSRTYWxfSU1TUyxSaEJhamFzMSRHZW4sbWVhbikKCmBgYAoKIyMgUmVlbXBsYXphciBlbCB2YWxvciBhdMOtcGljbyBkZSBzYWxhcmlvX2RpYXJpbyBjb24gbGEgbWVkaWFuYQoKYGBge3J9CgpSaENvbGFiMSRTYWxfRGlhcmlvPC1yZXBsYWNlKFJoQ29sYWIxJFNhbF9EaWFyaW8sUmhDb2xhYjEkU2FsX0RpYXJpbz4xMDAwMDAwLDE4MSkKCmBgYAoKCiMjIE1vc3RyYXIgZ3LDoWZpY29zIGRlIHZpc3VhbGl6YWNpw7NuIGRlIGRhdG9zIHBhcmEgcXVlIHBvZGFtb3MgaWRlbnRpZmljYXIgaW5mb3JtYWNpw7NuIHJlbGV2YW50ZSBkZSBudWVzdHJvIGNvbmp1bnRvIGRlIGRhdG9zIFJIQ29sYWIgeSBSSEJhamFzCgpgYGB7cn0KCnRhcHBseShSaENvbGFiMSRTYWxfRGlhcmlvLAogICAgICAgbGlzdChSaENvbGFiMSRHZW4sUmhDb2xhYjEkRGVwKSwgbWVhbikKCmhpc3QoUmhCYWphczEkRWRhZCwgZnJlcT1UUlVFLCBjb2w9J29yYW5nZScsIG1haW49Ikhpc3RvZ3JhbWEgZGUgRWRhZCIseGxhYj0iRWRhZCBlbiBBw7FvcyIpCgpnZ3Bsb3QoUmhCYWphczEsIGFlcyh4PUdlbiwgeT1FZGFkLCBmaWxsPUdlbikpICsgCiAgZ2VvbV9ib3hwbG90KCkgCgpnZ3Bsb3QoUmhDb2xhYjEsIGFlcyh4PUdlbiwgeT1TYWxfRGlhcmlvLCBmaWxsPUdlbikpICsgCiAgZ2VvbV9ib3hwbG90KCkgCgpnZ3Bsb3QoUmhDb2xhYjEsIGFlcyhHZW4sU2FsX0RpYXJpbyxmaWxsPUdlbikpICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgZ2d0aXRsZSgiU2FsYXJpbyBEaWFyaW8gcG9yIEdlbmVybyIpCgoKZ2dwbG90KFJoQmFqYXMxLCBhZXMoeD1HZW4sIHk9U2FsX0lNU1MsIGZpbGw9R2VuKSkgKyAKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsgCiAgZmFjZXRfZ3JpZCh+RXN0Q2l2KSArIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpCgoKYGBgCgojIyAgKkNvbmNsdXNpb25lcyoKCiMjIyMgIEVuIHByb21lZGlvIGxhIG1heW9yIHBhcnRlIGRlIGxvcyBjb2xhYm9yYWRvcmVzIGRlIEZvcm0gdGllbmVuIHVuYSBlZGFkIGRlIGVudHJlIDIwIHkgMzAgYcOxb3MsIGhheSBlbXBsZWFkYXMgcXVlIHRpZW5lbiB1biBtw6F4aW1vIGRlIDU2IGHDsW9zIG1pZW50cmFzIHF1ZSBoYXkgdW4gZW1wbGVhZG8gcXVlIHBhc2EgeWEgZGUgbG9zIDYwIGHDsW9zIGRlIGVkYWQuIEVudHJlIGhvbWJyZXMgeSBtdWplcmVzIGVzdMOhbiBlbiB1biByYW5nbyBkZSAyMCBhIDQwIGHDsW9zIGRlIGVkYWQKCiMjIyMgIEVsIHNhbGRvIHByb21lZGlvIHRhbnRvIHBhcmEgaG9tYnJlcyBjb21vIHBhcmEgbXVqZXJlcyByb25kYSBlbiB1biBtb250byBkZSAxNzAgeSAxODAgcGVzb3MsIHBlcm8gaGF5IHVuYSBlbXBsZWFkYSBxdWUgbGxlZ2EgYSB1biBzYWxhcmlvIGRpYXJpbyBkZSA0NDEgcGVzb3MsIGR1cGxpY2FuZG8gZWwgc2FsZG8gcHJvbWVkaW8gZGUgbGEgbWF5b3IgcGFydGUgZGUgbG9zIGVtcGxlYWRvcyBkZSBsYSBjb21wYcOxw61hLiAKCiMjIyMgIEVuIGN1YW50byBhIHNvbHRlcm9zIHkgY2FzYWRvcyBsYSBtdWplciB0aWVuZSB1biBzYWxhcmlvIG3DoXMgZWxldmFkbyBxdWUgZWwgZGUgbG9zIGhvbWJyZXMuCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=