#file.choose()
scrap <- read.csv("/Users/vanessaelizondo/Desktop/Tec/Semestre 7/FORM/CSV/FORM - Scrap.csv")
summary(scrap)## Fecha Hora Producto Cantidad
## Length:251 Length:251 Length:251 Min. : 0.00
## Class :character Class :character Class :character 1st Qu.: 1.00
## Mode :character Mode :character Mode :character Median : 2.00
## Mean : 13.34
## 3rd Qu.: 7.00
## Max. :1674.00
## Ubicación.de.origen Ubicación.de.desecho
## Length:251 Length:251
## Class :character Class :character
## Mode :character Mode :character
##
##
##
Se hizo limpieza manual de la base de datos para separar fecha y hora en diferentes columnas y se eliminaron columnas innecesarias.
str(scrap)## 'data.frame': 251 obs. of 6 variables:
## $ Fecha : chr "" "31/08/2022" "31/08/2022" "31/08/2022" ...
## $ Hora : chr "" "2:55 PM" "2:49 PM" "1:49 PM" ...
## $ Producto : chr "" "[BACKFRAME 60% CUELLO ARMADO] 18805. 60% Backframe. Cuello Armado." "[N61506747 CAJA] N61506747. Kit. Caja." "[N61506729 SEPARADOR] N61506729. Kit. Separador." ...
## $ Cantidad : num 1674 2 1 1 31 ...
## $ Ubicación.de.origen : chr "" "SAB/Calidad/Entrega de PT" "SAB/Calidad/Entrega de PT" "SAB/Calidad/Entrega de PT" ...
## $ Ubicación.de.desecho: chr "" "Virtual Locations/Scrapped" "Virtual Locations/Scrapped" "Virtual Locations/Scrapped" ...
Contamos con 6 variables y 251 observaciones.
Se decidió realizar está técnica para asegurarnos de que no se tenga falta de datos y en caso de tenerlos evitar que estas eviten tener un analisis asertivo al no agregar valor a la base de datos.
sum(is.na(scrap))## [1] 0
Sapply: Para contar los NA
sapply(scrap, function(x) sum(is.na(x)))## Fecha Hora Producto
## 0 0 0
## Cantidad Ubicación.de.origen Ubicación.de.desecho
## 0 0 0
No se encuentran NAs en la base de datos
Se decidó realizar está técnica para deshacernos de información que no es muy relevante para el análisis de nuestra base de datos.
scrap2 <- scrap
scrap2 <- subset (scrap2, select = -c (Hora))
scrap2 <- subset (scrap2, select = -c (Producto))
scrap2 <- subset (scrap2, select = -c (Ubicación.de.desecho))
summary(scrap2)## Fecha Cantidad Ubicación.de.origen
## Length:251 Min. : 0.00 Length:251
## Class :character 1st Qu.: 1.00 Class :character
## Mode :character Median : 2.00 Mode :character
## Mean : 13.34
## 3rd Qu.: 7.00
## Max. :1674.00
Cuantitativa: Discreta, Continua Escala de medición: Intervalo, Razón Cualitativa Escala de medición: Nominales, Ordinales
Variable<-c("`Fecha`","`Cantidad`", "` Ubicación.de.origen`")
Type<-c("Cuantitativa (continua)", "Cuantitativa (discreta)","Cualitativa")
Measurement<-c("Razón","Razón","Nominal")
table<-data.frame(Variable,Type,Measurement)
knitr::kable(table)| Variable | Type | Measurement |
|---|---|---|
Fecha |
Cuantitativa (continua) | Razón |
Cantidad |
Cuantitativa (discreta) | Razón |
Ubicación.de.origen |
Cualitativa | Nominal |
summary(scrap2)## Fecha Cantidad Ubicación.de.origen
## Length:251 Min. : 0.00 Length:251
## Class :character 1st Qu.: 1.00 Class :character
## Mode :character Median : 2.00 Mode :character
## Mean : 13.34
## 3rd Qu.: 7.00
## Max. :1674.00
#install.packages('epiDisplay')
library(epiDisplay)## Loading required package: foreign
## Loading required package: survival
## Loading required package: MASS
## Loading required package: nnet
tab1(scrap2$Ubicación.de.origen, sort.group = "decreasing", cum.percent = TRUE) ## scrap2$Ubicación.de.origen :
## Frequency Percent Cum. percent
## SAB/Pre-Production 179 71.3 71.3
## SAB/Calidad/Entrega de PT 58 23.1 94.4
## SAB/Post-Production 13 5.2 99.6
## 1 0.4 100.0
## Total 251 100.0 100.0
#install.packages("plyr")
library(plyr)
pie(table(scrap2$Ubicación.de.origen))#table(scrap2$Cantidad,scrap2$Fecha)
barplot(table(scrap2$Cantidad,scrap2$Ubicación.de.origen), col="yellow", main = "Kilos de Scrapsegún su origen", xlab = "Origen", ylab = "Kilos" )boxplots=subset(scrap2,select=-c(Ubicación.de.origen))
boxplot(table (scrap2$Ubicación.de.origen), main = "Ubicación de Origen", xlab = "Origen", ylab = "Cantidad")#file.choose()
merma <- read.csv("/Users/vanessaelizondo/Desktop/Tec/Semestre 7/FORM/CSV/FORM - Merma.csv")
summary(merma)## Fecha IDMes Mes Kilos
## Length:60 Min. :1.00 Length:60 Length:60
## Class :character 1st Qu.:3.00 Class :character Class :character
## Mode :character Median :5.00 Mode :character Mode :character
## Mean :5.24
## 3rd Qu.:8.00
## Max. :9.00
## NA's :10
str(merma)## 'data.frame': 60 obs. of 4 variables:
## $ Fecha: chr "11/01/22" "11/01/22" "22/01/22" "30/01/22" ...
## $ IDMes: int 1 1 1 1 NA 2 2 2 2 2 ...
## $ Mes : chr "ENERO" "ENERO" "ENERO" "ENERO" ...
## $ Kilos: chr "5080" "3810" "2990" "2680" ...
Contamos con 4 variables y 60 obsrvaciones.
Se decidió realizar está técnica para asegurarnos de que no se tenga falta de datos y en caso de tenerlos evitar que estas eviten tener un analisis asertivo al no agregar valor a la base de datos.
sum(is.na(merma))## [1] 10
Sapply: Para contar los NA
sapply(merma, function(x) sum(is.na(x)))## Fecha IDMes Mes Kilos
## 0 10 0 0
Observación: tenemos 10 NAs en la variable de Fecha, podemos ver que los NAs son gracias al acomodo de información en la base de datos.
Decidimos borrar la fila de totales para elimninar los NAs.
merma2<-merma
delete.na <- function(df, n=0) {
df[rowSums(is.na(df)) <= n,]
}
delete.na(merma2)## Fecha IDMes Mes Kilos
## 1 11/01/22 1 ENERO 5080
## 2 11/01/22 1 ENERO 3810
## 3 22/01/22 1 ENERO 2990
## 4 30/01/22 1 ENERO 2680
## 6 18/02/22 2 FEBRERO 3650
## 7 18/02/22 2 FEBRERO 4380
## 8 18/02/22 2 FEBRERO 3870
## 9 18/02/22 2 FEBRERO 3590
## 10 18/02/22 2 FEBRERO 3410
## 11 24/02/22 2 FEBRERO 3930
## 13 03/03/22 3 MARZO 4000
## 14 08/03/22 3 MARZO 4190
## 15 11/03/22 3 MARZO 2980
## 16 16/03/22 3 MARZO 3290
## 17 23/03/22 3 MARZO 4200
## 18 30/03/22 3 MARZO 3810
## 20 04/04/22 4 ABRIL 3940
## 21 11/04/22 4 ABRIL 4190
## 22 14/04/22 4 ABRIL 2950
## 23 21/04/22 4 ABRIL 3690
## 24 27/04/22 4 ABRIL 4050
## 26 02/05/22 5 MAYO 4310
## 27 09/05/22 5 MAYO 4770
## 28 14/05/22 5 MAYO 3680
## 29 24/05/22 5 MAYO 6140
## 30 25/05/22 5 MAYO 4510
## 32 07/06/22 6 JUNIO 4680
## 33 15/06/22 6 JUNIO 4330
## 34 20/06/22 6 JUNIO 5010
## 35 27/06/22 6 JUNIO 4260
## 37 04/07/22 7 JULIO 5230
## 38 11/07/22 7 JULIO 2130
## 39 16/07/22 7 JULIO 4130
## 40 21/07/22 7 JULIO 3920
## 41 27/07/22 7 JULIO 3960
## 43 08/08/22 8 AGOSTO 3140
## 44 10/08/22 8 AGOSTO 4210
## 45 11/08/22 8 AGOSTO 3140
## 46 13/08/22 8 AGOSTO 3780
## 47 15/08/22 8 AGOSTO 4240
## 48 22/08/22 8 AGOSTO 4200
## 49 29/08/22 8 AGOSTO 4270
## 50 29/08/22 8 AGOSTO 810
## 51 30/08/22 8 AGOSTO 1040
## 52 31/08/22 8 AGOSTO 2480
## 53 31/08/22 8 AGOSTO 790
## 55 05/09/22 9 SEPTIEMBRE 3050
## 56 07/09/22 9 SEPTIEMBRE 2830
## 57 15/09/22 9 SEPTIEMBRE 3967
## 58 21/09/22 9 SEPTIEMBRE 3739
merma2 <- na.omit(merma2)
summary(merma2)## Fecha IDMes Mes Kilos
## Length:50 Min. :1.00 Length:50 Length:50
## Class :character 1st Qu.:3.00 Class :character Class :character
## Mode :character Median :5.00 Mode :character Mode :character
## Mean :5.24
## 3rd Qu.:8.00
## Max. :9.00
#install.packages("tibble")
library(tibble)
merma2$Fecha<-as.Date(merma2$Fecha, format = "%d/%m/%Y")
tibble(merma2)## # A tibble: 50 × 4
## Fecha IDMes Mes Kilos
## <date> <int> <chr> <chr>
## 1 0022-01-11 1 ENERO 5080
## 2 0022-01-11 1 ENERO 3810
## 3 0022-01-22 1 ENERO 2990
## 4 0022-01-30 1 ENERO 2680
## 5 0022-02-18 2 FEBRERO 3650
## 6 0022-02-18 2 FEBRERO 4380
## 7 0022-02-18 2 FEBRERO 3870
## 8 0022-02-18 2 FEBRERO 3590
## 9 0022-02-18 2 FEBRERO 3410
## 10 0022-02-24 2 FEBRERO 3930
## # … with 40 more rows
Cuantitativa: Discreta, Continua Escala de medición: Intervalo, Razón Cualitativa Escala de medición: Nominales, Ordinales
Variable<-c("`Fecha`","`IDMes`", "` Mes`", "` Kilos`")
Type<-c("Cuantitativa (continua)", "Cualitativa","Cualitativa","Cuantitativa (discreta)")
Measurement<-c("Razón", "Nominal","Nominal","Razón")
table<-data.frame(Variable,Type,Measurement)
knitr::kable(table)| Variable | Type | Measurement |
|---|---|---|
Fecha |
Cuantitativa (continua) | Razón |
IDMes |
Cualitativa | Nominal |
Mes |
Cualitativa | Nominal |
Kilos |
Cuantitativa (discreta) | Razón |
plot(merma2$Fecha,merma2$Kilos, type="l",col="blue", xlab ="Mes",ylab ="Kilos", main = "Cantidades de kilos por mes")table(merma2$Mes, merma2$Kilos)##
## 1040 2130 2480 2680 2830 2950 2980 2990 3050 3140 3290 3410 3590
## ABRIL 0 0 0 0 0 1 0 0 0 0 0 0 0
## AGOSTO 1 0 1 0 0 0 0 0 0 2 0 0 0
## ENERO 0 0 0 1 0 0 0 1 0 0 0 0 0
## FEBRERO 0 0 0 0 0 0 0 0 0 0 0 1 1
## JULIO 0 1 0 0 0 0 0 0 0 0 0 0 0
## JUNIO 0 0 0 0 0 0 0 0 0 0 0 0 0
## MARZO 0 0 0 0 0 0 1 0 0 0 1 0 0
## MAYO 0 0 0 0 0 0 0 0 0 0 0 0 0
## SEPTIEMBRE 0 0 0 0 1 0 0 0 1 0 0 0 0
##
## 3650 3680 3690 3739 3780 3810 3870 3920 3930 3940 3960 3967 4000
## ABRIL 0 0 1 0 0 0 0 0 0 1 0 0 0
## AGOSTO 0 0 0 0 1 0 0 0 0 0 0 0 0
## ENERO 0 0 0 0 0 1 0 0 0 0 0 0 0
## FEBRERO 1 0 0 0 0 0 1 0 1 0 0 0 0
## JULIO 0 0 0 0 0 0 0 1 0 0 1 0 0
## JUNIO 0 0 0 0 0 0 0 0 0 0 0 0 0
## MARZO 0 0 0 0 0 1 0 0 0 0 0 0 1
## MAYO 0 1 0 0 0 0 0 0 0 0 0 0 0
## SEPTIEMBRE 0 0 0 1 0 0 0 0 0 0 0 1 0
##
## 4050 4130 4190 4200 4210 4240 4260 4270 4310 4330 4380 4510 4680
## ABRIL 1 0 1 0 0 0 0 0 0 0 0 0 0
## AGOSTO 0 0 0 1 1 1 0 1 0 0 0 0 0
## ENERO 0 0 0 0 0 0 0 0 0 0 0 0 0
## FEBRERO 0 0 0 0 0 0 0 0 0 0 1 0 0
## JULIO 0 1 0 0 0 0 0 0 0 0 0 0 0
## JUNIO 0 0 0 0 0 0 1 0 0 1 0 0 1
## MARZO 0 0 1 1 0 0 0 0 0 0 0 0 0
## MAYO 0 0 0 0 0 0 0 0 1 0 0 1 0
## SEPTIEMBRE 0 0 0 0 0 0 0 0 0 0 0 0 0
##
## 4770 5010 5080 5230 6140 790 810
## ABRIL 0 0 0 0 0 0 0
## AGOSTO 0 0 0 0 0 1 1
## ENERO 0 0 1 0 0 0 0
## FEBRERO 0 0 0 0 0 0 0
## JULIO 0 0 0 1 0 0 0
## JUNIO 0 1 0 0 0 0 0
## MARZO 0 0 0 0 0 0 0
## MAYO 1 0 0 0 1 0 0
## SEPTIEMBRE 0 0 0 0 0 0 0
barplot(table(merma2$Kilos, merma2$IDMes), col="purple", main = "Cantidad de Kilos por mes", xlab = "ID Mes", ylab = "Kilos" )#file.choose()
produccion <- read.csv("/Users/vanessaelizondo/Desktop/Tec/Semestre 7/FORM/CSV/FORM - ProducciónLimpia.csv")
summary(produccion)## CLIENTE ID.FORM PRODUCTO PIEZAS.PROG.
## Length:2569 Length:2569 Length:2569 Length:2569
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## TMO..MIN. HR..FIN ESTACION.ARRANQUE Laminas.procesadas
## Length:2569 Length:2569 Length:2569 Length:2569
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## INICIO.SEP.UP FIN.INICIO.DE.SEP.UP INICIO.de.PROCESO FIN.de.PROCESO
## Length:2569 Length:2569 Length:2569 Length:2569
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## TIEMPO.CALIDAD
## Length:2569
## Class :character
## Mode :character
str(produccion)## 'data.frame': 2569 obs. of 13 variables:
## $ CLIENTE : chr "VARROC" "VARROC" "VARROC" "DENSO" ...
## $ ID.FORM : chr "VL-017-13938" "VL-017-13936" "VL-017-14729" "" ...
## $ PRODUCTO : chr "763 . KIT. CAJA." "747 KIT. CAJA HSC. ( 2 Partes)" "747 KIT. TAPA." "TOYOTA. MCV. Insterto D 2R. CORTE. 1 Golpe = 12 piezas. ( 9 Pza. / Celda)." ...
## $ PIEZAS.PROG. : chr "199" "57" "68" "192" ...
## $ TMO..MIN. : chr "15" "10" "10" "15" ...
## $ HR..FIN : chr "9:15:00 a. m." "9:25:00 a. m." "9:35:00 a. m." "9:50:00 a. m." ...
## $ ESTACION.ARRANQUE : chr "C1" "C1Y2" "C1Y2" "C1" ...
## $ Laminas.procesadas : chr "201" "116" "69" "49" ...
## $ INICIO.SEP.UP : chr "9:00" "9:26" "10:02" "10:12" ...
## $ FIN.INICIO.DE.SEP.UP: chr "9:12" "9:31" "10:09" "10.17" ...
## $ INICIO.de.PROCESO : chr "9:13" "9:32" "10:09" "10:18" ...
## $ FIN.de.PROCESO : chr "9:26" "9:53" "10.12" "10:20" ...
## $ TIEMPO.CALIDAD : chr "1" "1" "1" "1" ...
Contamos con 13 variables y 2569 obsrvaciones.
Observaciones: Fue necesario hacer una limpia manual de la base de datos, se seleccionaron las variables conmayor significancia, nos quedamos con los datos unicamente de producción y se aclaró el formato de las columnas de fecha y tiempo.
Se decidió eliminar columnas con variables que no agregan valor al análisis de la base de datos.
produccion2 <- produccion
produccion2 <- subset (produccion2, select = -c (ID.FORM))
produccion2 <- subset (produccion2, select = -c (PRODUCTO))
produccion2 <- subset (produccion2, select = -c (HR..FIN))
produccion2 <- subset (produccion2, select = -c (ESTACION.ARRANQUE))
produccion2 <- subset (produccion2, select = -c (INICIO.SEP.UP))
produccion2 <- subset (produccion2, select = -c (FIN.INICIO.DE.SEP.UP))
produccion2 <- subset (produccion2, select = -c (INICIO.de.PROCESO))
produccion2 <- subset (produccion2, select = -c (FIN.de.PROCESO))
summary(produccion2)## CLIENTE PIEZAS.PROG. TMO..MIN. Laminas.procesadas
## Length:2569 Length:2569 Length:2569 Length:2569
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## TIEMPO.CALIDAD
## Length:2569
## Class :character
## Mode :character
Convertimos characteres enteros a numéricos.
#install.packages("tibble")
library(tibble)
produccion2$TMO..MIN.<- as.numeric(produccion2$TMO..MIN.)## Warning: NAs introduced by coercion
produccion2$PIEZAS.PROG.<- as.numeric(produccion2$PIEZAS.PROG.)## Warning: NAs introduced by coercion
produccion2$TIEMPO.CALIDAD<- as.numeric(produccion2$TIEMPO.CALIDAD)## Warning: NAs introduced by coercion
produccion2$Laminas.procesadas<- as.numeric(produccion2$Laminas.procesadas)## Warning: NAs introduced by coercion
produccion2$CLIENTE<- as.character(produccion2$CLIENTE)
tibble(produccion2)## # A tibble: 2,569 × 5
## CLIENTE PIEZAS.PROG. TMO..MIN. Laminas.procesadas TIEMPO.CALIDAD
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 VARROC 199 15 201 1
## 2 VARROC 57 10 116 1
## 3 VARROC 68 10 69 1
## 4 DENSO 192 15 49 1
## 5 DENSO 192 15 49 1
## 6 YANFENG 400 30 801 1
## 7 YANFENG 80 15 41 1
## 8 YANFENG 104 15 53 1
## 9 YANFENG 104 15 53 1
## 10 YANFENG 160 20 55 1
## # … with 2,559 more rows
Se decidió realizar está técnica para asegurarnos de que no se tenga falta de datos y en caso de tenerlos evitar que estas eviten tener un analisis asertivo al no agregar valor a la base de datos.
sum(is.na(produccion2))## [1] 2161
Sapply: Para contar los NA
sapply(produccion2, function(x) sum(is.na(x)))## CLIENTE PIEZAS.PROG. TMO..MIN. Laminas.procesadas
## 0 164 714 661
## TIEMPO.CALIDAD
## 622
Observación:Contamos con 2161 NAs, 164 en la variable de piezas programadas, 714 en tiempo mínimo, 661 en Laminas Procesadas y 622 Tiempo de Calidad.
produccion3<-produccion2
delete.na <- function(df, n=0) {
df[rowSums(is.na(df)) <= n,]
}
#delete.na(produccion3)
produccion3 <- na.omit(produccion3)
summary(produccion3)## CLIENTE PIEZAS.PROG. TMO..MIN. Laminas.procesadas
## Length:1462 Min. : 1.0 Min. : 0.00 Min. : 0.0
## Class :character 1st Qu.: 100.0 1st Qu.: 15.00 1st Qu.: 37.0
## Mode :character Median : 192.0 Median : 20.00 Median : 101.0
## Mean : 172.7 Mean : 22.41 Mean : 134.1
## 3rd Qu.: 200.0 3rd Qu.: 25.00 3rd Qu.: 202.0
## Max. :1200.0 Max. :120.00 Max. :1125.0
## TIEMPO.CALIDAD
## Min. : 0.000
## 1st Qu.: 1.000
## Median : 1.000
## Mean : 1.063
## 3rd Qu.: 1.000
## Max. :22.000
sum(is.na(produccion3))## [1] 0
Cuantitativa: Discreta, Continua Escala de medición: Intervalo, Razón Cualitativa Escala de medición: Nominales, Ordinales
Variable<-c("`CLIENTE`","`PIEZAS.PROG.`", "` TMO..MIN.`", "` Laminas.procesadas`", "` TIEMPO.CALIDAD`")
Type<-c("Cualitativa", "Cuantitativa (discreta)","Cuantitativa (discreta)","Cuantitativa (discreta)","Cuantitativa (discreta)")
Measurement<-c("Nominal", "Razón","Razón","Razón","Razón")
table<-data.frame(Variable,Type,Measurement)
knitr::kable(table)| Variable | Type | Measurement |
|---|---|---|
CLIENTE |
Cualitativa | Nominal |
PIEZAS.PROG. |
Cuantitativa (discreta) | Razón |
TMO..MIN. |
Cuantitativa (discreta) | Razón |
Laminas.procesadas |
Cuantitativa (discreta) | Razón |
TIEMPO.CALIDAD |
Cuantitativa (discreta) | Razón |
#install.packages("plyr")
library(plyr)
pie(table(produccion3$CLIENTE))boxplots=subset(produccion3,select=-c(CLIENTE))
boxplot(table (produccion3$CLIENTE), main = "Pedidos de Clientes", xlab = "Clientes", ylab = "Cantidad")En esta actividad de logró analizar 3 de las bases de datos de FORM; con ello pudimos extraer información que en la base de datos puede llegar a ser más complejo de analizarlo. En este análisis logramos hacer graficos visuales para tener un mayor entendimiento de lo que la base de datos no puede decir. Extraímos información de las bases de datos, se analizo y se obtuvieron respuestas de problemas y margenes de oportunidad de crecimiento y de mejora.