a. FORM – Recursos Humanos

Análisis estadístico descriptivo.

Librerías requeridas

library(foreign)
library(dplyr)        # data manipulation 
library(forcats)      # to work with categorical variables
library(ggplot2)      # data visualization 
library(janitor)      # data exploration and cleaning 
# install.packages("psych")
library(corrplot)     # correlation plots
library(lmtest)       # diagnostic checks - linear regression analysis 
library(car)          # diagnostic checks - linear regression analysis

Importar base de datos.

Se ha decidido también borrar el número de crédito de infonavit, se elimina la columna.

rh<-read.csv("/Users/georginamartinez/Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a decisiones/Base de datos FORM/RH/rh_limpia5.csv")
summary(rh)
##  AÑO.DE.NACIMIENTO    GENERO          FECHA.DE.ALTA    Primer.mes  
##  Min.   :1955      Length:104         Min.   :2010   Min.   :2010  
##  1st Qu.:1978      Class :character   1st Qu.:2021   1st Qu.:2020  
##  Median :1989      Mode  :character   Median :2022   Median :2022  
##  Mean   :1987                         Mean   :2021   Mean   :2021  
##  3rd Qu.:1996                         3rd Qu.:2022   3rd Qu.:2022  
##  Max.   :2003                         Max.   :2022   Max.   :2022  
##     X4to.mes       PUESTO          DEPARTAMENTO       SALARIO.DIARIO.IMSS
##  Min.   :2010   Length:104         Length:104         Min.   :144.4      
##  1st Qu.:2021   Class :character   Class :character   1st Qu.:176.7      
##  Median :2022   Mode  :character   Mode  :character   Median :180.7      
##  Mean   :2021                                         Mean   :179.3      
##  3rd Qu.:2022                                         3rd Qu.:180.7      
##  Max.   :2022                                         Max.   :337.1      
##  N...CREDITO.INFONAVIT LUGAR.DE.NACIMIENTO  MUNICIPIO        
##  Length:104            Length:104          Length:104        
##  Class :character      Class :character    Class :character  
##  Mode  :character      Mode  :character    Mode  :character  
##                                                              
##                                                              
##                                                              
##     ESTADO          ESTADO.CIVIL      
##  Length:104         Length:104        
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
rh1<-rh
rh1<-subset(rh1,select=-c(N...CREDITO.INFONAVIT))

summary(rh1)
##  AÑO.DE.NACIMIENTO    GENERO          FECHA.DE.ALTA    Primer.mes  
##  Min.   :1955      Length:104         Min.   :2010   Min.   :2010  
##  1st Qu.:1978      Class :character   1st Qu.:2021   1st Qu.:2020  
##  Median :1989      Mode  :character   Median :2022   Median :2022  
##  Mean   :1987                         Mean   :2021   Mean   :2021  
##  3rd Qu.:1996                         3rd Qu.:2022   3rd Qu.:2022  
##  Max.   :2003                         Max.   :2022   Max.   :2022  
##     X4to.mes       PUESTO          DEPARTAMENTO       SALARIO.DIARIO.IMSS
##  Min.   :2010   Length:104         Length:104         Min.   :144.4      
##  1st Qu.:2021   Class :character   Class :character   1st Qu.:176.7      
##  Median :2022   Mode  :character   Mode  :character   Median :180.7      
##  Mean   :2021                                         Mean   :179.3      
##  3rd Qu.:2022                                         3rd Qu.:180.7      
##  Max.   :2022                                         Max.   :337.1      
##  LUGAR.DE.NACIMIENTO  MUNICIPIO            ESTADO          ESTADO.CIVIL      
##  Length:104          Length:104         Length:104         Length:104        
##  Class :character    Class :character   Class :character   Class :character  
##  Mode  :character    Mode  :character   Mode  :character   Mode  :character  
##                                                                              
##                                                                              
## 

Tabla de frecuencia

library(dplyr)
library(janitor)
rh2 <- rh1
rh2 <- cbind(rh2,Empleado=c("Empleado"))
#summary(rh2)

Se generan las tablas de frecuencias de las variables CUALITATIVAS.

?table
## Help on topic 'table' was found in the following packages:
## 
##   Package               Library
##   vctrs                 /Library/Frameworks/R.framework/Versions/4.2/Resources/library
##   base                  /Library/Frameworks/R.framework/Resources/library
## 
## 
## Using the first match ...
genero<-table(rh2$GENERO)
#genero
knitr::kable(genero)
Var1 Freq
FEMENINO 59
MASCULINO 45
puesto<-table(rh2$PUESTO)
#puesto
knitr::kable(puesto)
Var1 Freq
AY. GENERAL 7
AYUDANTE DE MANTENIMIENTO 1
Ayudante general 1
AYUDANTE GENERAL 54
CHOFER 3
CHOFER GESTOR 1
COSTURERA 10
CUSTOMER SERVICE INF 1
ENFERMERA 1
GESTOR 1
GUARDIA DE SEGURIDAD 1
INSPECTOR DE CALIDAD 1
INSPECTORA DE CALIDAD 1
LIDER 1
LIMPIEZA 1
MANTENIMIENTO 1
MONTACARGUISTA 1
MOZO 1
OP. FLEXO-RANURADORA-REFILADORA 1
OPERADOR SIERRA 1
PINTOR 1
RECIBO 1
RESIDENTE 4
SOLDADOR 5
Supervisor de M√°quin 1
Supervisor de pegado 1
SUPERVISORA 1
departamento<-table(rh2$DEPARTAMENTO)
#departamento
knitr::kable(departamento)
Var1 Freq
37
Ay.flexo 1
Calidad 2
Cedis 6
CEDIS 2
Celdas 3
CORTADORAS 1
Costura 6
COSTURA 1
Costura T2 1
EHS 3
Embarques 4
Limpieza 1
Materiales 1
Paileria 4
Producción Retorn 8
Produccion Cartón MC 5
Produccion Cartón MDL 7
Rotativa 1
Stabilus 6
Troquel 4
lugar<-table(rh2$LUGAR.DE.NACIMIENTO)
#lugar
knitr::kable(lugar)
Var1 Freq
36
ACAYUCAN VERACRUZ 1
ACAYUCAN, VERACRUZ 1
CANATLAN, DURANGO 1
CANCUN, QUINTANA ROO 1
COMALCALCO, TABASCO 1
CUAHUTEMOC, DISTRITO FEDERAL 1
EBANO, SAN LUIS POTOSI 1
GOMEZ PALACIO, DURANGO 1
GUADALUPE, NUEVO LEON 3
HIDALGO, TAMAULIPAS 2
HONDURAS, SANTA BARBARA 1
IXHUATAN, CHIAPAS 1
JESUS CARRANZA, VERACRUZ 1
LAS CHOAPAS, VERACRUZ 1
LLERA, TAMAULIPAS 1
MIGUEL HIDALGO CIUDAD DE MEXICO 1
MONTEMORELOS, NUEVO LEON 1
MONTERREY NL 1
MONTERREY NUEVO LEON 1
MONTERREY, NUEVO LEON 14
NUEVO LEON 1
OLUTA, VERACRUZ 1
PARRAS COAHUILA DE ZARAGOZA 1
RAMOS ARIZPE, COAHUILA 1
RAYON, SAN LUIS POTOSI 1
SALAMANCA, GUANAJUATO 1
SALTILLO, COAHUILA 2
SAN JUAN EVANGELISYA. VERACRUZ 1
SAN LUIS POTOSI 1
SAN NICOLAS DE LOS GARZA 1
SAN NICOLAS DE LOS GARZA NUEVO LEON. 1
SAN NICOLAS DE LOS GARZA, NUEVO LEON 11
SAN PEDRO GARZA GARCIA, NUEVO LEON 1
TAMAPACHE, VERACRUZ 1
TANTOYUCA, VERACRUZ 1
TERMINAL DE PROVIDENCIA - ZACATECAS 1
VERACRUZ 1
VERACRUZ, TANTOYUCA 1
VILLA CORZO, CHIAPAS 1
ZAMORA, VERACRUZ 1
ZONGOLICA, VERACRUZ 1
municipio<-table(rh2$MUNICIPIO)
#municipio
knitr::kable(municipio)
Var1 Freq
APODACA 67
CANADA BLANCA 1
GUADALUPE 5
JUAREZ 9
MONTERREY 3
PESQUERIA 9
RAMOS ARIZPE 3
SALTILLO 5
SAN NICOLAS DE LOS G 2
estado<-table(rh2$ESTADO)
#estado
knitr::kable(estado)
Var1 Freq
Coahuila 9
Nuevo Leon 95
civil<-table(rh2$ESTADO.CIVIL)
#civil
knitr::kable(civil)
Var1 Freq
Casado 39
Divorciado 3
Soltero 42
Union libre 20

Tablas cruzada

cruzada1<-table(rh2$GENERO,rh$AÑO.DE.NACIMIENTO)

knitr::kable(cruzada1)
1955 1962 1963 1964 1966 1967 1968 1969 1972 1973 1974 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1987 1988 1989 1990 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003
FEMENINO 0 2 1 0 2 1 0 3 2 1 0 2 2 1 2 1 1 3 1 4 1 2 2 0 4 2 4 3 2 2 2 0 2 0 2 2 0
MASCULINO 1 0 0 1 0 2 1 2 0 1 1 0 1 1 0 0 0 1 0 2 1 1 1 2 2 1 1 2 0 2 2 1 2 2 3 4 4
cruzada2<-table(rh2$ESTADO,rh2$GENERO)
knitr::kable(cruzada2)
FEMENINO MASCULINO
Coahuila 1 8
Nuevo Leon 58 37

Gráficos de datos cualitativos y cuantitativos

Datos cualitativos

Se obtiene primeramente una gráfica de barras que compara los diferentes estados civiles (actuales) de los colaboradores. Observamos que la gran mayoría son solteros o casados, y muy pocos divorciados.

barplot(prop.table(table(rh2$ESTADO.CIVIL)),col=c("orange","blue","red","green"),main="Estado Civil", ylab ="Frecuencias",las=1)

La siguiente pie chart nos da a conocer como existen más mujeres que hombres laborando actualmente en Form.

pie(prop.table(table(rh2$GENERO)),col=c("pink","blue"),main="Género", ylab ="Frecuencias",las=1)

Cambio en la base de datos, se elimina un valor incorrecto en el salario.
str(rh2)
## 'data.frame':    104 obs. of  13 variables:
##  $ AÑO.DE.NACIMIENTO  : int  1990 1984 1984 1985 1984 1962 1966 1976 1963 1979 ...
##  $ GENERO             : chr  "FEMENINO" "MASCULINO" "FEMENINO" "MASCULINO" ...
##  $ FECHA.DE.ALTA      : int  2013 2018 2015 2016 2020 2020 2022 2022 2022 2022 ...
##  $ Primer.mes         : int  2013 2018 2015 2016 2020 2020 2022 2022 2022 2022 ...
##  $ X4to.mes           : int  2013 2019 2015 2016 2020 2020 2022 2022 2022 2022 ...
##  $ PUESTO             : chr  "SUPERVISORA" "MANTENIMIENTO" "COSTURERA" "AYUDANTE GENERAL" ...
##  $ DEPARTAMENTO       : chr  "Produccion Cartón MC" "EHS" "Costura" "Producción Retorn" ...
##  $ SALARIO.DIARIO.IMSS: num  337 280 260 241 241 ...
##  $ LUGAR.DE.NACIMIENTO: chr  "" "" "" "" ...
##  $ MUNICIPIO          : chr  "APODACA" "APODACA" "APODACA" "APODACA" ...
##  $ ESTADO             : chr  "Nuevo Leon" "Nuevo Leon" "Nuevo Leon" "Nuevo Leon" ...
##  $ ESTADO.CIVIL       : chr  "Casado" "Soltero" "Casado" "Casado" ...
##  $ Empleado           : chr  "Empleado" "Empleado" "Empleado" "Empleado" ...
# ·limina linea 4, donde hay un dato incorrecto en el salario
rh3 <- rh2[-4,]

summary(rh3)
##  AÑO.DE.NACIMIENTO    GENERO          FECHA.DE.ALTA    Primer.mes  
##  Min.   :1955      Length:103         Min.   :2010   Min.   :2010  
##  1st Qu.:1978      Class :character   1st Qu.:2021   1st Qu.:2020  
##  Median :1989      Mode  :character   Median :2022   Median :2022  
##  Mean   :1987                         Mean   :2021   Mean   :2021  
##  3rd Qu.:1996                         3rd Qu.:2022   3rd Qu.:2022  
##  Max.   :2003                         Max.   :2022   Max.   :2022  
##     X4to.mes       PUESTO          DEPARTAMENTO       SALARIO.DIARIO.IMSS
##  Min.   :2010   Length:103         Length:103         Min.   :144.4      
##  1st Qu.:2021   Class :character   Class :character   1st Qu.:176.7      
##  Median :2022   Mode  :character   Mode  :character   Median :180.7      
##  Mean   :2021                                         Mean   :178.8      
##  3rd Qu.:2022                                         3rd Qu.:180.7      
##  Max.   :2022                                         Max.   :337.1      
##  LUGAR.DE.NACIMIENTO  MUNICIPIO            ESTADO          ESTADO.CIVIL      
##  Length:103          Length:103         Length:103         Length:103        
##  Class :character    Class :character   Class :character   Class :character  
##  Mode  :character    Mode  :character   Mode  :character   Mode  :character  
##                                                                              
##                                                                              
##                                                                              
##    Empleado        
##  Length:103        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

Datos cuantitativos

El presente histograma ve el salario, y como la mayoría se concentra en entre los 150 y 200 pesos diarios. Con muy pocas excepciones que superan esto.

hist((rh3$SALARIO.DIARIO.IMSS),col=c("red"),main="Salario Diario",xlab="Salario en pesos mx")

Mediante el siguiente histograma notamos que la mayoría de los ingresos en Form son recientes, de entre el 202 y 2022; indicando que hay poca antigüedad en los colaboradores.

hist((rh3$Primer.mes),col=c("lightblue"),main="Año del Primer Mes en FORM",xlab="Año")

Gráficos de dispersión

El presente scatterplot compara la fecha de ingreso con el salario diario, en donde vemos que los que tienen mayor antigüedad (desde el 2010), ganan lo mismo que algunos de los recién ingresados. El más alto ingresando en el 2014 (aproximadamente)

plot(rh2$FECHA.DE.ALTA, rh2$SALARIO.DIARIO.IMSS, main = "Fecha de ingreso con salario diario",
     xlab = "Fecha de ingreso", ylab = "Salario",
     pch = 19, frame = FALSE)

Ahora, comparando el año de nacimiento con el salario, observamos que la persona con un mayor ingreso es alguien nacido en 1990. Fuera de algunos casos específicos, los salarios no ven diferencia a las edades.

plot(rh2$AÑO.DE.NACIMIENTO, rh2$SALARIO.DIARIO.IMSS, main = "Año de nacimiento",
     xlab = "Año de nacimiento", ylab = "Salario",
     pch = 19, frame = FALSE)

Analizando otra vez, la fecha de nacimiento, observamos que la gran parte de los empleados nacieron en la decada de los ochentas y de los noventas.

boxplot(rh2$AÑO.DE.NACIMIENTO , vertical = TRUE)

b. FORM – Delivery Plan

Importar bases de datos

#file.choose()

bd <- read.csv("/Users/georginamartinez/Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a decisiones/Base de datos FORM/Delivery Plan/FORM - Delivery Plan.xlsx - DELIVERY PLAN(2) (1)C.csv")
bd3<- read.csv("/Users/georginamartinez/Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a decisiones/Base de datos FORM/Delivery Plan/2022.csv")
bd4<- read.csv("/Users/georginamartinez/Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a decisiones/Base de datos FORM/Delivery Plan/año.csv")
## Warning in read.table(file = file, header = header, sep = sep, quote = quote, :
## incomplete final line found by readTableHeader on '/Users/georginamartinez/
## Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a
## decisiones/Base de datos FORM/Delivery Plan/año.csv'
summary(bd)
##  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  
##    FEBRERO.22        MARZO.22         ABRIL.22          MAYO.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  
##     JUNIO.22          JULIO.22         AGOSTO.22       SEPTIEMBRE.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  
##   NOVIEMBRE.22     NOVIEMBRE.22.1     DICIEMBRE.22        ENERO.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  
##    FEBRERO.23    MARZO.23
##  Min.   :0    Min.   :0  
##  1st Qu.:0    1st Qu.:0  
##  Median :0    Median :0  
##  Mean   :0    Mean   :0  
##  3rd Qu.:0    3rd Qu.:0  
##  Max.   :0    Max.   :0
bd1 <- bd
bd1 <- subset(bd1, select = -c (PROYECTO, ITEM, ID.ODOO ))

sum(is.na(bd1))
## [1] 0
sum(is.na(bd))
## [1] 0
sapply(bd1, function(x) sum(is.na(x)))
## CLIENTE.PLANTA          JUNIO          JULIO         AGOSTO     SEPTIEMBRE 
##              0              0              0              0              0 
##        OCTUBRE      NOVIEMBRE      DICIEMBRE         ENE.22     FEBRERO.22 
##              0              0              0              0              0 
##       MARZO.22       ABRIL.22        MAYO.22       JUNIO.22       JULIO.22 
##              0              0              0              0              0 
##      AGOSTO.22  SEPTIEMBRE.22   NOVIEMBRE.22 NOVIEMBRE.22.1   DICIEMBRE.22 
##              0              0              0              0              0 
##       ENERO.23     FEBRERO.23       MARZO.23 
##              0              0              0
sapply(bd, function(x) sum(is.na(x)))
## CLIENTE.PLANTA       PROYECTO        ID.ODOO           ITEM          JUNIO 
##              0              0              0              0              0 
##          JULIO         AGOSTO     SEPTIEMBRE        OCTUBRE      NOVIEMBRE 
##              0              0              0              0              0 
##      DICIEMBRE         ENE.22     FEBRERO.22       MARZO.22       ABRIL.22 
##              0              0              0              0              0 
##        MAYO.22       JUNIO.22       JULIO.22      AGOSTO.22  SEPTIEMBRE.22 
##              0              0              0              0              0 
##   NOVIEMBRE.22 NOVIEMBRE.22.1   DICIEMBRE.22       ENERO.23     FEBRERO.23 
##              0              0              0              0              0 
##       MARZO.23 
##              0
#Cambiar el nombre de una columna
#library(dplyr)
#?colnames
#bd1$NOVIEMBRE.22 <- colnames("OCTUBRE.22") 

Tablas Frecuencia

Se generan las tablas de frecuencias de las variables únicamente de enero 2022 y enero 2023 ya que resulta poco práctico generar tablas de frecuencia con variables cuantitativas discretas y son 22 meses.

primer_año <- table(bd1$ENE.22)
knitr::kable(primer_año)
Var1 Freq
0 155
2 1
4 2
5 1
6 2
7 2
15 4
16 1
19 1
21 1
22 1
25 1
26 1
27 1
30 3
32 2
35 1
39 1
40 1
42 1
45 1
47 1
50 3
52 1
55 1
58 1
60 6
65 1
83 1
96 2
100 1
114 1
120 1
125 1
126 1
140 1
144 1
183 1
187 1
196 1
198 1
230 2
240 2
300 1
350 1
400 1
480 1
500 2
506 1
600 1
800 2
945 1
1200 1
2000 1
2200 1
3200 1
segundo_año <- table(bd1$ENERO.23)
knitr::kable(segundo_año)
Var1 Freq
0 230
138 1

Para esta base de datos no se generan tablas cruzadas por el tipo de variables que se tienen.

Gráficos cualitativos y cuantitativos

library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
pie(table(bd$CLIENTE.PLANTA))

En la gráfica podemos observar un panorama de qué clientes tienen mayor presencia que otros con la gráfica circular.

boxplot(bd3$PEDIDOS, main ="Total Ordenes 2022")

Podemos ver con el boxplot la dispersión que hay en las ordenes realizadas durante el año. Se tomó únicamente dicho año ya que es del único del que se tiene base completa de 12 meses. Podemos ver que la desviación estándar es simétrica y el bar está ligeramente por encima de la mitad de la caja de bigotes, por lo que el sesgo podría definirse negativo.

#?pie
pie((bd3$PEDIDOS), main="Ordenes por mes", las=1)

Cada número representa 1 mes consecutivamente y dicha gráfica nos permite ver de manera visual en qué mes hubo una mayor cantidad de deliveries.

Gráficos de dispersión

bd3$MES <- as.Date(bd3$MES, format ="%d/%m/%y")
library(tibble)
tibble(bd3)
## # A tibble: 12 × 2
##    MES        PEDIDOS
##    <date>       <int>
##  1 2020-01-01   19028
##  2 2020-02-01   23912
##  3 2020-03-01   35559
##  4 2020-04-01   43080
##  5 2020-05-01   43336
##  6 2020-06-01   39549
##  7 2020-07-01   73201
##  8 2020-08-01   30375
##  9 2020-09-01   62912
## 10 2020-10-01   27925
## 11 2020-11-01     488
## 12 2020-12-01     283
plot(bd3$MES, bd3$PEDIDOS, main = "Pedidos por mes 2022",
     xlab = "Mes", ylab = "Ordenes",
     pch = 19, frame = TRUE)

c. FORM – Delivery Performance

bd_delivery_perf <- read.csv("/Users/georginamartinez/Documents/Tec/Séptimo Semestre/Analítica para negocios, de los datos a decisiones/Base de datos FORM/BD Form Delivery Performance.csv")

# Convertir de caracter a fecha
bd_delivery_perf$Fecha <- as.Date(bd_delivery_perf$Fecha, format ="%d/%m/%y")

# Convertir de caracter a hora
bd_delivery_perf$Real.arrival <- substr(bd_delivery_perf$Real.arrival, start = 1, stop = 2)
bd_delivery_perf$Real.arrival<- as.integer(bd_delivery_perf$Real.arrival)  

bd_delivery_perf$Real.Departure <- substr(bd_delivery_perf$Real.Departure, start = 1, stop = 2)
bd_delivery_perf$Real.Departure<- as.integer(bd_delivery_perf$Real.Departure)  

# Cambiar los nombres de las variables más cortas y específicas

names(bd_delivery_perf) [2] = "Tptista"
names(bd_delivery_perf) [4] = "Plan_arr"
names(bd_delivery_perf) [5] = "Real_arr"
names(bd_delivery_perf) [6] = "Real_dep"
names(bd_delivery_perf) [7] = "Dif"
names(bd_delivery_perf)
## [1] "Cliente"  "Tptista"  "Fecha"    "Plan_arr" "Real_arr" "Real_dep" "Dif"

Tabla de frecuencia

Se generan las tablas de frecuencias de las variables CUALITATIVAS.

Tptista <-table(bd_delivery_perf$Tptista)
Tptista
## 
## DIONICIO  EZEQUIEL   JUVENCIO 
##        39        13        52
knitr::kable(Tptista)
Var1 Freq
DIONICIO 39
EZEQUIEL 13
JUVENCIO 52
Cliente <-table(bd_delivery_perf$Cliente)
Cliente
## 
##    MAGNA    MAHLE PRINTEL    VARROC 
##       13       39       13       39
knitr::kable(Cliente)
Var1 Freq
MAGNA 13
MAHLE 39
PRINTEL 13
VARROC 39

Tablas cruzada

cruzada1<-table(bd_delivery_perf$Tptista,bd_delivery_perf$Dif)

knitr::kable(cruzada1)
0 0.2 0.3 0.5 0.51 0.55 0.95 1 1.05 1.1 1.5 2.15 3.3
DIONICIO 13 1 1 1 1 2 2 10 2 3 2 1 0
EZEQUIEL 13 0 0 0 0 0 0 0 0 0 0 0 0
JUVENCIO 48 0 0 0 0 0 0 1 1 1 0 0 1
cruzada2<-table(bd_delivery_perf$Fecha,bd_delivery_perf$Dif,bd_delivery_perf$Cliente)
knitr::kable(cruzada2)
Var1 Var2 Var3 Freq
2020-01-01 0 MAGNA 1
2020-02-01 0 MAGNA 1
2020-03-01 0 MAGNA 1
2020-04-01 0 MAGNA 1
2020-05-01 0 MAGNA 1
2020-06-01 0 MAGNA 1
2020-07-01 0 MAGNA 2
2020-08-01 0 MAGNA 1
2020-09-01 0 MAGNA 1
2020-10-01 0 MAGNA 1
2020-11-01 0 MAGNA 1
2020-12-01 0 MAGNA 1
2020-01-01 0.2 MAGNA 0
2020-02-01 0.2 MAGNA 0
2020-03-01 0.2 MAGNA 0
2020-04-01 0.2 MAGNA 0
2020-05-01 0.2 MAGNA 0
2020-06-01 0.2 MAGNA 0
2020-07-01 0.2 MAGNA 0
2020-08-01 0.2 MAGNA 0
2020-09-01 0.2 MAGNA 0
2020-10-01 0.2 MAGNA 0
2020-11-01 0.2 MAGNA 0
2020-12-01 0.2 MAGNA 0
2020-01-01 0.3 MAGNA 0
2020-02-01 0.3 MAGNA 0
2020-03-01 0.3 MAGNA 0
2020-04-01 0.3 MAGNA 0
2020-05-01 0.3 MAGNA 0
2020-06-01 0.3 MAGNA 0
2020-07-01 0.3 MAGNA 0
2020-08-01 0.3 MAGNA 0
2020-09-01 0.3 MAGNA 0
2020-10-01 0.3 MAGNA 0
2020-11-01 0.3 MAGNA 0
2020-12-01 0.3 MAGNA 0
2020-01-01 0.5 MAGNA 0
2020-02-01 0.5 MAGNA 0
2020-03-01 0.5 MAGNA 0
2020-04-01 0.5 MAGNA 0
2020-05-01 0.5 MAGNA 0
2020-06-01 0.5 MAGNA 0
2020-07-01 0.5 MAGNA 0
2020-08-01 0.5 MAGNA 0
2020-09-01 0.5 MAGNA 0
2020-10-01 0.5 MAGNA 0
2020-11-01 0.5 MAGNA 0
2020-12-01 0.5 MAGNA 0
2020-01-01 0.51 MAGNA 0
2020-02-01 0.51 MAGNA 0
2020-03-01 0.51 MAGNA 0
2020-04-01 0.51 MAGNA 0
2020-05-01 0.51 MAGNA 0
2020-06-01 0.51 MAGNA 0
2020-07-01 0.51 MAGNA 0
2020-08-01 0.51 MAGNA 0
2020-09-01 0.51 MAGNA 0
2020-10-01 0.51 MAGNA 0
2020-11-01 0.51 MAGNA 0
2020-12-01 0.51 MAGNA 0
2020-01-01 0.55 MAGNA 0
2020-02-01 0.55 MAGNA 0
2020-03-01 0.55 MAGNA 0
2020-04-01 0.55 MAGNA 0
2020-05-01 0.55 MAGNA 0
2020-06-01 0.55 MAGNA 0
2020-07-01 0.55 MAGNA 0
2020-08-01 0.55 MAGNA 0
2020-09-01 0.55 MAGNA 0
2020-10-01 0.55 MAGNA 0
2020-11-01 0.55 MAGNA 0
2020-12-01 0.55 MAGNA 0
2020-01-01 0.95 MAGNA 0
2020-02-01 0.95 MAGNA 0
2020-03-01 0.95 MAGNA 0
2020-04-01 0.95 MAGNA 0
2020-05-01 0.95 MAGNA 0
2020-06-01 0.95 MAGNA 0
2020-07-01 0.95 MAGNA 0
2020-08-01 0.95 MAGNA 0
2020-09-01 0.95 MAGNA 0
2020-10-01 0.95 MAGNA 0
2020-11-01 0.95 MAGNA 0
2020-12-01 0.95 MAGNA 0
2020-01-01 1 MAGNA 0
2020-02-01 1 MAGNA 0
2020-03-01 1 MAGNA 0
2020-04-01 1 MAGNA 0
2020-05-01 1 MAGNA 0
2020-06-01 1 MAGNA 0
2020-07-01 1 MAGNA 0
2020-08-01 1 MAGNA 0
2020-09-01 1 MAGNA 0
2020-10-01 1 MAGNA 0
2020-11-01 1 MAGNA 0
2020-12-01 1 MAGNA 0
2020-01-01 1.05 MAGNA 0
2020-02-01 1.05 MAGNA 0
2020-03-01 1.05 MAGNA 0
2020-04-01 1.05 MAGNA 0
2020-05-01 1.05 MAGNA 0
2020-06-01 1.05 MAGNA 0
2020-07-01 1.05 MAGNA 0
2020-08-01 1.05 MAGNA 0
2020-09-01 1.05 MAGNA 0
2020-10-01 1.05 MAGNA 0
2020-11-01 1.05 MAGNA 0
2020-12-01 1.05 MAGNA 0
2020-01-01 1.1 MAGNA 0
2020-02-01 1.1 MAGNA 0
2020-03-01 1.1 MAGNA 0
2020-04-01 1.1 MAGNA 0
2020-05-01 1.1 MAGNA 0
2020-06-01 1.1 MAGNA 0
2020-07-01 1.1 MAGNA 0
2020-08-01 1.1 MAGNA 0
2020-09-01 1.1 MAGNA 0
2020-10-01 1.1 MAGNA 0
2020-11-01 1.1 MAGNA 0
2020-12-01 1.1 MAGNA 0
2020-01-01 1.5 MAGNA 0
2020-02-01 1.5 MAGNA 0
2020-03-01 1.5 MAGNA 0
2020-04-01 1.5 MAGNA 0
2020-05-01 1.5 MAGNA 0
2020-06-01 1.5 MAGNA 0
2020-07-01 1.5 MAGNA 0
2020-08-01 1.5 MAGNA 0
2020-09-01 1.5 MAGNA 0
2020-10-01 1.5 MAGNA 0
2020-11-01 1.5 MAGNA 0
2020-12-01 1.5 MAGNA 0
2020-01-01 2.15 MAGNA 0
2020-02-01 2.15 MAGNA 0
2020-03-01 2.15 MAGNA 0
2020-04-01 2.15 MAGNA 0
2020-05-01 2.15 MAGNA 0
2020-06-01 2.15 MAGNA 0
2020-07-01 2.15 MAGNA 0
2020-08-01 2.15 MAGNA 0
2020-09-01 2.15 MAGNA 0
2020-10-01 2.15 MAGNA 0
2020-11-01 2.15 MAGNA 0
2020-12-01 2.15 MAGNA 0
2020-01-01 3.3 MAGNA 0
2020-02-01 3.3 MAGNA 0
2020-03-01 3.3 MAGNA 0
2020-04-01 3.3 MAGNA 0
2020-05-01 3.3 MAGNA 0
2020-06-01 3.3 MAGNA 0
2020-07-01 3.3 MAGNA 0
2020-08-01 3.3 MAGNA 0
2020-09-01 3.3 MAGNA 0
2020-10-01 3.3 MAGNA 0
2020-11-01 3.3 MAGNA 0
2020-12-01 3.3 MAGNA 0
2020-01-01 0 MAHLE 0
2020-02-01 0 MAHLE 0
2020-03-01 0 MAHLE 1
2020-04-01 0 MAHLE 3
2020-05-01 0 MAHLE 3
2020-06-01 0 MAHLE 0
2020-07-01 0 MAHLE 3
2020-08-01 0 MAHLE 0
2020-09-01 0 MAHLE 0
2020-10-01 0 MAHLE 3
2020-11-01 0 MAHLE 0
2020-12-01 0 MAHLE 0
2020-01-01 0.2 MAHLE 0
2020-02-01 0.2 MAHLE 0
2020-03-01 0.2 MAHLE 0
2020-04-01 0.2 MAHLE 0
2020-05-01 0.2 MAHLE 0
2020-06-01 0.2 MAHLE 1
2020-07-01 0.2 MAHLE 0
2020-08-01 0.2 MAHLE 0
2020-09-01 0.2 MAHLE 0
2020-10-01 0.2 MAHLE 0
2020-11-01 0.2 MAHLE 0
2020-12-01 0.2 MAHLE 0
2020-01-01 0.3 MAHLE 0
2020-02-01 0.3 MAHLE 0
2020-03-01 0.3 MAHLE 0
2020-04-01 0.3 MAHLE 0
2020-05-01 0.3 MAHLE 0
2020-06-01 0.3 MAHLE 1
2020-07-01 0.3 MAHLE 0
2020-08-01 0.3 MAHLE 0
2020-09-01 0.3 MAHLE 0
2020-10-01 0.3 MAHLE 0
2020-11-01 0.3 MAHLE 0
2020-12-01 0.3 MAHLE 0
2020-01-01 0.5 MAHLE 0
2020-02-01 0.5 MAHLE 0
2020-03-01 0.5 MAHLE 0
2020-04-01 0.5 MAHLE 0
2020-05-01 0.5 MAHLE 0
2020-06-01 0.5 MAHLE 0
2020-07-01 0.5 MAHLE 0
2020-08-01 0.5 MAHLE 0
2020-09-01 0.5 MAHLE 0
2020-10-01 0.5 MAHLE 0
2020-11-01 0.5 MAHLE 0
2020-12-01 0.5 MAHLE 1
2020-01-01 0.51 MAHLE 0
2020-02-01 0.51 MAHLE 0
2020-03-01 0.51 MAHLE 0
2020-04-01 0.51 MAHLE 0
2020-05-01 0.51 MAHLE 0
2020-06-01 0.51 MAHLE 0
2020-07-01 0.51 MAHLE 0
2020-08-01 0.51 MAHLE 1
2020-09-01 0.51 MAHLE 0
2020-10-01 0.51 MAHLE 0
2020-11-01 0.51 MAHLE 0
2020-12-01 0.51 MAHLE 0
2020-01-01 0.55 MAHLE 1
2020-02-01 0.55 MAHLE 0
2020-03-01 0.55 MAHLE 0
2020-04-01 0.55 MAHLE 0
2020-05-01 0.55 MAHLE 0
2020-06-01 0.55 MAHLE 0
2020-07-01 0.55 MAHLE 1
2020-08-01 0.55 MAHLE 0
2020-09-01 0.55 MAHLE 0
2020-10-01 0.55 MAHLE 0
2020-11-01 0.55 MAHLE 0
2020-12-01 0.55 MAHLE 0
2020-01-01 0.95 MAHLE 0
2020-02-01 0.95 MAHLE 0
2020-03-01 0.95 MAHLE 0
2020-04-01 0.95 MAHLE 0
2020-05-01 0.95 MAHLE 0
2020-06-01 0.95 MAHLE 1
2020-07-01 0.95 MAHLE 0
2020-08-01 0.95 MAHLE 0
2020-09-01 0.95 MAHLE 0
2020-10-01 0.95 MAHLE 0
2020-11-01 0.95 MAHLE 0
2020-12-01 0.95 MAHLE 1
2020-01-01 1 MAHLE 2
2020-02-01 1 MAHLE 0
2020-03-01 1 MAHLE 1
2020-04-01 1 MAHLE 0
2020-05-01 1 MAHLE 0
2020-06-01 1 MAHLE 0
2020-07-01 1 MAHLE 1
2020-08-01 1 MAHLE 2
2020-09-01 1 MAHLE 3
2020-10-01 1 MAHLE 0
2020-11-01 1 MAHLE 0
2020-12-01 1 MAHLE 1
2020-01-01 1.05 MAHLE 0
2020-02-01 1.05 MAHLE 0
2020-03-01 1.05 MAHLE 1
2020-04-01 1.05 MAHLE 0
2020-05-01 1.05 MAHLE 0
2020-06-01 1.05 MAHLE 0
2020-07-01 1.05 MAHLE 0
2020-08-01 1.05 MAHLE 0
2020-09-01 1.05 MAHLE 0
2020-10-01 1.05 MAHLE 0
2020-11-01 1.05 MAHLE 1
2020-12-01 1.05 MAHLE 0
2020-01-01 1.1 MAHLE 0
2020-02-01 1.1 MAHLE 0
2020-03-01 1.1 MAHLE 0
2020-04-01 1.1 MAHLE 0
2020-05-01 1.1 MAHLE 0
2020-06-01 1.1 MAHLE 0
2020-07-01 1.1 MAHLE 1
2020-08-01 1.1 MAHLE 0
2020-09-01 1.1 MAHLE 0
2020-10-01 1.1 MAHLE 0
2020-11-01 1.1 MAHLE 2
2020-12-01 1.1 MAHLE 0
2020-01-01 1.5 MAHLE 0
2020-02-01 1.5 MAHLE 2
2020-03-01 1.5 MAHLE 0
2020-04-01 1.5 MAHLE 0
2020-05-01 1.5 MAHLE 0
2020-06-01 1.5 MAHLE 0
2020-07-01 1.5 MAHLE 0
2020-08-01 1.5 MAHLE 0
2020-09-01 1.5 MAHLE 0
2020-10-01 1.5 MAHLE 0
2020-11-01 1.5 MAHLE 0
2020-12-01 1.5 MAHLE 0
2020-01-01 2.15 MAHLE 0
2020-02-01 2.15 MAHLE 1
2020-03-01 2.15 MAHLE 0
2020-04-01 2.15 MAHLE 0
2020-05-01 2.15 MAHLE 0
2020-06-01 2.15 MAHLE 0
2020-07-01 2.15 MAHLE 0
2020-08-01 2.15 MAHLE 0
2020-09-01 2.15 MAHLE 0
2020-10-01 2.15 MAHLE 0
2020-11-01 2.15 MAHLE 0
2020-12-01 2.15 MAHLE 0
2020-01-01 3.3 MAHLE 0
2020-02-01 3.3 MAHLE 0
2020-03-01 3.3 MAHLE 0
2020-04-01 3.3 MAHLE 0
2020-05-01 3.3 MAHLE 0
2020-06-01 3.3 MAHLE 0
2020-07-01 3.3 MAHLE 0
2020-08-01 3.3 MAHLE 0
2020-09-01 3.3 MAHLE 0
2020-10-01 3.3 MAHLE 0
2020-11-01 3.3 MAHLE 0
2020-12-01 3.3 MAHLE 0
2020-01-01 0 PRINTEL 0
2020-02-01 0 PRINTEL 1
2020-03-01 0 PRINTEL 1
2020-04-01 0 PRINTEL 1
2020-05-01 0 PRINTEL 1
2020-06-01 0 PRINTEL 1
2020-07-01 0 PRINTEL 2
2020-08-01 0 PRINTEL 0
2020-09-01 0 PRINTEL 0
2020-10-01 0 PRINTEL 1
2020-11-01 0 PRINTEL 1
2020-12-01 0 PRINTEL 0
2020-01-01 0.2 PRINTEL 0
2020-02-01 0.2 PRINTEL 0
2020-03-01 0.2 PRINTEL 0
2020-04-01 0.2 PRINTEL 0
2020-05-01 0.2 PRINTEL 0
2020-06-01 0.2 PRINTEL 0
2020-07-01 0.2 PRINTEL 0
2020-08-01 0.2 PRINTEL 0
2020-09-01 0.2 PRINTEL 0
2020-10-01 0.2 PRINTEL 0
2020-11-01 0.2 PRINTEL 0
2020-12-01 0.2 PRINTEL 0
2020-01-01 0.3 PRINTEL 0
2020-02-01 0.3 PRINTEL 0
2020-03-01 0.3 PRINTEL 0
2020-04-01 0.3 PRINTEL 0
2020-05-01 0.3 PRINTEL 0
2020-06-01 0.3 PRINTEL 0
2020-07-01 0.3 PRINTEL 0
2020-08-01 0.3 PRINTEL 0
2020-09-01 0.3 PRINTEL 0
2020-10-01 0.3 PRINTEL 0
2020-11-01 0.3 PRINTEL 0
2020-12-01 0.3 PRINTEL 0
2020-01-01 0.5 PRINTEL 0
2020-02-01 0.5 PRINTEL 0
2020-03-01 0.5 PRINTEL 0
2020-04-01 0.5 PRINTEL 0
2020-05-01 0.5 PRINTEL 0
2020-06-01 0.5 PRINTEL 0
2020-07-01 0.5 PRINTEL 0
2020-08-01 0.5 PRINTEL 0
2020-09-01 0.5 PRINTEL 0
2020-10-01 0.5 PRINTEL 0
2020-11-01 0.5 PRINTEL 0
2020-12-01 0.5 PRINTEL 0
2020-01-01 0.51 PRINTEL 0
2020-02-01 0.51 PRINTEL 0
2020-03-01 0.51 PRINTEL 0
2020-04-01 0.51 PRINTEL 0
2020-05-01 0.51 PRINTEL 0
2020-06-01 0.51 PRINTEL 0
2020-07-01 0.51 PRINTEL 0
2020-08-01 0.51 PRINTEL 0
2020-09-01 0.51 PRINTEL 0
2020-10-01 0.51 PRINTEL 0
2020-11-01 0.51 PRINTEL 0
2020-12-01 0.51 PRINTEL 0
2020-01-01 0.55 PRINTEL 0
2020-02-01 0.55 PRINTEL 0
2020-03-01 0.55 PRINTEL 0
2020-04-01 0.55 PRINTEL 0
2020-05-01 0.55 PRINTEL 0
2020-06-01 0.55 PRINTEL 0
2020-07-01 0.55 PRINTEL 0
2020-08-01 0.55 PRINTEL 0
2020-09-01 0.55 PRINTEL 0
2020-10-01 0.55 PRINTEL 0
2020-11-01 0.55 PRINTEL 0
2020-12-01 0.55 PRINTEL 0
2020-01-01 0.95 PRINTEL 0
2020-02-01 0.95 PRINTEL 0
2020-03-01 0.95 PRINTEL 0
2020-04-01 0.95 PRINTEL 0
2020-05-01 0.95 PRINTEL 0
2020-06-01 0.95 PRINTEL 0
2020-07-01 0.95 PRINTEL 0
2020-08-01 0.95 PRINTEL 0
2020-09-01 0.95 PRINTEL 0
2020-10-01 0.95 PRINTEL 0
2020-11-01 0.95 PRINTEL 0
2020-12-01 0.95 PRINTEL 0
2020-01-01 1 PRINTEL 0
2020-02-01 1 PRINTEL 0
2020-03-01 1 PRINTEL 0
2020-04-01 1 PRINTEL 0
2020-05-01 1 PRINTEL 0
2020-06-01 1 PRINTEL 0
2020-07-01 1 PRINTEL 0
2020-08-01 1 PRINTEL 1
2020-09-01 1 PRINTEL 0
2020-10-01 1 PRINTEL 0
2020-11-01 1 PRINTEL 0
2020-12-01 1 PRINTEL 0
2020-01-01 1.05 PRINTEL 0
2020-02-01 1.05 PRINTEL 0
2020-03-01 1.05 PRINTEL 0
2020-04-01 1.05 PRINTEL 0
2020-05-01 1.05 PRINTEL 0
2020-06-01 1.05 PRINTEL 0
2020-07-01 1.05 PRINTEL 0
2020-08-01 1.05 PRINTEL 0
2020-09-01 1.05 PRINTEL 0
2020-10-01 1.05 PRINTEL 0
2020-11-01 1.05 PRINTEL 0
2020-12-01 1.05 PRINTEL 1
2020-01-01 1.1 PRINTEL 0
2020-02-01 1.1 PRINTEL 0
2020-03-01 1.1 PRINTEL 0
2020-04-01 1.1 PRINTEL 0
2020-05-01 1.1 PRINTEL 0
2020-06-01 1.1 PRINTEL 0
2020-07-01 1.1 PRINTEL 0
2020-08-01 1.1 PRINTEL 0
2020-09-01 1.1 PRINTEL 1
2020-10-01 1.1 PRINTEL 0
2020-11-01 1.1 PRINTEL 0
2020-12-01 1.1 PRINTEL 0
2020-01-01 1.5 PRINTEL 0
2020-02-01 1.5 PRINTEL 0
2020-03-01 1.5 PRINTEL 0
2020-04-01 1.5 PRINTEL 0
2020-05-01 1.5 PRINTEL 0
2020-06-01 1.5 PRINTEL 0
2020-07-01 1.5 PRINTEL 0
2020-08-01 1.5 PRINTEL 0
2020-09-01 1.5 PRINTEL 0
2020-10-01 1.5 PRINTEL 0
2020-11-01 1.5 PRINTEL 0
2020-12-01 1.5 PRINTEL 0
2020-01-01 2.15 PRINTEL 0
2020-02-01 2.15 PRINTEL 0
2020-03-01 2.15 PRINTEL 0
2020-04-01 2.15 PRINTEL 0
2020-05-01 2.15 PRINTEL 0
2020-06-01 2.15 PRINTEL 0
2020-07-01 2.15 PRINTEL 0
2020-08-01 2.15 PRINTEL 0
2020-09-01 2.15 PRINTEL 0
2020-10-01 2.15 PRINTEL 0
2020-11-01 2.15 PRINTEL 0
2020-12-01 2.15 PRINTEL 0
2020-01-01 3.3 PRINTEL 1
2020-02-01 3.3 PRINTEL 0
2020-03-01 3.3 PRINTEL 0
2020-04-01 3.3 PRINTEL 0
2020-05-01 3.3 PRINTEL 0
2020-06-01 3.3 PRINTEL 0
2020-07-01 3.3 PRINTEL 0
2020-08-01 3.3 PRINTEL 0
2020-09-01 3.3 PRINTEL 0
2020-10-01 3.3 PRINTEL 0
2020-11-01 3.3 PRINTEL 0
2020-12-01 3.3 PRINTEL 0
2020-01-01 0 VARROC 3
2020-02-01 0 VARROC 3
2020-03-01 0 VARROC 3
2020-04-01 0 VARROC 3
2020-05-01 0 VARROC 3
2020-06-01 0 VARROC 3
2020-07-01 0 VARROC 6
2020-08-01 0 VARROC 3
2020-09-01 0 VARROC 3
2020-10-01 0 VARROC 3
2020-11-01 0 VARROC 3
2020-12-01 0 VARROC 3
2020-01-01 0.2 VARROC 0
2020-02-01 0.2 VARROC 0
2020-03-01 0.2 VARROC 0
2020-04-01 0.2 VARROC 0
2020-05-01 0.2 VARROC 0
2020-06-01 0.2 VARROC 0
2020-07-01 0.2 VARROC 0
2020-08-01 0.2 VARROC 0
2020-09-01 0.2 VARROC 0
2020-10-01 0.2 VARROC 0
2020-11-01 0.2 VARROC 0
2020-12-01 0.2 VARROC 0
2020-01-01 0.3 VARROC 0
2020-02-01 0.3 VARROC 0
2020-03-01 0.3 VARROC 0
2020-04-01 0.3 VARROC 0
2020-05-01 0.3 VARROC 0
2020-06-01 0.3 VARROC 0
2020-07-01 0.3 VARROC 0
2020-08-01 0.3 VARROC 0
2020-09-01 0.3 VARROC 0
2020-10-01 0.3 VARROC 0
2020-11-01 0.3 VARROC 0
2020-12-01 0.3 VARROC 0
2020-01-01 0.5 VARROC 0
2020-02-01 0.5 VARROC 0
2020-03-01 0.5 VARROC 0
2020-04-01 0.5 VARROC 0
2020-05-01 0.5 VARROC 0
2020-06-01 0.5 VARROC 0
2020-07-01 0.5 VARROC 0
2020-08-01 0.5 VARROC 0
2020-09-01 0.5 VARROC 0
2020-10-01 0.5 VARROC 0
2020-11-01 0.5 VARROC 0
2020-12-01 0.5 VARROC 0
2020-01-01 0.51 VARROC 0
2020-02-01 0.51 VARROC 0
2020-03-01 0.51 VARROC 0
2020-04-01 0.51 VARROC 0
2020-05-01 0.51 VARROC 0
2020-06-01 0.51 VARROC 0
2020-07-01 0.51 VARROC 0
2020-08-01 0.51 VARROC 0
2020-09-01 0.51 VARROC 0
2020-10-01 0.51 VARROC 0
2020-11-01 0.51 VARROC 0
2020-12-01 0.51 VARROC 0
2020-01-01 0.55 VARROC 0
2020-02-01 0.55 VARROC 0
2020-03-01 0.55 VARROC 0
2020-04-01 0.55 VARROC 0
2020-05-01 0.55 VARROC 0
2020-06-01 0.55 VARROC 0
2020-07-01 0.55 VARROC 0
2020-08-01 0.55 VARROC 0
2020-09-01 0.55 VARROC 0
2020-10-01 0.55 VARROC 0
2020-11-01 0.55 VARROC 0
2020-12-01 0.55 VARROC 0
2020-01-01 0.95 VARROC 0
2020-02-01 0.95 VARROC 0
2020-03-01 0.95 VARROC 0
2020-04-01 0.95 VARROC 0
2020-05-01 0.95 VARROC 0
2020-06-01 0.95 VARROC 0
2020-07-01 0.95 VARROC 0
2020-08-01 0.95 VARROC 0
2020-09-01 0.95 VARROC 0
2020-10-01 0.95 VARROC 0
2020-11-01 0.95 VARROC 0
2020-12-01 0.95 VARROC 0
2020-01-01 1 VARROC 0
2020-02-01 1 VARROC 0
2020-03-01 1 VARROC 0
2020-04-01 1 VARROC 0
2020-05-01 1 VARROC 0
2020-06-01 1 VARROC 0
2020-07-01 1 VARROC 0
2020-08-01 1 VARROC 0
2020-09-01 1 VARROC 0
2020-10-01 1 VARROC 0
2020-11-01 1 VARROC 0
2020-12-01 1 VARROC 0
2020-01-01 1.05 VARROC 0
2020-02-01 1.05 VARROC 0
2020-03-01 1.05 VARROC 0
2020-04-01 1.05 VARROC 0
2020-05-01 1.05 VARROC 0
2020-06-01 1.05 VARROC 0
2020-07-01 1.05 VARROC 0
2020-08-01 1.05 VARROC 0
2020-09-01 1.05 VARROC 0
2020-10-01 1.05 VARROC 0
2020-11-01 1.05 VARROC 0
2020-12-01 1.05 VARROC 0
2020-01-01 1.1 VARROC 0
2020-02-01 1.1 VARROC 0
2020-03-01 1.1 VARROC 0
2020-04-01 1.1 VARROC 0
2020-05-01 1.1 VARROC 0
2020-06-01 1.1 VARROC 0
2020-07-01 1.1 VARROC 0
2020-08-01 1.1 VARROC 0
2020-09-01 1.1 VARROC 0
2020-10-01 1.1 VARROC 0
2020-11-01 1.1 VARROC 0
2020-12-01 1.1 VARROC 0
2020-01-01 1.5 VARROC 0
2020-02-01 1.5 VARROC 0
2020-03-01 1.5 VARROC 0
2020-04-01 1.5 VARROC 0
2020-05-01 1.5 VARROC 0
2020-06-01 1.5 VARROC 0
2020-07-01 1.5 VARROC 0
2020-08-01 1.5 VARROC 0
2020-09-01 1.5 VARROC 0
2020-10-01 1.5 VARROC 0
2020-11-01 1.5 VARROC 0
2020-12-01 1.5 VARROC 0
2020-01-01 2.15 VARROC 0
2020-02-01 2.15 VARROC 0
2020-03-01 2.15 VARROC 0
2020-04-01 2.15 VARROC 0
2020-05-01 2.15 VARROC 0
2020-06-01 2.15 VARROC 0
2020-07-01 2.15 VARROC 0
2020-08-01 2.15 VARROC 0
2020-09-01 2.15 VARROC 0
2020-10-01 2.15 VARROC 0
2020-11-01 2.15 VARROC 0
2020-12-01 2.15 VARROC 0
2020-01-01 3.3 VARROC 0
2020-02-01 3.3 VARROC 0
2020-03-01 3.3 VARROC 0
2020-04-01 3.3 VARROC 0
2020-05-01 3.3 VARROC 0
2020-06-01 3.3 VARROC 0
2020-07-01 3.3 VARROC 0
2020-08-01 3.3 VARROC 0
2020-09-01 3.3 VARROC 0
2020-10-01 3.3 VARROC 0
2020-11-01 3.3 VARROC 0
2020-12-01 3.3 VARROC 0

Gráficos de datos cualitativos y cuantitativos

plot(bd_delivery_perf$Fecha,bd_delivery_perf$Dif, type="b", main= "Diferencia de tiempo por inicio de mes", xlab= "Mes", ylab= "Diferencia Tiempo")

Gráficos de dispersión

Scatterplot y boxplots

plot(bd_delivery_perf$Fecha,bd_delivery_perf$Dif, main = "Diferencia tiempo por mes",
     xlab = "Incio Mes", ylab = "Diferencia Tiempo", 
     pch = 19, frame = FALSE)

Tenemos un tiempo constante, pero vemos que en Enero se toma más tiempo en distribución.

boxplot(bd_delivery_perf$Dif, vertical = TRUE,  main ="Total Diferencia Tiempo Distribución")

Podemos ver que tenemos tiempos fuera del promedio y que en promedio se tiene entre 1 hora en tiempos.

Propuestas y reflexión

En este analisis pudimos trabajar con las bases de datos para poder conocer información valiosa de la empresa FORM y encontrar insights que nos permitieran desarrollar propuestas que puedan mejorar el rendimiento de la empresa en distintas áreas.

  1. Tomando en cuenta los datos observados en el análisis de RH, se ha podido notar que Form tiene un área de oportunidad, en cuanto a su rotación y sus bajas, debido a que estas son más altas de lo deseable; muchas de las bajas son debido a las faltas. Igualmente, se conoce que la mayoría de las personas que han ingresado son de recién ingreso (entre 2020 y 2022), por lo que se conoce que no hay mucha antigüedad entre los colaboradores de Form. Lo que se propone es implementar estrategias de crecimiento y desarrollo en los trabajadores, con la finalidad de incrementar el compromiso dentro de los colaboradores y que puedan ver un futuro dentro de la empresa.
  2. Para disminuir la diferencia de tiempo con el rendimiento de los envíos podemos tener un encargado más de Transporte para poder llegar a tiempo o aplicar tecnologías como Blockchain o RFID que nos pueda dar información sobre el tiempo real donde se encuentra, que registre el tiempo y buscar mejores rutas para tener una excelente logística.
LS0tCnRpdGxlOiAiRXZpZGVuY2lhIDIuMzogRGVzYXJyb2xsYXIgYW7DoWxpc2lzIGRlc2NyaXB0aXZvIGRlIHZhcmlhYmxlcyByZWxldmFudGVzIHBhcmEgbGEgdG9tYSBkZSBkZWNpc2lvbmVzLCB1c2FuZG8gUi1NYXJrZG93biIKYXV0aG9yOiAiR2VvcmdpbmEgTWFydMOtbmV6LCBFbGVuYSBWZWxhLCBTZWJhc3Rpw6FuIEdhcnphLCBJc2FhYyBEw61heiwgQW5hIEFydml6dSIKZGF0ZTogIjIwMjItMDktMjMiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKPGltZyBzcmM9ICIvVXNlcnMvZ2VvcmdpbmFtYXJ0aW5lei9Eb2N1bWVudHMvVGVjL1NlzIFwdGltbyBTZW1lc3RyZS9BbmFsacyBdGljYSBwYXJhIG5lZ29jaW9zLCBkZSBsb3MgZGF0b3MgYSBkZWNpc2lvbmVzL0Zvcm0ucG5nIj4KCiMjIGEuIEZPUk0g4oCTIFJlY3Vyc29zIEh1bWFub3MKCiMjIyBBbsOhbGlzaXMgZXN0YWTDrXN0aWNvIGRlc2NyaXB0aXZvLgoKIyMjIyBMaWJyZXLDrWFzIHJlcXVlcmlkYXMKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeShmb3JlaWduKQpsaWJyYXJ5KGRwbHlyKSAgICAgICAgIyBkYXRhIG1hbmlwdWxhdGlvbiAKbGlicmFyeShmb3JjYXRzKSAgICAgICMgdG8gd29yayB3aXRoIGNhdGVnb3JpY2FsIHZhcmlhYmxlcwpsaWJyYXJ5KGdncGxvdDIpICAgICAgIyBkYXRhIHZpc3VhbGl6YXRpb24gCmxpYnJhcnkoamFuaXRvcikgICAgICAjIGRhdGEgZXhwbG9yYXRpb24gYW5kIGNsZWFuaW5nIAojIGluc3RhbGwucGFja2FnZXMoInBzeWNoIikKbGlicmFyeShjb3JycGxvdCkgICAgICMgY29ycmVsYXRpb24gcGxvdHMKbGlicmFyeShsbXRlc3QpICAgICAgICMgZGlhZ25vc3RpYyBjaGVja3MgLSBsaW5lYXIgcmVncmVzc2lvbiBhbmFseXNpcyAKbGlicmFyeShjYXIpICAgICAgICAgICMgZGlhZ25vc3RpYyBjaGVja3MgLSBsaW5lYXIgcmVncmVzc2lvbiBhbmFseXNpcwoKYGBgCgojIyMgSW1wb3J0YXIgYmFzZSBkZSBkYXRvcy4gIAojIyMjIFNlIGhhIGRlY2lkaWRvIHRhbWJpw6luIGJvcnJhciBlbCBuw7ptZXJvIGRlIGNyw6lkaXRvIGRlIGluZm9uYXZpdCwgc2UgZWxpbWluYSBsYSBjb2x1bW5hLgpgYGB7cn0Kcmg8LXJlYWQuY3N2KCIvVXNlcnMvZ2VvcmdpbmFtYXJ0aW5lei9Eb2N1bWVudHMvVGVjL1NlzIFwdGltbyBTZW1lc3RyZS9BbmFsacyBdGljYSBwYXJhIG5lZ29jaW9zLCBkZSBsb3MgZGF0b3MgYSBkZWNpc2lvbmVzL0Jhc2UgZGUgZGF0b3MgRk9STS9SSC9yaF9saW1waWE1LmNzdiIpCnN1bW1hcnkocmgpCgpyaDE8LXJoCnJoMTwtc3Vic2V0KHJoMSxzZWxlY3Q9LWMoTi4uLkNSRURJVE8uSU5GT05BVklUKSkKCnN1bW1hcnkocmgxKQpgYGAKCiMjIyBUYWJsYSBkZSBmcmVjdWVuY2lhCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGphbml0b3IpCmBgYAoKYGBge3J9CnJoMiA8LSByaDEKcmgyIDwtIGNiaW5kKHJoMixFbXBsZWFkbz1jKCJFbXBsZWFkbyIpKQojc3VtbWFyeShyaDIpCmBgYAoKIyMjIyBTZSBnZW5lcmFuIGxhcyB0YWJsYXMgZGUgZnJlY3VlbmNpYXMgZGUgbGFzIHZhcmlhYmxlcyAqKkNVQUxJVEFUSVZBUyoqLgpgYGB7cn0KCj90YWJsZQoKZ2VuZXJvPC10YWJsZShyaDIkR0VORVJPKQojZ2VuZXJvCmtuaXRyOjprYWJsZShnZW5lcm8pCgpwdWVzdG88LXRhYmxlKHJoMiRQVUVTVE8pCiNwdWVzdG8Ka25pdHI6OmthYmxlKHB1ZXN0bykKCmRlcGFydGFtZW50bzwtdGFibGUocmgyJERFUEFSVEFNRU5UTykKI2RlcGFydGFtZW50bwprbml0cjo6a2FibGUoZGVwYXJ0YW1lbnRvKQoKbHVnYXI8LXRhYmxlKHJoMiRMVUdBUi5ERS5OQUNJTUlFTlRPKQojbHVnYXIKa25pdHI6OmthYmxlKGx1Z2FyKQoKbXVuaWNpcGlvPC10YWJsZShyaDIkTVVOSUNJUElPKQojbXVuaWNpcGlvCmtuaXRyOjprYWJsZShtdW5pY2lwaW8pCgplc3RhZG88LXRhYmxlKHJoMiRFU1RBRE8pCiNlc3RhZG8Ka25pdHI6OmthYmxlKGVzdGFkbykKCmNpdmlsPC10YWJsZShyaDIkRVNUQURPLkNJVklMKQojY2l2aWwKa25pdHI6OmthYmxlKGNpdmlsKQpgYGAKCiMjIyBUYWJsYXMgY3J1emFkYQpgYGB7cn0KY3J1emFkYTE8LXRhYmxlKHJoMiRHRU5FUk8scmgkQcORTy5ERS5OQUNJTUlFTlRPKQoKa25pdHI6OmthYmxlKGNydXphZGExKQpgYGAKCmBgYHtyfQpjcnV6YWRhMjwtdGFibGUocmgyJEVTVEFETyxyaDIkR0VORVJPKQprbml0cjo6a2FibGUoY3J1emFkYTIpCmBgYAoKIyMjIEdyw6FmaWNvcyBkZSBkYXRvcyBjdWFsaXRhdGl2b3MgeSBjdWFudGl0YXRpdm9zCgojIyMjIERhdG9zIGN1YWxpdGF0aXZvcyAgCgpTZSBvYnRpZW5lIHByaW1lcmFtZW50ZSB1bmEgZ3LDoWZpY2EgZGUgYmFycmFzIHF1ZSBjb21wYXJhIGxvcyBkaWZlcmVudGVzIGVzdGFkb3MgY2l2aWxlcyAoYWN0dWFsZXMpIGRlIGxvcyBjb2xhYm9yYWRvcmVzLiBPYnNlcnZhbW9zIHF1ZSBsYSBncmFuIG1heW9yw61hIHNvbiBzb2x0ZXJvcyBvIGNhc2Fkb3MsIHkgbXV5IHBvY29zIGRpdm9yY2lhZG9zLgpgYGB7cn0KYmFycGxvdChwcm9wLnRhYmxlKHRhYmxlKHJoMiRFU1RBRE8uQ0lWSUwpKSxjb2w9Yygib3JhbmdlIiwiYmx1ZSIsInJlZCIsImdyZWVuIiksbWFpbj0iRXN0YWRvIENpdmlsIiwgeWxhYiA9IkZyZWN1ZW5jaWFzIixsYXM9MSkKYGBgCgpMYSBzaWd1aWVudGUgKnBpZSBjaGFydCogbm9zIGRhIGEgY29ub2NlciBjb21vIGV4aXN0ZW4gbcOhcyBtdWplcmVzIHF1ZSBob21icmVzIGxhYm9yYW5kbyBhY3R1YWxtZW50ZSBlbiBGb3JtLgpgYGB7cn0KcGllKHByb3AudGFibGUodGFibGUocmgyJEdFTkVSTykpLGNvbD1jKCJwaW5rIiwiYmx1ZSIpLG1haW49IkfDqW5lcm8iLCB5bGFiID0iRnJlY3VlbmNpYXMiLGxhcz0xKQpgYGAKCiMjIyMjICoqQ2FtYmlvIGVuIGxhIGJhc2UgZGUgZGF0b3MsIHNlIGVsaW1pbmEgdW4gdmFsb3IgaW5jb3JyZWN0byBlbiBlbCBzYWxhcmlvLioqCmBgYHtyfQpzdHIocmgyKQojIMK3bGltaW5hIGxpbmVhIDQsIGRvbmRlIGhheSB1biBkYXRvIGluY29ycmVjdG8gZW4gZWwgc2FsYXJpbwpyaDMgPC0gcmgyWy00LF0KCnN1bW1hcnkocmgzKQpgYGAKCiMjIyMgRGF0b3MgY3VhbnRpdGF0aXZvcyAgCgpFbCBwcmVzZW50ZSBoaXN0b2dyYW1hIHZlIGVsIHNhbGFyaW8sIHkgY29tbyBsYSBtYXlvcsOtYSBzZSBjb25jZW50cmEgZW4gZW50cmUgbG9zIDE1MCB5IDIwMCBwZXNvcyBkaWFyaW9zLiBDb24gbXV5IHBvY2FzIGV4Y2VwY2lvbmVzIHF1ZSBzdXBlcmFuIGVzdG8uIApgYGB7cn0KaGlzdCgocmgzJFNBTEFSSU8uRElBUklPLklNU1MpLGNvbD1jKCJyZWQiKSxtYWluPSJTYWxhcmlvIERpYXJpbyIseGxhYj0iU2FsYXJpbyBlbiBwZXNvcyBteCIpCmBgYAoKTWVkaWFudGUgZWwgc2lndWllbnRlIGhpc3RvZ3JhbWEgbm90YW1vcyBxdWUgbGEgbWF5b3LDrWEgZGUgbG9zIGluZ3Jlc29zIGVuIEZvcm0gc29uIHJlY2llbnRlcywgZGUgZW50cmUgZWwgMjAyIHkgMjAyMjsgaW5kaWNhbmRvIHF1ZSBoYXkgcG9jYSBhbnRpZ8O8ZWRhZCBlbiBsb3MgY29sYWJvcmFkb3Jlcy4KYGBge3J9Cmhpc3QoKHJoMyRQcmltZXIubWVzKSxjb2w9YygibGlnaHRibHVlIiksbWFpbj0iQcOxbyBkZWwgUHJpbWVyIE1lcyBlbiBGT1JNIix4bGFiPSJBw7FvIikKYGBgCgojIyMgR3LDoWZpY29zIGRlIGRpc3BlcnNpw7NuICAKCkVsIHByZXNlbnRlIHNjYXR0ZXJwbG90IGNvbXBhcmEgbGEgZmVjaGEgZGUgaW5ncmVzbyBjb24gZWwgc2FsYXJpbyBkaWFyaW8sIGVuIGRvbmRlIHZlbW9zIHF1ZSBsb3MgcXVlIHRpZW5lbiBtYXlvciBhbnRpZ8O8ZWRhZCAoZGVzZGUgZWwgMjAxMCksIGdhbmFuIGxvIG1pc21vIHF1ZSBhbGd1bm9zIGRlIGxvcyByZWNpw6luIGluZ3Jlc2Fkb3MuIEVsIG3DoXMgYWx0byBpbmdyZXNhbmRvIGVuIGVsIDIwMTQgKGFwcm94aW1hZGFtZW50ZSkKYGBge3J9CnBsb3QocmgyJEZFQ0hBLkRFLkFMVEEsIHJoMiRTQUxBUklPLkRJQVJJTy5JTVNTLCBtYWluID0gIkZlY2hhIGRlIGluZ3Jlc28gY29uIHNhbGFyaW8gZGlhcmlvIiwKICAgICB4bGFiID0gIkZlY2hhIGRlIGluZ3Jlc28iLCB5bGFiID0gIlNhbGFyaW8iLAogICAgIHBjaCA9IDE5LCBmcmFtZSA9IEZBTFNFKQpgYGAKCkFob3JhLCBjb21wYXJhbmRvIGVsIGHDsW8gZGUgbmFjaW1pZW50byBjb24gZWwgc2FsYXJpbywgb2JzZXJ2YW1vcyBxdWUgbGEgcGVyc29uYSBjb24gdW4gbWF5b3IgaW5ncmVzbyBlcyBhbGd1aWVuIG5hY2lkbyBlbiAxOTkwLiBGdWVyYSBkZSBhbGd1bm9zIGNhc29zIGVzcGVjw61maWNvcywgbG9zIHNhbGFyaW9zIG5vIHZlbiBkaWZlcmVuY2lhIGEgbGFzIGVkYWRlcy4gCmBgYHtyfQpwbG90KHJoMiRBw5FPLkRFLk5BQ0lNSUVOVE8sIHJoMiRTQUxBUklPLkRJQVJJTy5JTVNTLCBtYWluID0gIkHDsW8gZGUgbmFjaW1pZW50byIsCiAgICAgeGxhYiA9ICJBw7FvIGRlIG5hY2ltaWVudG8iLCB5bGFiID0gIlNhbGFyaW8iLAogICAgIHBjaCA9IDE5LCBmcmFtZSA9IEZBTFNFKQpgYGAKCkFuYWxpemFuZG8gb3RyYSB2ZXosIGxhIGZlY2hhIGRlIG5hY2ltaWVudG8sIG9ic2VydmFtb3MgcXVlIGxhIGdyYW4gcGFydGUgZGUgbG9zIGVtcGxlYWRvcyBuYWNpZXJvbiBlbiBsYSBkZWNhZGEgZGUgbG9zIG9jaGVudGFzIHkgZGUgbG9zIG5vdmVudGFzLiAKYGBge3J9CmJveHBsb3QocmgyJEHDkU8uREUuTkFDSU1JRU5UTyAsIHZlcnRpY2FsID0gVFJVRSkKYGBgCgojIyBiLiBGT1JNIOKAkyBEZWxpdmVyeSBQbGFuCgojIyMjIEltcG9ydGFyIGJhc2VzIGRlIGRhdG9zCmBgYHtyfQojZmlsZS5jaG9vc2UoKQoKYmQgPC0gcmVhZC5jc3YoIi9Vc2Vycy9nZW9yZ2luYW1hcnRpbmV6L0RvY3VtZW50cy9UZWMvU2XMgXB0aW1vIFNlbWVzdHJlL0FuYWxpzIF0aWNhIHBhcmEgbmVnb2Npb3MsIGRlIGxvcyBkYXRvcyBhIGRlY2lzaW9uZXMvQmFzZSBkZSBkYXRvcyBGT1JNL0RlbGl2ZXJ5IFBsYW4vRk9STSAtIERlbGl2ZXJ5IFBsYW4ueGxzeCAtIERFTElWRVJZIFBMQU4oMikgKDEpQy5jc3YiKQpiZDM8LSByZWFkLmNzdigiL1VzZXJzL2dlb3JnaW5hbWFydGluZXovRG9jdW1lbnRzL1RlYy9TZcyBcHRpbW8gU2VtZXN0cmUvQW5hbGnMgXRpY2EgcGFyYSBuZWdvY2lvcywgZGUgbG9zIGRhdG9zIGEgZGVjaXNpb25lcy9CYXNlIGRlIGRhdG9zIEZPUk0vRGVsaXZlcnkgUGxhbi8yMDIyLmNzdiIpCmJkNDwtIHJlYWQuY3N2KCIvVXNlcnMvZ2VvcmdpbmFtYXJ0aW5lei9Eb2N1bWVudHMvVGVjL1NlzIFwdGltbyBTZW1lc3RyZS9BbmFsacyBdGljYSBwYXJhIG5lZ29jaW9zLCBkZSBsb3MgZGF0b3MgYSBkZWNpc2lvbmVzL0Jhc2UgZGUgZGF0b3MgRk9STS9EZWxpdmVyeSBQbGFuL2FuzINvLmNzdiIpCnN1bW1hcnkoYmQpCgpiZDEgPC0gYmQKYmQxIDwtIHN1YnNldChiZDEsIHNlbGVjdCA9IC1jIChQUk9ZRUNUTywgSVRFTSwgSUQuT0RPTyApKQoKc3VtKGlzLm5hKGJkMSkpCnN1bShpcy5uYShiZCkpCgpzYXBwbHkoYmQxLCBmdW5jdGlvbih4KSBzdW0oaXMubmEoeCkpKQpzYXBwbHkoYmQsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpCgojQ2FtYmlhciBlbCBub21icmUgZGUgdW5hIGNvbHVtbmEKI2xpYnJhcnkoZHBseXIpCiM/Y29sbmFtZXMKI2JkMSROT1ZJRU1CUkUuMjIgPC0gY29sbmFtZXMoIk9DVFVCUkUuMjIiKSAKYGBgCgojIyMgVGFibGFzIEZyZWN1ZW5jaWEgIAoKU2UgZ2VuZXJhbiBsYXMgdGFibGFzIGRlIGZyZWN1ZW5jaWFzIGRlIGxhcyB2YXJpYWJsZXMgw7puaWNhbWVudGUgZGUgZW5lcm8gMjAyMiB5IGVuZXJvIDIwMjMgeWEgcXVlIHJlc3VsdGEgcG9jbyBwcsOhY3RpY28gZ2VuZXJhciB0YWJsYXMgZGUgZnJlY3VlbmNpYSBjb24gdmFyaWFibGVzIGN1YW50aXRhdGl2YXMgZGlzY3JldGFzIHkgc29uIDIyIG1lc2VzLiAKYGBge3J9CnByaW1lcl9hw7FvIDwtIHRhYmxlKGJkMSRFTkUuMjIpCmtuaXRyOjprYWJsZShwcmltZXJfYcOxbykKCnNlZ3VuZG9fYcOxbyA8LSB0YWJsZShiZDEkRU5FUk8uMjMpCmtuaXRyOjprYWJsZShzZWd1bmRvX2HDsW8pCmBgYAoKIyMjIyBQYXJhIGVzdGEgYmFzZSBkZSBkYXRvcyBubyBzZSBnZW5lcmFuIHRhYmxhcyBjcnV6YWRhcyBwb3IgZWwgdGlwbyBkZSB2YXJpYWJsZXMgcXVlIHNlIHRpZW5lbi4KCiMjIyBHcsOhZmljb3MgY3VhbGl0YXRpdm9zIHkgY3VhbnRpdGF0aXZvcwpgYGB7cn0KbGlicmFyeShwbHlyKQpwaWUodGFibGUoYmQkQ0xJRU5URS5QTEFOVEEpKQpgYGAKCkVuIGxhIGdyw6FmaWNhIHBvZGVtb3Mgb2JzZXJ2YXIgdW4gcGFub3JhbWEgZGUgcXXDqSBjbGllbnRlcyB0aWVuZW4gbWF5b3IgcHJlc2VuY2lhIHF1ZSBvdHJvcyBjb24gbGEgZ3LDoWZpY2EgY2lyY3VsYXIuCmBgYHtyfQpib3hwbG90KGJkMyRQRURJRE9TLCBtYWluID0iVG90YWwgT3JkZW5lcyAyMDIyIikKYGBgCgpQb2RlbW9zIHZlciBjb24gZWwgYm94cGxvdCBsYSBkaXNwZXJzacOzbiBxdWUgaGF5IGVuIGxhcyBvcmRlbmVzIHJlYWxpemFkYXMgZHVyYW50ZSBlbCBhw7FvLiBTZSB0b23DsyDDum5pY2FtZW50ZSBkaWNobyBhw7FvIHlhIHF1ZSBlcyBkZWwgw7puaWNvIGRlbCBxdWUgc2UgdGllbmUgYmFzZSBjb21wbGV0YSBkZSAxMiBtZXNlcy4gUG9kZW1vcyB2ZXIgcXVlIGxhIGRlc3ZpYWNpw7NuIGVzdMOhbmRhciBlcyBzaW3DqXRyaWNhIHkgZWwgYmFyIGVzdMOhIGxpZ2VyYW1lbnRlIHBvciBlbmNpbWEgZGUgbGEgbWl0YWQgZGUgbGEgY2FqYSBkZSBiaWdvdGVzLCBwb3IgbG8gcXVlIGVsIHNlc2dvIHBvZHLDrWEgZGVmaW5pcnNlIG5lZ2F0aXZvLiAKCmBgYHtyfQojP3BpZQpwaWUoKGJkMyRQRURJRE9TKSwgbWFpbj0iT3JkZW5lcyBwb3IgbWVzIiwgbGFzPTEpCmBgYAoKQ2FkYSBuw7ptZXJvIHJlcHJlc2VudGEgMSBtZXMgY29uc2VjdXRpdmFtZW50ZSB5IGRpY2hhIGdyw6FmaWNhIG5vcyBwZXJtaXRlIHZlciBkZSBtYW5lcmEgdmlzdWFsIGVuIHF1w6kgbWVzIGh1Ym8gdW5hIG1heW9yIGNhbnRpZGFkIGRlIGRlbGl2ZXJpZXMuCgojIyMgR3LDoWZpY29zIGRlIGRpc3BlcnNpw7NuCmBgYHtyfQpiZDMkTUVTIDwtIGFzLkRhdGUoYmQzJE1FUywgZm9ybWF0ID0iJWQvJW0vJXkiKQpsaWJyYXJ5KHRpYmJsZSkKdGliYmxlKGJkMykKCnBsb3QoYmQzJE1FUywgYmQzJFBFRElET1MsIG1haW4gPSAiUGVkaWRvcyBwb3IgbWVzIDIwMjIiLAogICAgIHhsYWIgPSAiTWVzIiwgeWxhYiA9ICJPcmRlbmVzIiwKICAgICBwY2ggPSAxOSwgZnJhbWUgPSBUUlVFKQoKYGBgCgojIyBjLiBGT1JNIOKAkyBEZWxpdmVyeSBQZXJmb3JtYW5jZQoKYGBge3J9CmJkX2RlbGl2ZXJ5X3BlcmYgPC0gcmVhZC5jc3YoIi9Vc2Vycy9nZW9yZ2luYW1hcnRpbmV6L0RvY3VtZW50cy9UZWMvU2XMgXB0aW1vIFNlbWVzdHJlL0FuYWxpzIF0aWNhIHBhcmEgbmVnb2Npb3MsIGRlIGxvcyBkYXRvcyBhIGRlY2lzaW9uZXMvQmFzZSBkZSBkYXRvcyBGT1JNL0JEIEZvcm0gRGVsaXZlcnkgUGVyZm9ybWFuY2UuY3N2IikKCiMgQ29udmVydGlyIGRlIGNhcmFjdGVyIGEgZmVjaGEKYmRfZGVsaXZlcnlfcGVyZiRGZWNoYSA8LSBhcy5EYXRlKGJkX2RlbGl2ZXJ5X3BlcmYkRmVjaGEsIGZvcm1hdCA9IiVkLyVtLyV5IikKCiMgQ29udmVydGlyIGRlIGNhcmFjdGVyIGEgaG9yYQpiZF9kZWxpdmVyeV9wZXJmJFJlYWwuYXJyaXZhbCA8LSBzdWJzdHIoYmRfZGVsaXZlcnlfcGVyZiRSZWFsLmFycml2YWwsIHN0YXJ0ID0gMSwgc3RvcCA9IDIpCmJkX2RlbGl2ZXJ5X3BlcmYkUmVhbC5hcnJpdmFsPC0gYXMuaW50ZWdlcihiZF9kZWxpdmVyeV9wZXJmJFJlYWwuYXJyaXZhbCkgIAoKYmRfZGVsaXZlcnlfcGVyZiRSZWFsLkRlcGFydHVyZSA8LSBzdWJzdHIoYmRfZGVsaXZlcnlfcGVyZiRSZWFsLkRlcGFydHVyZSwgc3RhcnQgPSAxLCBzdG9wID0gMikKYmRfZGVsaXZlcnlfcGVyZiRSZWFsLkRlcGFydHVyZTwtIGFzLmludGVnZXIoYmRfZGVsaXZlcnlfcGVyZiRSZWFsLkRlcGFydHVyZSkgIAoKIyBDYW1iaWFyIGxvcyBub21icmVzIGRlIGxhcyB2YXJpYWJsZXMgbcOhcyBjb3J0YXMgeSBlc3BlY8OtZmljYXMKCm5hbWVzKGJkX2RlbGl2ZXJ5X3BlcmYpIFsyXSA9ICJUcHRpc3RhIgpuYW1lcyhiZF9kZWxpdmVyeV9wZXJmKSBbNF0gPSAiUGxhbl9hcnIiCm5hbWVzKGJkX2RlbGl2ZXJ5X3BlcmYpIFs1XSA9ICJSZWFsX2FyciIKbmFtZXMoYmRfZGVsaXZlcnlfcGVyZikgWzZdID0gIlJlYWxfZGVwIgpuYW1lcyhiZF9kZWxpdmVyeV9wZXJmKSBbN10gPSAiRGlmIgpuYW1lcyhiZF9kZWxpdmVyeV9wZXJmKQpgYGAKCiMjIyBUYWJsYSBkZSBmcmVjdWVuY2lhCiMjIyMgU2UgZ2VuZXJhbiBsYXMgdGFibGFzIGRlIGZyZWN1ZW5jaWFzIGRlIGxhcyB2YXJpYWJsZXMgKipDVUFMSVRBVElWQVMqKi4KYGBge3J9ClRwdGlzdGEgPC10YWJsZShiZF9kZWxpdmVyeV9wZXJmJFRwdGlzdGEpClRwdGlzdGEKa25pdHI6OmthYmxlKFRwdGlzdGEpCgpDbGllbnRlIDwtdGFibGUoYmRfZGVsaXZlcnlfcGVyZiRDbGllbnRlKQpDbGllbnRlCmtuaXRyOjprYWJsZShDbGllbnRlKQpgYGAKCgojIyMgVGFibGFzIGNydXphZGEKYGBge3J9CmNydXphZGExPC10YWJsZShiZF9kZWxpdmVyeV9wZXJmJFRwdGlzdGEsYmRfZGVsaXZlcnlfcGVyZiREaWYpCgprbml0cjo6a2FibGUoY3J1emFkYTEpCgoKY3J1emFkYTI8LXRhYmxlKGJkX2RlbGl2ZXJ5X3BlcmYkRmVjaGEsYmRfZGVsaXZlcnlfcGVyZiREaWYsYmRfZGVsaXZlcnlfcGVyZiRDbGllbnRlKQprbml0cjo6a2FibGUoY3J1emFkYTIpCmBgYAoKCiMjIyBHcsOhZmljb3MgZGUgZGF0b3MgY3VhbGl0YXRpdm9zIHkgY3VhbnRpdGF0aXZvcwpgYGB7cn0KcGxvdChiZF9kZWxpdmVyeV9wZXJmJEZlY2hhLGJkX2RlbGl2ZXJ5X3BlcmYkRGlmLCB0eXBlPSJiIiwgbWFpbj0gIkRpZmVyZW5jaWEgZGUgdGllbXBvIHBvciBpbmljaW8gZGUgbWVzIiwgeGxhYj0gIk1lcyIsIHlsYWI9ICJEaWZlcmVuY2lhIFRpZW1wbyIpCmBgYAoKIyMjIEdyw6FmaWNvcyBkZSBkaXNwZXJzacOzbiAgCiMjIyMgU2NhdHRlcnBsb3QgeSBib3hwbG90cwoKYGBge3J9CnBsb3QoYmRfZGVsaXZlcnlfcGVyZiRGZWNoYSxiZF9kZWxpdmVyeV9wZXJmJERpZiwgbWFpbiA9ICJEaWZlcmVuY2lhIHRpZW1wbyBwb3IgbWVzIiwKICAgICB4bGFiID0gIkluY2lvIE1lcyIsIHlsYWIgPSAiRGlmZXJlbmNpYSBUaWVtcG8iLCAKICAgICBwY2ggPSAxOSwgZnJhbWUgPSBGQUxTRSkKYGBgClRlbmVtb3MgdW4gdGllbXBvIGNvbnN0YW50ZSwgcGVybyB2ZW1vcyBxdWUgZW4gRW5lcm8gc2UgdG9tYSBtw6FzIHRpZW1wbyBlbiBkaXN0cmlidWNpw7NuLiAKCgpgYGB7cn0KYm94cGxvdChiZF9kZWxpdmVyeV9wZXJmJERpZiwgdmVydGljYWwgPSBUUlVFLCAgbWFpbiA9IlRvdGFsIERpZmVyZW5jaWEgVGllbXBvIERpc3RyaWJ1Y2nDs24iKQpgYGAKUG9kZW1vcyB2ZXIgcXVlIHRlbmVtb3MgdGllbXBvcyBmdWVyYSBkZWwgcHJvbWVkaW8geSBxdWUgZW4gcHJvbWVkaW8gc2UgdGllbmUgZW50cmUgMSBob3JhIGVuIHRpZW1wb3MuCgojIyBQcm9wdWVzdGFzIHkgcmVmbGV4acOzbgpFbiBlc3RlIGFuYWxpc2lzIHB1ZGltb3MgdHJhYmFqYXIgY29uIGxhcyBiYXNlcyBkZSBkYXRvcyBwYXJhIHBvZGVyIGNvbm9jZXIgaW5mb3JtYWNpw7NuIHZhbGlvc2EgZGUgbGEgZW1wcmVzYSBGT1JNIHkgZW5jb250cmFyIGluc2lnaHRzIHF1ZSBub3MgcGVybWl0aWVyYW4gZGVzYXJyb2xsYXIgcHJvcHVlc3RhcyBxdWUgcHVlZGFuIG1lam9yYXIgZWwgcmVuZGltaWVudG8gZGUgbGEgZW1wcmVzYSBlbiBkaXN0aW50YXMgw6FyZWFzLgoKMS4gVG9tYW5kbyBlbiBjdWVudGEgbG9zIGRhdG9zIG9ic2VydmFkb3MgZW4gZWwgYW7DoWxpc2lzIGRlIFJILCBzZSBoYSBwb2RpZG8gbm90YXIgcXVlIEZvcm0gdGllbmUgdW4gw6FyZWEgZGUgb3BvcnR1bmlkYWQsIGVuIGN1YW50byBhIHN1IHJvdGFjacOzbiB5IHN1cyBiYWphcywgZGViaWRvIGEgcXVlIGVzdGFzIHNvbiBtw6FzIGFsdGFzIGRlIGxvIGRlc2VhYmxlOyBtdWNoYXMgZGUgbGFzIGJhamFzIHNvbiBkZWJpZG8gYSBsYXMgZmFsdGFzLiBJZ3VhbG1lbnRlLCBzZSBjb25vY2UgcXVlIGxhIG1heW9yw61hIGRlIGxhcyBwZXJzb25hcyBxdWUgaGFuIGluZ3Jlc2FkbyBzb24gZGUgcmVjacOpbiBpbmdyZXNvIChlbnRyZSAyMDIwIHkgMjAyMiksIHBvciBsbyBxdWUgc2UgY29ub2NlIHF1ZSBubyBoYXkgbXVjaGEgYW50aWfDvGVkYWQgZW50cmUgbG9zIGNvbGFib3JhZG9yZXMgZGUgRm9ybS4gTG8gcXVlIHNlIHByb3BvbmUgZXMgaW1wbGVtZW50YXIgZXN0cmF0ZWdpYXMgZGUgY3JlY2ltaWVudG8geSBkZXNhcnJvbGxvIGVuIGxvcyB0cmFiYWphZG9yZXMsIGNvbiBsYSBmaW5hbGlkYWQgZGUgaW5jcmVtZW50YXIgZWwgY29tcHJvbWlzbyBkZW50cm8gZGUgbG9zIGNvbGFib3JhZG9yZXMgeSBxdWUgcHVlZGFuIHZlciB1biBmdXR1cm8gZGVudHJvIGRlIGxhIGVtcHJlc2EuICAKMi4gUGFyYSBkaXNtaW51aXIgbGEgZGlmZXJlbmNpYSBkZSB0aWVtcG8gY29uIGVsIHJlbmRpbWllbnRvIGRlIGxvcyBlbnbDrW9zIHBvZGVtb3MgdGVuZXIgdW4gZW5jYXJnYWRvIG3DoXMgZGUgVHJhbnNwb3J0ZSBwYXJhIHBvZGVyIGxsZWdhciBhIHRpZW1wbyBvIGFwbGljYXIgdGVjbm9sb2fDrWFzIGNvbW8gQmxvY2tjaGFpbiBvIFJGSUQgcXVlIG5vcyBwdWVkYSBkYXIgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIHRpZW1wbyByZWFsIGRvbmRlIHNlIGVuY3VlbnRyYSwgcXVlIHJlZ2lzdHJlIGVsIHRpZW1wbyB5IGJ1c2NhciBtZWpvcmVzIHJ1dGFzIHBhcmEgdGVuZXIgdW5hIGV4Y2VsZW50ZSBsb2fDrXN0aWNhLg==