ENTREGABLE 2.4

Insertar y entender la base de datos

scrapdata <- read.csv ("/Users/ivannagarza/Desktop/TEC/7 SEMESTRE/RETO/FORM - Scrap.csv")
summary (scrapdata)
##   Referencia           Fecha               Hora             Producto        
##  Length:251         Length:251         Length:251         Length:251        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Cantidad       Unidad.de.medida   Ubicación.de.origen Ubicación.de.desecho
##  Min.   :   0.00   Length:251         Length:251          Length:251          
##  1st Qu.:   1.00   Class :character   Class :character    Class :character    
##  Median :   2.00   Mode  :character   Mode  :character    Mode  :character    
##  Mean   :  13.34                                                              
##  3rd Qu.:   7.00                                                              
##  Max.   :1674.00                                                              
##     Estado         
##  Length:251        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

Número de variables y registros en la base de datos

library (psych)
describe (scrapdata)
##                       vars   n   mean     sd median trimmed   mad min  max
## Referencia*              1 251 126.00  72.60    126  126.00 93.40   1  251
## Fecha*                   2 251  16.21   7.11     17   16.50  7.41   1   27
## Hora*                    3 251 126.00  72.60    126  126.00 93.40   1  251
## Producto*                4 251  45.20  24.83     46   44.94 26.69   1   96
## Cantidad                 5 251  13.34 105.90      2    3.95  1.48   0 1674
## Unidad.de.medida*        6 251   2.00   0.06      2    2.00  0.00   1    2
## Ubicación.de.origen*     7 251   3.47   0.86      4    3.60  0.00   1    4
## Ubicación.de.desecho*    8 251   2.00   0.06      2    2.00  0.00   1    2
## Estado*                  9 251   2.00   0.06      2    2.00  0.00   1    2
##                       range   skew kurtosis   se
## Referencia*             250   0.00    -1.21 4.58
## Fecha*                   26  -0.29    -0.99 0.45
## Hora*                   250   0.00    -1.21 4.58
## Producto*                95   0.01    -0.80 1.57
## Cantidad               1674  15.37   237.90 6.68
## Unidad.de.medida*         1 -15.65   244.02 0.00
## Ubicación.de.origen*      3  -1.11    -0.62 0.05
## Ubicación.de.desecho*     1 -15.65   244.02 0.00
## Estado*                   1 -15.65   244.02 0.00
str(scrapdata)
## 'data.frame':    251 obs. of  9 variables:
##  $ Referencia          : chr  "agosto 2022 (250)" "SP/08731" "SP/08730" "SP/08729" ...
##  $ Fecha               : chr  "" "31/08/2022" "31/08/2022" "31/08/2022" ...
##  $ Hora                : chr  "" "14:55:40" "14:49:25" "13:49:29" ...
##  $ 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 ...
##  $ Unidad.de.medida    : chr  "" "Unidad(es)" "Unidad(es)" "Unidad(es)" ...
##  $ 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" ...
##  $ Estado              : chr  "" "Hecho" "Hecho" "Hecho" ...

En la base de datos existen 9 variables y 251 registros

Clasificación de variables

Variable<-c("`Referencia`","`Fecha`","`Hora`","`Producto`","`Cantidad`","`Unidad.de.medida`","`Ubicación.de.origen`","`Ubicación.de.desecho`","`Estado`")
Type<-c("cualitativa (nominal)", "cuantitativa (continua)", "cuantitativa (continua)", "cualitativa (nominal)", "cualitativa (nominal)", "cualitativa (nominal)", "cualitativa (nominal)", "cualitativa (nominal)", "cualitativa (nominal)" ) 
table<-data.frame(Variable,Type)
knitr::kable(table)
Variable Type
Referencia cualitativa (nominal)
Fecha cuantitativa (continua)
Hora cuantitativa (continua)
Producto cualitativa (nominal)
Cantidad cualitativa (nominal)
Unidad.de.medida cualitativa (nominal)
Ubicación.de.origen cualitativa (nominal)
Ubicación.de.desecho cualitativa (nominal)
Estado cualitativa (nominal)

Escala de medición

Variable<-c("`Cantidad`")
Type<-c("Unidades") 
table<-data.frame(Variable,Type)
knitr::kable(table)
Variable Type
Cantidad Unidades

Técnicas de Limpieza

# install.packages("tidyverse")
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6      ✔ purrr   0.3.4 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.0      ✔ stringr 1.4.1 
## ✔ readr   2.1.2      ✔ forcats 0.5.2 
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggplot2::%+%()   masks psych::%+%()
## ✖ ggplot2::alpha() masks psych::alpha()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks stats::lag()

Técnica 1. Convertir tipos de datos

La técnica 1 fue realizada debido a que para poder realizar trabajos y análisis con la fecha y hora es necesario convertirlos a números enteros y así poder hacer las variables cuantitativas.

Convertir de caracter a fecha

scrapdata$Fecha <- as.Date(scrapdata$Fecha, format = "%d/%m/%Y")
tibble(scrapdata)
## # A tibble: 251 × 9
##    Referencia    Fecha      Hora  Produ…¹ Canti…² Unida…³ Ubica…⁴ Ubica…⁵ Estado
##    <chr>         <date>     <chr> <chr>     <dbl> <chr>   <chr>   <chr>   <chr> 
##  1 agosto 2022 … NA         ""    ""        1674. ""      ""      ""      ""    
##  2 SP/08731      2022-08-31 "14:… "[BACK…      2  "Unida… "SAB/C… "Virtu… "Hech…
##  3 SP/08730      2022-08-31 "14:… "[N615…      1  "Unida… "SAB/C… "Virtu… "Hech…
##  4 SP/08729      2022-08-31 "13:… "[N615…      1  "Unida… "SAB/C… "Virtu… "Hech…
##  5 SP/08728      2022-08-31 "09:… "[3413…     31  "Unida… "SAB/P… "Virtu… "Hech…
##  6 SP/08727      2022-08-31 "09:… "[DIVI…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  7 SP/08726      2022-08-31 "09:… "[DIVI…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  8 SP/08725      2022-08-31 "09:… "[CHAR…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  9 SP/08724      2022-08-31 "09:… "[CELD…      9  "Unida… "SAB/P… "Virtu… "Hech…
## 10 SP/08723      2022-08-31 "09:… "[TAPA…      2  "Unida… "SAB/P… "Virtu… "Hech…
## # … with 241 more rows, and abbreviated variable names ¹​Producto, ²​Cantidad,
## #   ³​Unidad.de.medida, ⁴​Ubicación.de.origen, ⁵​Ubicación.de.desecho

Convertir de caracter a entero

scrapdata$Hora <- substr(scrapdata$Hora, start = 1, stop = 2)
tibble (scrapdata)
## # A tibble: 251 × 9
##    Referencia    Fecha      Hora  Produ…¹ Canti…² Unida…³ Ubica…⁴ Ubica…⁵ Estado
##    <chr>         <date>     <chr> <chr>     <dbl> <chr>   <chr>   <chr>   <chr> 
##  1 agosto 2022 … NA         ""    ""        1674. ""      ""      ""      ""    
##  2 SP/08731      2022-08-31 "14"  "[BACK…      2  "Unida… "SAB/C… "Virtu… "Hech…
##  3 SP/08730      2022-08-31 "14"  "[N615…      1  "Unida… "SAB/C… "Virtu… "Hech…
##  4 SP/08729      2022-08-31 "13"  "[N615…      1  "Unida… "SAB/C… "Virtu… "Hech…
##  5 SP/08728      2022-08-31 "09"  "[3413…     31  "Unida… "SAB/P… "Virtu… "Hech…
##  6 SP/08727      2022-08-31 "09"  "[DIVI…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  7 SP/08726      2022-08-31 "09"  "[DIVI…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  8 SP/08725      2022-08-31 "09"  "[CHAR…      1  "Unida… "SAB/P… "Virtu… "Hech…
##  9 SP/08724      2022-08-31 "09"  "[CELD…      9  "Unida… "SAB/P… "Virtu… "Hech…
## 10 SP/08723      2022-08-31 "09"  "[TAPA…      2  "Unida… "SAB/P… "Virtu… "Hech…
## # … with 241 more rows, and abbreviated variable names ¹​Producto, ²​Cantidad,
## #   ³​Unidad.de.medida, ⁴​Ubicación.de.origen, ⁵​Ubicación.de.desecho
scrapdata$Hora <- as.integer(scrapdata$Hora)
str(scrapdata)
## 'data.frame':    251 obs. of  9 variables:
##  $ Referencia          : chr  "agosto 2022 (250)" "SP/08731" "SP/08730" "SP/08729" ...
##  $ Fecha               : Date, format: NA "2022-08-31" ...
##  $ Hora                : int  NA 14 14 13 9 9 9 9 9 9 ...
##  $ 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 ...
##  $ Unidad.de.medida    : chr  "" "Unidad(es)" "Unidad(es)" "Unidad(es)" ...
##  $ 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" ...
##  $ Estado              : chr  "" "Hecho" "Hecho" "Hecho" ...

Técnica 2. Valores faltantes

La técnica 2 fue utilizada para poder eliminar los datos que no son útiles, es decir los registros y variables que no contienen información o son irrelevantes para el análisis.

¿Cuántos NA tengo en la base de datos?

sum(is.na(scrapdata))
## [1] 2

¿Cuántos NA tengo por variable?

sapply(scrapdata, function(x) sum (is.na(x)))
##           Referencia                Fecha                 Hora 
##                    0                    1                    1 
##             Producto             Cantidad     Unidad.de.medida 
##                    0                    0                    0 
##  Ubicación.de.origen Ubicación.de.desecho               Estado 
##                    0                    0                    0

Borrar todos los registros NA de una tabla

scrapdata <- na.omit(scrapdata)
summary(scrapdata)   
##   Referencia            Fecha                 Hora      Producto        
##  Length:250         Min.   :2022-08-01   Min.   : 8   Length:250        
##  Class :character   1st Qu.:2022-08-11   1st Qu.: 9   Class :character  
##  Mode  :character   Median :2022-08-19   Median :11   Mode  :character  
##                     Mean   :2022-08-17   Mean   :12                     
##                     3rd Qu.:2022-08-25   3rd Qu.:14                     
##                     Max.   :2022-08-31   Max.   :19                     
##     Cantidad      Unidad.de.medida   Ubicación.de.origen Ubicación.de.desecho
##  Min.   : 0.000   Length:250         Length:250          Length:250          
##  1st Qu.: 1.000   Class :character   Class :character    Class :character    
##  Median : 2.000   Mode  :character   Mode  :character    Mode  :character    
##  Mean   : 6.696                                                              
##  3rd Qu.: 7.000                                                              
##  Max.   :96.000                                                              
##     Estado         
##  Length:250        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
sum(is.na(scrapdata))
## [1] 0

Eliminar columnas

scrapdata <- subset (scrapdata,select = -c(Referencia,Unidad.de.medida, Estado))
summary (scrapdata)
##      Fecha                 Hora      Producto            Cantidad     
##  Min.   :2022-08-01   Min.   : 8   Length:250         Min.   : 0.000  
##  1st Qu.:2022-08-11   1st Qu.: 9   Class :character   1st Qu.: 1.000  
##  Median :2022-08-19   Median :11   Mode  :character   Median : 2.000  
##  Mean   :2022-08-17   Mean   :12                      Mean   : 6.696  
##  3rd Qu.:2022-08-25   3rd Qu.:14                      3rd Qu.: 7.000  
##  Max.   :2022-08-31   Max.   :19                      Max.   :96.000  
##  Ubicación.de.origen Ubicación.de.desecho
##  Length:250          Length:250          
##  Class :character    Class :character    
##  Mode  :character    Mode  :character    
##                                          
##                                          
## 

Visualización

ggplot(scrapdata, aes(x=Fecha, y=Cantidad)) +
  geom_bar(stat="identity", fill="orange") + scale_fill_grey() + # Add bars to the plot
  labs(title = "Relación de Fecha y Cantidad", # Add a title
       subtitle = "RH empresa FORM", # Add a subtitle
       caption = "Relación", # Add a caption
       x = "Fecha")

LS0tCnRpdGxlOiAiU1JBUF9GT1JNIgphdXRob3I6ICJJdmFubmEgR2FyemEiCmRhdGU6ICIyMDIyLTA5LTI1IgpvdXRwdXQ6IAogaHRtbF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0aGVtZTogY2VydWxlYW4KICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUgCi0tLQoKIyBFTlRSRUdBQkxFIDIuNAoKIyMgSW5zZXJ0YXIgeSBlbnRlbmRlciBsYSBiYXNlIGRlIGRhdG9zCmBgYHtyfQpzY3JhcGRhdGEgPC0gcmVhZC5jc3YgKCIvVXNlcnMvaXZhbm5hZ2FyemEvRGVza3RvcC9URUMvNyBTRU1FU1RSRS9SRVRPL0ZPUk0gLSBTY3JhcC5jc3YiKQpzdW1tYXJ5IChzY3JhcGRhdGEpCmBgYAoKIyMgTsO6bWVybyBkZSB2YXJpYWJsZXMgeSByZWdpc3Ryb3MgZW4gbGEgYmFzZSBkZSBkYXRvcyAKYGBge3J9CmxpYnJhcnkgKHBzeWNoKQpkZXNjcmliZSAoc2NyYXBkYXRhKQpzdHIoc2NyYXBkYXRhKQpgYGAKKipFbiBsYSBiYXNlIGRlIGRhdG9zIGV4aXN0ZW4gOSB2YXJpYWJsZXMgeSAyNTEgcmVnaXN0cm9zKioKCiMjIENsYXNpZmljYWNpw7NuIGRlIHZhcmlhYmxlcyAKYGBge3J9ClZhcmlhYmxlPC1jKCJgUmVmZXJlbmNpYWAiLCJgRmVjaGFgIiwiYEhvcmFgIiwiYFByb2R1Y3RvYCIsImBDYW50aWRhZGAiLCJgVW5pZGFkLmRlLm1lZGlkYWAiLCJgVWJpY2FjacOzbi5kZS5vcmlnZW5gIiwiYFViaWNhY2nDs24uZGUuZGVzZWNob2AiLCJgRXN0YWRvYCIpClR5cGU8LWMoImN1YWxpdGF0aXZhIChub21pbmFsKSIsICJjdWFudGl0YXRpdmEgKGNvbnRpbnVhKSIsICJjdWFudGl0YXRpdmEgKGNvbnRpbnVhKSIsICJjdWFsaXRhdGl2YSAobm9taW5hbCkiLCAiY3VhbGl0YXRpdmEgKG5vbWluYWwpIiwgImN1YWxpdGF0aXZhIChub21pbmFsKSIsICJjdWFsaXRhdGl2YSAobm9taW5hbCkiLCAiY3VhbGl0YXRpdmEgKG5vbWluYWwpIiwgImN1YWxpdGF0aXZhIChub21pbmFsKSIgKSAKdGFibGU8LWRhdGEuZnJhbWUoVmFyaWFibGUsVHlwZSkKa25pdHI6OmthYmxlKHRhYmxlKQpgYGAKCiMjIEVzY2FsYSBkZSBtZWRpY2nDs24gCmBgYHtyfQpWYXJpYWJsZTwtYygiYENhbnRpZGFkYCIpClR5cGU8LWMoIlVuaWRhZGVzIikgCnRhYmxlPC1kYXRhLmZyYW1lKFZhcmlhYmxlLFR5cGUpCmtuaXRyOjprYWJsZSh0YWJsZSkKYGBgCgojIyBUw6ljbmljYXMgZGUgTGltcGllemEgCmBgYHtyfQojIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKCiMjIyBUw6ljbmljYSAxLiBDb252ZXJ0aXIgdGlwb3MgZGUgZGF0b3MgICAKKkxhIHTDqWNuaWNhIDEgZnVlIHJlYWxpemFkYSBkZWJpZG8gYSBxdWUgcGFyYSBwb2RlciByZWFsaXphciB0cmFiYWpvcyB5IGFuw6FsaXNpcyBjb24gbGEgZmVjaGEgeSBob3JhIGVzIG5lY2VzYXJpbyBjb252ZXJ0aXJsb3MgYSBuw7ptZXJvcyBlbnRlcm9zIHkgYXPDrSBwb2RlciBoYWNlciBsYXMgdmFyaWFibGVzIGN1YW50aXRhdGl2YXMuKgoKKipDb252ZXJ0aXIgZGUgY2FyYWN0ZXIgYSBmZWNoYSoqICAKYGBge3J9CnNjcmFwZGF0YSRGZWNoYSA8LSBhcy5EYXRlKHNjcmFwZGF0YSRGZWNoYSwgZm9ybWF0ID0gIiVkLyVtLyVZIikKdGliYmxlKHNjcmFwZGF0YSkKYGBgCgoqKkNvbnZlcnRpciBkZSBjYXJhY3RlciBhIGVudGVybyoqICAKYGBge3J9CnNjcmFwZGF0YSRIb3JhIDwtIHN1YnN0cihzY3JhcGRhdGEkSG9yYSwgc3RhcnQgPSAxLCBzdG9wID0gMikKdGliYmxlIChzY3JhcGRhdGEpCnNjcmFwZGF0YSRIb3JhIDwtIGFzLmludGVnZXIoc2NyYXBkYXRhJEhvcmEpCnN0cihzY3JhcGRhdGEpCmBgYAoKIyMjIFTDqWNuaWNhIDIuIFZhbG9yZXMgZmFsdGFudGVzIAoqTGEgdMOpY25pY2EgMiBmdWUgdXRpbGl6YWRhIHBhcmEgcG9kZXIgZWxpbWluYXIgbG9zIGRhdG9zIHF1ZSBubyBzb24gw7p0aWxlcywgZXMgZGVjaXIgbG9zIHJlZ2lzdHJvcyB5IHZhcmlhYmxlcyBxdWUgbm8gY29udGllbmVuIGluZm9ybWFjacOzbiBvIHNvbiBpcnJlbGV2YW50ZXMgcGFyYSBlbCBhbsOhbGlzaXMuKiAgCgoqKsK/Q3XDoW50b3MgTkEgdGVuZ28gZW4gbGEgYmFzZSBkZSBkYXRvcz8qKgpgYGB7cn0Kc3VtKGlzLm5hKHNjcmFwZGF0YSkpCmBgYAoKKirCv0N1w6FudG9zIE5BIHRlbmdvIHBvciB2YXJpYWJsZT8qKgpgYGB7cn0Kc2FwcGx5KHNjcmFwZGF0YSwgZnVuY3Rpb24oeCkgc3VtIChpcy5uYSh4KSkpCmBgYAoKKipCb3JyYXIgdG9kb3MgbG9zIHJlZ2lzdHJvcyBOQSBkZSB1bmEgdGFibGEqKgpgYGB7cn0Kc2NyYXBkYXRhIDwtIG5hLm9taXQoc2NyYXBkYXRhKQpzdW1tYXJ5KHNjcmFwZGF0YSkgICAKc3VtKGlzLm5hKHNjcmFwZGF0YSkpCmBgYAoKKipFbGltaW5hciBjb2x1bW5hcyoqCmBgYHtyfQpzY3JhcGRhdGEgPC0gc3Vic2V0IChzY3JhcGRhdGEsc2VsZWN0ID0gLWMoUmVmZXJlbmNpYSxVbmlkYWQuZGUubWVkaWRhLCBFc3RhZG8pKQpzdW1tYXJ5IChzY3JhcGRhdGEpCmBgYAoKIyMgVmlzdWFsaXphY2nDs24KYGBge3J9CmdncGxvdChzY3JhcGRhdGEsIGFlcyh4PUZlY2hhLCB5PUNhbnRpZGFkKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IiwgZmlsbD0ib3JhbmdlIikgKyBzY2FsZV9maWxsX2dyZXkoKSArICMgQWRkIGJhcnMgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIlJlbGFjacOzbiBkZSBGZWNoYSB5IENhbnRpZGFkIiwgIyBBZGQgYSB0aXRsZQogICAgICAgc3VidGl0bGUgPSAiUkggZW1wcmVzYSBGT1JNIiwgIyBBZGQgYSBzdWJ0aXRsZQogICAgICAgY2FwdGlvbiA9ICJSZWxhY2nDs24iLCAjIEFkZCBhIGNhcHRpb24KICAgICAgIHggPSAiRmVjaGEiKQpgYGAKCg==