Importar la base de datos

#file.choose()
bd <- read.csv("C:\\Users\\maria\\Documents\\ITESM LAET\\Semestre 7\\M3\\Abarrotes_Ventas.csv")

Entender la base de datos

summary(bd)
##  vcClaveTienda        DescGiro         Codigo.Barras            PLU        
##  Length:200625      Length:200625      Min.   :8.347e+05   Min.   : 1.00   
##  Class :character   Class :character   1st Qu.:7.501e+12   1st Qu.: 1.00   
##  Mode  :character   Mode  :character   Median :7.501e+12   Median : 1.00   
##                                        Mean   :5.950e+12   Mean   : 2.11   
##                                        3rd Qu.:7.501e+12   3rd Qu.: 1.00   
##                                        Max.   :1.750e+13   Max.   :30.00   
##                                                            NA's   :199188  
##     Fecha               Hora              Marca            Fabricante       
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##    Producto             Precio          Ult.Costo         Unidades     
##  Length:200625      Min.   :-147.00   Min.   :  0.38   Min.   : 0.200  
##  Class :character   1st Qu.:  11.00   1st Qu.:  8.46   1st Qu.: 1.000  
##  Mode  :character   Median :  16.00   Median : 12.31   Median : 1.000  
##                     Mean   :  19.42   Mean   : 15.31   Mean   : 1.262  
##                     3rd Qu.:  25.00   3rd Qu.: 19.23   3rd Qu.: 1.000  
##                     Max.   :1000.00   Max.   :769.23   Max.   :96.000  
##                                                                        
##     F.Ticket      NombreDepartamento NombreFamilia      NombreCategoria   
##  Min.   :     1   Length:200625      Length:200625      Length:200625     
##  1st Qu.: 33964   Class :character   Class :character   Class :character  
##  Median :105993   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :193990                                                           
##  3rd Qu.:383005                                                           
##  Max.   :450040                                                           
##                                                                           
##     Estado              Mts.2      Tipo.ubicación         Giro          
##  Length:200625      Min.   :47.0   Length:200625      Length:200625     
##  Class :character   1st Qu.:53.0   Class :character   Class :character  
##  Mode  :character   Median :60.0   Mode  :character   Mode  :character  
##                     Mean   :56.6                                        
##                     3rd Qu.:60.0                                        
##                     Max.   :62.0                                        
##                                                                         
##  Hora.inicio        Hora.cierre       
##  Length:200625      Length:200625     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
##                                       
## 
# install.packages("dplyr")
library(dplyr)
## 
## 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
#count(bd,vcClaveTienda, sort = TRUE)
#count(bd,DescGiro, sort = TRUE)
#count(bd, Marca, sort = TRUE)
#count(bd, Fabricante, sort = TRUE)
#count(bd, Producto, sort = TRUE)
#count(bd, NombreDepartamento, sort = TRUE)
#count(bd, NombreFamilia, sort = TRUE)
#count(bd, NombreCategoria, sort = TRUE)
#count(bd, Estado, sort = TRUE)
#count(bd, Mts.2, sort = TRUE)
#count(bd, Tipo.ubicación, sort = TRUE)
#count(bd, Giro, sort = TRUE)
#count(bd, Hora.inicio, sort = TRUE)
#count(bd, Hora.cierre, sort = TRUE)

# install.packages("tidyverse")
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.8     ✔ stringr 1.4.1
## ✔ tidyr   1.2.0     ✔ forcats 0.5.2
## ✔ readr   2.1.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
tibble(bd)
## # A tibble: 200,625 × 22
##    vcClaveTienda DescGiro Codig…¹   PLU Fecha Hora  Marca Fabri…² Produ…³ Precio
##    <chr>         <chr>      <dbl> <int> <chr> <chr> <chr> <chr>   <chr>    <dbl>
##  1 MX001         Abarrot… 7.50e12    NA 19/0… 08:1… NUTR… MEXILAC Nutri …   16  
##  2 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… DAN … DANONE… DANUP …   14  
##  3 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… BIMBO GRUPO … Rebana…    5  
##  4 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… PEPSI PEPSI-… Pepsi …    8  
##  5 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… BLAN… FABRIC… Deterg…   19.5
##  6 MX001         Abarrot… 7.50e12    NA 19/0… 08:1… NUTR… MEXILAC Nutri …   16  
##  7 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… DAN … DANONE… DANUP …   14  
##  8 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… BIMBO GRUPO … Rebana…    5  
##  9 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… PEPSI PEPSI-… Pepsi …    8  
## 10 MX001         Abarrot… 7.50e12    NA 19/0… 08:2… BLAN… FABRIC… Deterg…   19.5
## # … with 200,615 more rows, 12 more variables: Ult.Costo <dbl>, Unidades <dbl>,
## #   F.Ticket <int>, NombreDepartamento <chr>, NombreFamilia <chr>,
## #   NombreCategoria <chr>, Estado <chr>, Mts.2 <int>, Tipo.ubicación <chr>,
## #   Giro <chr>, Hora.inicio <chr>, Hora.cierre <chr>, and abbreviated variable
## #   names ¹​Codigo.Barras, ²​Fabricante, ³​Producto
str(bd)
## 'data.frame':    200625 obs. of  22 variables:
##  $ vcClaveTienda     : chr  "MX001" "MX001" "MX001" "MX001" ...
##  $ DescGiro          : chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ Codigo.Barras     : num  7.5e+12 7.5e+12 7.5e+12 7.5e+12 7.5e+12 ...
##  $ PLU               : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fecha             : chr  "19/06/2020" "19/06/2020" "19/06/2020" "19/06/2020" ...
##  $ Hora              : chr  "08:16:21 a. m." "08:23:33 a. m." "08:24:33 a. m." "08:24:33 a. m." ...
##  $ Marca             : chr  "NUTRI LECHE" "DAN UP" "BIMBO" "PEPSI" ...
##  $ Fabricante        : chr  "MEXILAC" "DANONE DE MEXICO" "GRUPO BIMBO" "PEPSI-COLA MEXICANA" ...
##  $ Producto          : chr  "Nutri Leche 1 Litro" "DANUP STRAWBERRY P/BEBER 350GR NAL" "Rebanadas Bimbo 2Pz" "Pepsi N.R. 400Ml" ...
##  $ Precio            : num  16 14 5 8 19.5 16 14 5 8 19.5 ...
##  $ Ult.Costo         : num  12.3 14 5 8 15 ...
##  $ Unidades          : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ F.Ticket          : int  1 2 3 3 4 1 2 3 3 4 ...
##  $ NombreDepartamento: chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ NombreFamilia     : chr  "Lacteos y Refrigerados" "Lacteos y Refrigerados" "Pan y Tortilla" "Bebidas" ...
##  $ NombreCategoria   : chr  "Leche" "Yogurt" "Pan Dulce Empaquetado" "Refrescos Plástico (N.R.)" ...
##  $ Estado            : chr  "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
##  $ Mts.2             : int  60 60 60 60 60 60 60 60 60 60 ...
##  $ Tipo.ubicación    : chr  "Esquina" "Esquina" "Esquina" "Esquina" ...
##  $ Giro              : chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ Hora.inicio       : chr  "08:00" "08:00" "08:00" "08:00" ...
##  $ Hora.cierre       : chr  "22:00" "22:00" "22:00" "22:00" ...
head(bd)
##   vcClaveTienda  DescGiro Codigo.Barras PLU      Fecha           Hora
## 1         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21 a. m.
## 2         MX001 Abarrotes  7.501032e+12  NA 19/06/2020 08:23:33 a. m.
## 3         MX001 Abarrotes  7.501000e+12  NA 19/06/2020 08:24:33 a. m.
## 4         MX001 Abarrotes  7.501031e+12  NA 19/06/2020 08:24:33 a. m.
## 5         MX001 Abarrotes  7.501026e+12  NA 19/06/2020 08:26:28 a. m.
## 6         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21 a. m.
##                        Marca                 Fabricante
## 1                NUTRI LECHE                    MEXILAC
## 2                     DAN UP           DANONE DE MEXICO
## 3                      BIMBO                GRUPO BIMBO
## 4                      PEPSI        PEPSI-COLA MEXICANA
## 5 BLANCA NIEVES (DETERGENTE) FABRICA DE JABON LA CORONA
## 6                NUTRI LECHE                    MEXILAC
##                             Producto Precio Ult.Costo Unidades F.Ticket
## 1                Nutri Leche 1 Litro   16.0     12.31        1        1
## 2 DANUP STRAWBERRY P/BEBER 350GR NAL   14.0     14.00        1        2
## 3                Rebanadas Bimbo 2Pz    5.0      5.00        1        3
## 4                   Pepsi N.R. 400Ml    8.0      8.00        1        3
## 5      Detergente Blanca Nieves 500G   19.5     15.00        1        4
## 6                Nutri Leche 1 Litro   16.0     12.31        1        1
##   NombreDepartamento          NombreFamilia           NombreCategoria
## 1          Abarrotes Lacteos y Refrigerados                     Leche
## 2          Abarrotes Lacteos y Refrigerados                    Yogurt
## 3          Abarrotes         Pan y Tortilla     Pan Dulce Empaquetado
## 4          Abarrotes                Bebidas Refrescos Plástico (N.R.)
## 5          Abarrotes     Limpieza del Hogar                Lavandería
## 6          Abarrotes Lacteos y Refrigerados                     Leche
##       Estado Mts.2 Tipo.ubicación      Giro Hora.inicio Hora.cierre
## 1 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 2 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 3 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 4 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 5 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 6 Nuevo León    60        Esquina Abarrotes       08:00       22:00
head(bd, n=7)
##   vcClaveTienda  DescGiro Codigo.Barras PLU      Fecha           Hora
## 1         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21 a. m.
## 2         MX001 Abarrotes  7.501032e+12  NA 19/06/2020 08:23:33 a. m.
## 3         MX001 Abarrotes  7.501000e+12  NA 19/06/2020 08:24:33 a. m.
## 4         MX001 Abarrotes  7.501031e+12  NA 19/06/2020 08:24:33 a. m.
## 5         MX001 Abarrotes  7.501026e+12  NA 19/06/2020 08:26:28 a. m.
## 6         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21 a. m.
## 7         MX001 Abarrotes  7.501032e+12  NA 19/06/2020 08:23:33 a. m.
##                        Marca                 Fabricante
## 1                NUTRI LECHE                    MEXILAC
## 2                     DAN UP           DANONE DE MEXICO
## 3                      BIMBO                GRUPO BIMBO
## 4                      PEPSI        PEPSI-COLA MEXICANA
## 5 BLANCA NIEVES (DETERGENTE) FABRICA DE JABON LA CORONA
## 6                NUTRI LECHE                    MEXILAC
## 7                     DAN UP           DANONE DE MEXICO
##                             Producto Precio Ult.Costo Unidades F.Ticket
## 1                Nutri Leche 1 Litro   16.0     12.31        1        1
## 2 DANUP STRAWBERRY P/BEBER 350GR NAL   14.0     14.00        1        2
## 3                Rebanadas Bimbo 2Pz    5.0      5.00        1        3
## 4                   Pepsi N.R. 400Ml    8.0      8.00        1        3
## 5      Detergente Blanca Nieves 500G   19.5     15.00        1        4
## 6                Nutri Leche 1 Litro   16.0     12.31        1        1
## 7 DANUP STRAWBERRY P/BEBER 350GR NAL   14.0     14.00        1        2
##   NombreDepartamento          NombreFamilia           NombreCategoria
## 1          Abarrotes Lacteos y Refrigerados                     Leche
## 2          Abarrotes Lacteos y Refrigerados                    Yogurt
## 3          Abarrotes         Pan y Tortilla     Pan Dulce Empaquetado
## 4          Abarrotes                Bebidas Refrescos Plástico (N.R.)
## 5          Abarrotes     Limpieza del Hogar                Lavandería
## 6          Abarrotes Lacteos y Refrigerados                     Leche
## 7          Abarrotes Lacteos y Refrigerados                    Yogurt
##       Estado Mts.2 Tipo.ubicación      Giro Hora.inicio Hora.cierre
## 1 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 2 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 3 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 4 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 5 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 6 Nuevo León    60        Esquina Abarrotes       08:00       22:00
## 7 Nuevo León    60        Esquina Abarrotes       08:00       22:00
tail(bd)
##        vcClaveTienda DescGiro Codigo.Barras PLU      Fecha           Hora
## 200620         MX005 Depósito   7.62221e+12  NA 12/07/2020 01:08:25 a. m.
## 200621         MX005 Depósito   7.62221e+12  NA 23/10/2020 10:17:37 p. m.
## 200622         MX005 Depósito   7.62221e+12  NA 10/10/2020 08:30:20 p. m.
## 200623         MX005 Depósito   7.62221e+12  NA 10/10/2020 10:40:43 p. m.
## 200624         MX005 Depósito   7.62221e+12  NA 27/06/2020 10:30:19 p. m.
## 200625         MX005 Depósito   7.62221e+12  NA 26/06/2020 11:43:34 p. m.
##                    Marca    Fabricante                          Producto Precio
## 200620 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
## 200621 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
## 200622 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
## 200623 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
## 200624 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
## 200625 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G      9
##        Ult.Costo Unidades F.Ticket NombreDepartamento NombreFamilia
## 200620      6.92        1   103100          Abarrotes      Dulcería
## 200621      6.92        1   116598          Abarrotes      Dulcería
## 200622      6.92        1   114886          Abarrotes      Dulcería
## 200623      6.92        1   114955          Abarrotes      Dulcería
## 200624      6.92        1   101121          Abarrotes      Dulcería
## 200625      6.92        1   100879          Abarrotes      Dulcería
##        NombreCategoria       Estado Mts.2 Tipo.ubicación       Giro Hora.inicio
## 200620 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
## 200621 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
## 200622 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
## 200623 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
## 200624 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
## 200625 Gomas de Mazcar Quintana Roo    58        Esquina Mini súper       08:00
##        Hora.cierre
## 200620       21:00
## 200621       21:00
## 200622       21:00
## 200623       21:00
## 200624       21:00
## 200625       21:00
# install.packages("janitor")
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
tabyl(bd, vcClaveTienda, NombreDepartamento)
##  vcClaveTienda Abarrotes Bebes e Infantiles Carnes Farmacia Ferretería Mercería
##          MX001     95415                515      1      147        245       28
##          MX002      6590                 21      0        4         10        0
##          MX003      4026                 15      0        2          8        0
##          MX004     82234                932      0      102        114       16
##          MX005     10014                  0      0        0          0        0
##  Papelería Productos a Eliminar Vinos y Licores
##         35                    3              80
##          0                    0               4
##          0                    0               0
##         32                    5              20
##          7                    0               0

Observaciones

1.Casi ningun registro cuenta con PLU. 2.cambiar formato de fecha. 3.Cambiar formato de hora. 4.Hay precios negativos. 5.Unidades menores a 1.

Técnicas para limpieza de datos:

Técnica 1. Remover valores irrelevantes

 #Eliminar columnas
     bd1 <- bd
     bd1 <- subset(bd1,select = -c (PLU, Codigo.Barras))

  #Eliminar  renglones
     bd2 <- bd1
     bd2 <- bd2[bd2$Precio > 0, ]
     summary (bd1)
##  vcClaveTienda        DescGiro            Fecha               Hora          
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Marca            Fabricante          Producto             Precio       
##  Length:200625      Length:200625      Length:200625      Min.   :-147.00  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.42  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200625     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33964   Class :character  
##  Median : 12.31   Median : 1.000   Median :105993   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193990                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383005                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200625      Length:200625      Length:200625      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
## 
     summary (bd2)
##  vcClaveTienda        DescGiro            Fecha               Hora          
##  Length:200478      Length:200478      Length:200478      Length:200478     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Marca            Fabricante          Producto             Precio       
##  Length:200478      Length:200478      Length:200478      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200478     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33977   Class :character  
##  Median : 12.31   Median : 1.000   Median :106034   Mode  :character  
##  Mean   : 15.31   Mean   : 1.261   Mean   :194096                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383062                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200478      Length:200478      Length:200478      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200478      Length:200478      Length:200478      Length:200478     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
## 
  #Esto no lo usaremos, pondremos precios negativos como absoluto

Técnica 2. Remover los valores duplicados

#¿Cuantos renglones duplicados tenemos?
     bd1[duplicated(bd1),]
##    vcClaveTienda  DescGiro      Fecha           Hora                      Marca
## 6          MX001 Abarrotes 19/06/2020 08:16:21 a. m.                NUTRI LECHE
## 7          MX001 Abarrotes 19/06/2020 08:23:33 a. m.                     DAN UP
## 8          MX001 Abarrotes 19/06/2020 08:24:33 a. m.                      BIMBO
## 9          MX001 Abarrotes 19/06/2020 08:24:33 a. m.                      PEPSI
## 10         MX001 Abarrotes 19/06/2020 08:26:28 a. m. BLANCA NIEVES (DETERGENTE)
##                    Fabricante                           Producto Precio
## 6                     MEXILAC                Nutri Leche 1 Litro   16.0
## 7            DANONE DE MEXICO DANUP STRAWBERRY P/BEBER 350GR NAL   14.0
## 8                 GRUPO BIMBO                Rebanadas Bimbo 2Pz    5.0
## 9         PEPSI-COLA MEXICANA                   Pepsi N.R. 400Ml    8.0
## 10 FABRICA DE JABON LA CORONA      Detergente Blanca Nieves 500G   19.5
##    Ult.Costo Unidades F.Ticket NombreDepartamento          NombreFamilia
## 6      12.31        1        1          Abarrotes Lacteos y Refrigerados
## 7      14.00        1        2          Abarrotes Lacteos y Refrigerados
## 8       5.00        1        3          Abarrotes         Pan y Tortilla
## 9       8.00        1        3          Abarrotes                Bebidas
## 10     15.00        1        4          Abarrotes     Limpieza del Hogar
##              NombreCategoria     Estado Mts.2 Tipo.ubicación      Giro
## 6                      Leche Nuevo León    60        Esquina Abarrotes
## 7                     Yogurt Nuevo León    60        Esquina Abarrotes
## 8      Pan Dulce Empaquetado Nuevo León    60        Esquina Abarrotes
## 9  Refrescos Plástico (N.R.) Nuevo León    60        Esquina Abarrotes
## 10                Lavandería Nuevo León    60        Esquina Abarrotes
##    Hora.inicio Hora.cierre
## 6        08:00       22:00
## 7        08:00       22:00
## 8        08:00       22:00
## 9        08:00       22:00
## 10       08:00       22:00
     sum(duplicated(bd1))
## [1] 5
#Eliminar renglones duplicados
     bd3 <- bd1
     library(dplyr)
     bd3 <- distinct(bd3)

Técnica 3. Errores tipográficos y errores similares

#Precios en absoluto
     bd4 <- bd3
     bd4$Precio <- abs(bd4$Precio)
     summary(bd4)
##  vcClaveTienda        DescGiro            Fecha               Hora          
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Marca            Fabricante          Producto             Precio       
##  Length:200620      Length:200620      Length:200620      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200620     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33967   Class :character  
##  Median : 12.31   Median : 1.000   Median :105996   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193994                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383009                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200620      Length:200620      Length:200620      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
## 
#Cantidades en enteros
     bd5 <- bd4
     bd4$unidades <- ceiling(bd5$Unidades)
     summary(bd5)
##  vcClaveTienda        DescGiro            Fecha               Hora          
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Marca            Fabricante          Producto             Precio       
##  Length:200620      Length:200620      Length:200620      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200620     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33967   Class :character  
##  Median : 12.31   Median : 1.000   Median :105996   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193994                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383009                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200620      Length:200620      Length:200620      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
## 

Técnica 4. Convertir tipos de datos

 #Convertir de caracter a fecha
     bd6 <- bd5
     bd6$Fecha <- as.Date(bd6$Fecha, format = "%d/%m/%Y")
     tibble(bd6)
## # A tibble: 200,620 × 20
##    vcCla…¹ DescG…² Fecha      Hora  Marca Fabri…³ Produ…⁴ Precio Ult.C…⁵ Unida…⁶
##    <chr>   <chr>   <date>     <chr> <chr> <chr>   <chr>    <dbl>   <dbl>   <dbl>
##  1 MX001   Abarro… 2020-06-19 08:1… NUTR… MEXILAC Nutri …   16     12.3        1
##  2 MX001   Abarro… 2020-06-19 08:2… DAN … DANONE… DANUP …   14     14          1
##  3 MX001   Abarro… 2020-06-19 08:2… BIMBO GRUPO … Rebana…    5      5          1
##  4 MX001   Abarro… 2020-06-19 08:2… PEPSI PEPSI-… Pepsi …    8      8          1
##  5 MX001   Abarro… 2020-06-19 08:2… BLAN… FABRIC… Deterg…   19.5   15          1
##  6 MX001   Abarro… 2020-06-19 08:2… FLASH ALEN    Flash …    9.5    7.31       1
##  7 MX001   Abarro… 2020-06-19 08:2… VARI… DANONE… Danone…   11     11          1
##  8 MX001   Abarro… 2020-06-19 08:2… ZOTE  FABRIC… Jabon …    9.5    7.31       1
##  9 MX001   Abarro… 2020-06-19 08:2… ALWA… PROCTE… T Feme…   23.5   18.1        1
## 10 MX001   Abarro… 2020-06-19 03:2… JUMEX JUMEX   Jugo D…   12     12          1
## # … with 200,610 more rows, 10 more variables: F.Ticket <int>,
## #   NombreDepartamento <chr>, NombreFamilia <chr>, NombreCategoria <chr>,
## #   Estado <chr>, Mts.2 <int>, Tipo.ubicación <chr>, Giro <chr>,
## #   Hora.inicio <chr>, Hora.cierre <chr>, and abbreviated variable names
## #   ¹​vcClaveTienda, ²​DescGiro, ³​Fabricante, ⁴​Producto, ⁵​Ult.Costo, ⁶​Unidades
  #Convertir de caracter a entero 
     bd7 <- bd6
     bd7$Hora <- substr(bd7$Hora, start = 1, stop = 2)
     tibble(bd7)
## # A tibble: 200,620 × 20
##    vcCla…¹ DescG…² Fecha      Hora  Marca Fabri…³ Produ…⁴ Precio Ult.C…⁵ Unida…⁶
##    <chr>   <chr>   <date>     <chr> <chr> <chr>   <chr>    <dbl>   <dbl>   <dbl>
##  1 MX001   Abarro… 2020-06-19 08    NUTR… MEXILAC Nutri …   16     12.3        1
##  2 MX001   Abarro… 2020-06-19 08    DAN … DANONE… DANUP …   14     14          1
##  3 MX001   Abarro… 2020-06-19 08    BIMBO GRUPO … Rebana…    5      5          1
##  4 MX001   Abarro… 2020-06-19 08    PEPSI PEPSI-… Pepsi …    8      8          1
##  5 MX001   Abarro… 2020-06-19 08    BLAN… FABRIC… Deterg…   19.5   15          1
##  6 MX001   Abarro… 2020-06-19 08    FLASH ALEN    Flash …    9.5    7.31       1
##  7 MX001   Abarro… 2020-06-19 08    VARI… DANONE… Danone…   11     11          1
##  8 MX001   Abarro… 2020-06-19 08    ZOTE  FABRIC… Jabon …    9.5    7.31       1
##  9 MX001   Abarro… 2020-06-19 08    ALWA… PROCTE… T Feme…   23.5   18.1        1
## 10 MX001   Abarro… 2020-06-19 03    JUMEX JUMEX   Jugo D…   12     12          1
## # … with 200,610 more rows, 10 more variables: F.Ticket <int>,
## #   NombreDepartamento <chr>, NombreFamilia <chr>, NombreCategoria <chr>,
## #   Estado <chr>, Mts.2 <int>, Tipo.ubicación <chr>, Giro <chr>,
## #   Hora.inicio <chr>, Hora.cierre <chr>, and abbreviated variable names
## #   ¹​vcClaveTienda, ²​DescGiro, ³​Fabricante, ⁴​Producto, ⁵​Ult.Costo, ⁶​Unidades
     bd7$Hora <- as.integer(bd7$Hora)
     str(bd7)
## 'data.frame':    200620 obs. of  20 variables:
##  $ vcClaveTienda     : chr  "MX001" "MX001" "MX001" "MX001" ...
##  $ DescGiro          : chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ Fecha             : Date, format: "2020-06-19" "2020-06-19" ...
##  $ Hora              : int  8 8 8 8 8 8 8 8 8 3 ...
##  $ Marca             : chr  "NUTRI LECHE" "DAN UP" "BIMBO" "PEPSI" ...
##  $ Fabricante        : chr  "MEXILAC" "DANONE DE MEXICO" "GRUPO BIMBO" "PEPSI-COLA MEXICANA" ...
##  $ Producto          : chr  "Nutri Leche 1 Litro" "DANUP STRAWBERRY P/BEBER 350GR NAL" "Rebanadas Bimbo 2Pz" "Pepsi N.R. 400Ml" ...
##  $ Precio            : num  16 14 5 8 19.5 9.5 11 9.5 23.5 12 ...
##  $ Ult.Costo         : num  12.3 14 5 8 15 ...
##  $ Unidades          : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ F.Ticket          : int  1 2 3 3 4 4 4 4 4 5 ...
##  $ NombreDepartamento: chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ NombreFamilia     : chr  "Lacteos y Refrigerados" "Lacteos y Refrigerados" "Pan y Tortilla" "Bebidas" ...
##  $ NombreCategoria   : chr  "Leche" "Yogurt" "Pan Dulce Empaquetado" "Refrescos Plástico (N.R.)" ...
##  $ Estado            : chr  "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
##  $ Mts.2             : int  60 60 60 60 60 60 60 60 60 60 ...
##  $ Tipo.ubicación    : chr  "Esquina" "Esquina" "Esquina" "Esquina" ...
##  $ Giro              : chr  "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
##  $ Hora.inicio       : chr  "08:00" "08:00" "08:00" "08:00" ...
##  $ Hora.cierre       : chr  "22:00" "22:00" "22:00" "22:00" ...

Ténica 5. Valores faltantes

 #¿Cuántos NA tengo en la base de datos?
     sum(is.na(bd7))
## [1] 0
     sum(is.na(bd))
## [1] 199188
 #¿Cuantos NA tengo por variable?
     sapply(bd7, function(x) sum(is.na(x)))
##      vcClaveTienda           DescGiro              Fecha               Hora 
##                  0                  0                  0                  0 
##              Marca         Fabricante           Producto             Precio 
##                  0                  0                  0                  0 
##          Ult.Costo           Unidades           F.Ticket NombreDepartamento 
##                  0                  0                  0                  0 
##      NombreFamilia    NombreCategoria             Estado              Mts.2 
##                  0                  0                  0                  0 
##     Tipo.ubicación               Giro        Hora.inicio        Hora.cierre 
##                  0                  0                  0                  0
     sapply(bd, function(x) sum(is.na(x)))
##      vcClaveTienda           DescGiro      Codigo.Barras                PLU 
##                  0                  0                  0             199188 
##              Fecha               Hora              Marca         Fabricante 
##                  0                  0                  0                  0 
##           Producto             Precio          Ult.Costo           Unidades 
##                  0                  0                  0                  0 
##           F.Ticket NombreDepartamento      NombreFamilia    NombreCategoria 
##                  0                  0                  0                  0 
##             Estado              Mts.2     Tipo.ubicación               Giro 
##                  0                  0                  0                  0 
##        Hora.inicio        Hora.cierre 
##                  0                  0
 #Borrar todos los registris NA de una tabla
     bd8 <- bd
     bd8 <- na.omit(bd8)
     summary(bd8)
##  vcClaveTienda        DescGiro         Codigo.Barras            PLU        
##  Length:1437        Length:1437        Min.   :6.750e+08   Min.   : 1.000  
##  Class :character   Class :character   1st Qu.:6.750e+08   1st Qu.: 1.000  
##  Mode  :character   Mode  :character   Median :6.750e+08   Median : 1.000  
##                                        Mean   :2.616e+11   Mean   : 2.112  
##                                        3rd Qu.:6.750e+08   3rd Qu.: 1.000  
##                                        Max.   :7.501e+12   Max.   :30.000  
##     Fecha               Hora              Marca            Fabricante       
##  Length:1437        Length:1437        Length:1437        Length:1437       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    Producto             Precio        Ult.Costo        Unidades    
##  Length:1437        Min.   :30.00   Min.   : 1.00   Min.   :1.000  
##  Class :character   1st Qu.:90.00   1st Qu.:64.62   1st Qu.:1.000  
##  Mode  :character   Median :90.00   Median :64.62   Median :1.000  
##                     Mean   :87.94   Mean   :56.65   Mean   :1.124  
##                     3rd Qu.:90.00   3rd Qu.:64.62   3rd Qu.:1.000  
##                     Max.   :90.00   Max.   :64.62   Max.   :7.000  
##     F.Ticket      NombreDepartamento NombreFamilia      NombreCategoria   
##  Min.   :   772   Length:1437        Length:1437        Length:1437       
##  1st Qu.: 99955   Class :character   Class :character   Class :character  
##  Median :102493   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :100595                                                           
##  3rd Qu.:106546                                                           
##  Max.   :118356                                                           
##     Estado              Mts.2       Tipo.ubicación         Giro          
##  Length:1437        Min.   :58.00   Length:1437        Length:1437       
##  Class :character   1st Qu.:58.00   Class :character   Class :character  
##  Mode  :character   Median :58.00   Mode  :character   Mode  :character  
##                     Mean   :58.07                                        
##                     3rd Qu.:58.00                                        
##                     Max.   :60.00                                        
##  Hora.inicio        Hora.cierre       
##  Length:1437        Length:1437       
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
 #Reemplazar NA con CEROS
     bd9 <- bd
     bd9[is.na(bd9)]<-0
     summary(bd9)
##  vcClaveTienda        DescGiro         Codigo.Barras            PLU          
##  Length:200625      Length:200625      Min.   :8.347e+05   Min.   : 0.00000  
##  Class :character   Class :character   1st Qu.:7.501e+12   1st Qu.: 0.00000  
##  Mode  :character   Mode  :character   Median :7.501e+12   Median : 0.00000  
##                                        Mean   :5.950e+12   Mean   : 0.01513  
##                                        3rd Qu.:7.501e+12   3rd Qu.: 0.00000  
##                                        Max.   :1.750e+13   Max.   :30.00000  
##     Fecha               Hora              Marca            Fabricante       
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    Producto             Precio          Ult.Costo         Unidades     
##  Length:200625      Min.   :-147.00   Min.   :  0.38   Min.   : 0.200  
##  Class :character   1st Qu.:  11.00   1st Qu.:  8.46   1st Qu.: 1.000  
##  Mode  :character   Median :  16.00   Median : 12.31   Median : 1.000  
##                     Mean   :  19.42   Mean   : 15.31   Mean   : 1.262  
##                     3rd Qu.:  25.00   3rd Qu.: 19.23   3rd Qu.: 1.000  
##                     Max.   :1000.00   Max.   :769.23   Max.   :96.000  
##     F.Ticket      NombreDepartamento NombreFamilia      NombreCategoria   
##  Min.   :     1   Length:200625      Length:200625      Length:200625     
##  1st Qu.: 33964   Class :character   Class :character   Class :character  
##  Median :105993   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :193990                                                           
##  3rd Qu.:383005                                                           
##  Max.   :450040                                                           
##     Estado              Mts.2      Tipo.ubicación         Giro          
##  Length:200625      Min.   :47.0   Length:200625      Length:200625     
##  Class :character   1st Qu.:53.0   Class :character   Class :character  
##  Mode  :character   Median :60.0   Mode  :character   Mode  :character  
##                     Mean   :56.6                                        
##                     3rd Qu.:60.0                                        
##                     Max.   :62.0                                        
##  Hora.inicio        Hora.cierre       
##  Length:200625      Length:200625     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
 #Reemplezar NA con el promedio
     bd10 <-bd
     bd10$PLU[is.na(bd10$PLU)]<-mean(bd10$PLU, na.rm = TRUE)
     summary (bd10)
##  vcClaveTienda        DescGiro         Codigo.Barras            PLU        
##  Length:200625      Length:200625      Min.   :8.347e+05   Min.   : 1.000  
##  Class :character   Class :character   1st Qu.:7.501e+12   1st Qu.: 2.112  
##  Mode  :character   Mode  :character   Median :7.501e+12   Median : 2.112  
##                                        Mean   :5.950e+12   Mean   : 2.112  
##                                        3rd Qu.:7.501e+12   3rd Qu.: 2.112  
##                                        Max.   :1.750e+13   Max.   :30.000  
##     Fecha               Hora              Marca            Fabricante       
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    Producto             Precio          Ult.Costo         Unidades     
##  Length:200625      Min.   :-147.00   Min.   :  0.38   Min.   : 0.200  
##  Class :character   1st Qu.:  11.00   1st Qu.:  8.46   1st Qu.: 1.000  
##  Mode  :character   Median :  16.00   Median : 12.31   Median : 1.000  
##                     Mean   :  19.42   Mean   : 15.31   Mean   : 1.262  
##                     3rd Qu.:  25.00   3rd Qu.: 19.23   3rd Qu.: 1.000  
##                     Max.   :1000.00   Max.   :769.23   Max.   :96.000  
##     F.Ticket      NombreDepartamento NombreFamilia      NombreCategoria   
##  Min.   :     1   Length:200625      Length:200625      Length:200625     
##  1st Qu.: 33964   Class :character   Class :character   Class :character  
##  Median :105993   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :193990                                                           
##  3rd Qu.:383005                                                           
##  Max.   :450040                                                           
##     Estado              Mts.2      Tipo.ubicación         Giro          
##  Length:200625      Min.   :47.0   Length:200625      Length:200625     
##  Class :character   1st Qu.:53.0   Class :character   Class :character  
##  Mode  :character   Median :60.0   Mode  :character   Mode  :character  
##                     Mean   :56.6                                        
##                     3rd Qu.:60.0                                        
##                     Max.   :62.0                                        
##  Hora.inicio        Hora.cierre       
##  Length:200625      Length:200625     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
  #Reemplazar negativos con cero
     bd11 <- bd
     bd11[bd11 <0] <-0
     summary(bd11)
##  vcClaveTienda        DescGiro         Codigo.Barras            PLU        
##  Length:200625      Length:200625      Min.   :8.347e+05   Min.   : 1.00   
##  Class :character   Class :character   1st Qu.:7.501e+12   1st Qu.: 1.00   
##  Mode  :character   Mode  :character   Median :7.501e+12   Median : 1.00   
##                                        Mean   :5.950e+12   Mean   : 2.11   
##                                        3rd Qu.:7.501e+12   3rd Qu.: 1.00   
##                                        Max.   :1.750e+13   Max.   :30.00   
##                                                            NA's   :199188  
##     Fecha               Hora              Marca            Fabricante       
##  Length:200625      Length:200625      Length:200625      Length:200625     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##    Producto             Precio          Ult.Costo         Unidades     
##  Length:200625      Min.   :   0.00   Min.   :  0.38   Min.   : 0.200  
##  Class :character   1st Qu.:  11.00   1st Qu.:  8.46   1st Qu.: 1.000  
##  Mode  :character   Median :  16.00   Median : 12.31   Median : 1.000  
##                     Mean   :  19.44   Mean   : 15.31   Mean   : 1.262  
##                     3rd Qu.:  25.00   3rd Qu.: 19.23   3rd Qu.: 1.000  
##                     Max.   :1000.00   Max.   :769.23   Max.   :96.000  
##                                                                        
##     F.Ticket      NombreDepartamento NombreFamilia      NombreCategoria   
##  Min.   :     1   Length:200625      Length:200625      Length:200625     
##  1st Qu.: 33964   Class :character   Class :character   Class :character  
##  Median :105993   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :193990                                                           
##  3rd Qu.:383005                                                           
##  Max.   :450040                                                           
##                                                                           
##     Estado              Mts.2      Tipo.ubicación         Giro          
##  Length:200625      Min.   :47.0   Length:200625      Length:200625     
##  Class :character   1st Qu.:53.0   Class :character   Class :character  
##  Mode  :character   Median :60.0   Mode  :character   Mode  :character  
##                     Mean   :56.6                                        
##                     3rd Qu.:60.0                                        
##                     Max.   :62.0                                        
##                                                                         
##  Hora.inicio        Hora.cierre       
##  Length:200625      Length:200625     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
##                                       
## 

Técnica 6. Método estadístico

     bd12 <- bd7
     boxplot(bd12$Precio, horizontal = TRUE)

     boxplot(bd12$Unidades, horizontal = TRUE)

  #Agregar columnas
    # install.packages("lubridate")
     library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
     bd12$Dia_de_la_Semana <- wday(bd12$Fecha)
     summary(bd12)
##  vcClaveTienda        DescGiro             Fecha                 Hora       
##  Length:200620      Length:200620      Min.   :2020-05-01   Min.   : 1.000  
##  Class :character   Class :character   1st Qu.:2020-06-06   1st Qu.: 5.000  
##  Mode  :character   Mode  :character   Median :2020-07-11   Median : 8.000  
##                                        Mean   :2020-07-18   Mean   : 7.299  
##                                        3rd Qu.:2020-08-29   3rd Qu.:10.000  
##                                        Max.   :2020-11-11   Max.   :12.000  
##     Marca            Fabricante          Producto             Precio       
##  Length:200620      Length:200620      Length:200620      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200620     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33967   Class :character  
##  Median : 12.31   Median : 1.000   Median :105996   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193994                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383009                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200620      Length:200620      Length:200620      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Dia_de_la_Semana
##  Min.   :1.000   
##  1st Qu.:2.000   
##  Median :4.000   
##  Mean   :3.912   
##  3rd Qu.:6.000   
##  Max.   :7.000
     bd12$Subtotal <- bd12$Precio * bd12$Unidades
     summary(bd12)
##  vcClaveTienda        DescGiro             Fecha                 Hora       
##  Length:200620      Length:200620      Min.   :2020-05-01   Min.   : 1.000  
##  Class :character   Class :character   1st Qu.:2020-06-06   1st Qu.: 5.000  
##  Mode  :character   Mode  :character   Median :2020-07-11   Median : 8.000  
##                                        Mean   :2020-07-18   Mean   : 7.299  
##                                        3rd Qu.:2020-08-29   3rd Qu.:10.000  
##                                        Max.   :2020-11-11   Max.   :12.000  
##     Marca            Fabricante          Producto             Precio       
##  Length:200620      Length:200620      Length:200620      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200620     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33967   Class :character  
##  Median : 12.31   Median : 1.000   Median :105996   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193994                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383009                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200620      Length:200620      Length:200620      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Dia_de_la_Semana    Subtotal      
##  Min.   :1.000    Min.   :   1.00  
##  1st Qu.:2.000    1st Qu.:  12.00  
##  Median :4.000    Median :  18.00  
##  Mean   :3.912    Mean   :  24.33  
##  3rd Qu.:6.000    3rd Qu.:  27.00  
##  Max.   :7.000    Max.   :2496.00
     bd12$Utilidad <- bd12$Precio - bd12$Ult.Costo
     summary(bd12)
##  vcClaveTienda        DescGiro             Fecha                 Hora       
##  Length:200620      Length:200620      Min.   :2020-05-01   Min.   : 1.000  
##  Class :character   Class :character   1st Qu.:2020-06-06   1st Qu.: 5.000  
##  Mode  :character   Mode  :character   Median :2020-07-11   Median : 8.000  
##                                        Mean   :2020-07-18   Mean   : 7.299  
##                                        3rd Qu.:2020-08-29   3rd Qu.:10.000  
##                                        Max.   :2020-11-11   Max.   :12.000  
##     Marca            Fabricante          Producto             Precio       
##  Length:200620      Length:200620      Length:200620      Min.   :   0.50  
##  Class :character   Class :character   Class :character   1st Qu.:  11.00  
##  Mode  :character   Mode  :character   Mode  :character   Median :  16.00  
##                                                           Mean   :  19.45  
##                                                           3rd Qu.:  25.00  
##                                                           Max.   :1000.00  
##    Ult.Costo         Unidades         F.Ticket      NombreDepartamento
##  Min.   :  0.38   Min.   : 0.200   Min.   :     1   Length:200620     
##  1st Qu.:  8.46   1st Qu.: 1.000   1st Qu.: 33967   Class :character  
##  Median : 12.31   Median : 1.000   Median :105996   Mode  :character  
##  Mean   : 15.31   Mean   : 1.262   Mean   :193994                     
##  3rd Qu.: 19.23   3rd Qu.: 1.000   3rd Qu.:383009                     
##  Max.   :769.23   Max.   :96.000   Max.   :450040                     
##  NombreFamilia      NombreCategoria       Estado              Mts.2     
##  Length:200620      Length:200620      Length:200620      Min.   :47.0  
##  Class :character   Class :character   Class :character   1st Qu.:53.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :60.0  
##                                                           Mean   :56.6  
##                                                           3rd Qu.:60.0  
##                                                           Max.   :62.0  
##  Tipo.ubicación         Giro           Hora.inicio        Hora.cierre       
##  Length:200620      Length:200620      Length:200620      Length:200620     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Dia_de_la_Semana    Subtotal          Utilidad      
##  Min.   :1.000    Min.   :   1.00   Min.   :  0.000  
##  1st Qu.:2.000    1st Qu.:  12.00   1st Qu.:  2.310  
##  Median :4.000    Median :  18.00   Median :  3.230  
##  Mean   :3.912    Mean   :  24.33   Mean   :  4.142  
##  3rd Qu.:6.000    3rd Qu.:  27.00   3rd Qu.:  5.420  
##  Max.   :7.000    Max.   :2496.00   Max.   :230.770

Exportar base de datos limpia

 bd_limpia <- bd12
     write.csv(bd_limpia, file="abarrotes_bd_limpia.csv", row.names = FALSE)

Conclusiones

Las distintas técnicas de limpieza de bases de datos aprendidas anteriormente son sumamente importantes para lograr un análisis acertivo y más apegado a lo que queremos descifrar. El primer paso para todo análisis o generación de estrategias o nuevos métodos es la limpieza de las bases de datos para facilitar la generación de los mismos y descartar datos que no nos sirven.

R es una herramienta sumamente útil para esto ya que cuenta con diversas funciones estadísticas y analíticas para reemplazar datos, eliminarlos o bien analizar qué datos importan más y así entender nuestra base de datos y exportarla limpia para su utilización.

En este caso, utilizamos la base de datos “abarrotes”, la cual contaba con distintos productos, sus precios y otras variables con el objetivo de realizar análisis que nos permitiéran realizar estrategias para incrementar sus ventas; por lo que primeramente se limpió la base al remover valores irrelevantes como la columna de “PLU” y “Código de Barras”, asimismo se eliminaron los valores duplicados, se reemplazaron las celdas vacías con 0, entre otras cosas para después hacer un análisis de Market Basket.

LS0tDQp0aXRsZTogPHNwYW4gc3R5bGU9IkNvbG9yOkdyZWVuIiA+IEFiYXJyb3RlcyAtIExpbXBpZXphIGRlIGRhdG9zDQphdXRob3I6ICJNYXJpYW5hIFVsbG9hIC0gQTAxMjUzMDc2Ig0KZGF0ZTogIjIwMjItMDktMDYiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQo8aW1nIHNyYz0gIkM6XFxVc2Vyc1xcbWFyaWFcXERvY3VtZW50c1xcSVRFU00gTEFFVFxcU2VtZXN0cmUgN1xcTTNcXGltYWdlbmVzXFxhYmFycm90ZXMtZW4tZ2VuZXJhbC1wbmcucG5nIj4NCg0KIyMjIEltcG9ydGFyIGxhIGJhc2UgZGUgZGF0b3MNCmBgYHtyfQ0KI2ZpbGUuY2hvb3NlKCkNCmJkIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXG1hcmlhXFxEb2N1bWVudHNcXElURVNNIExBRVRcXFNlbWVzdHJlIDdcXE0zXFxBYmFycm90ZXNfVmVudGFzLmNzdiIpDQpgYGANCg0KIyMjIEVudGVuZGVyIGxhIGJhc2UgZGUgZGF0b3MNCmBgYHtyfQ0Kc3VtbWFyeShiZCkNCiMgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQ0KbGlicmFyeShkcGx5cikNCiNjb3VudChiZCx2Y0NsYXZlVGllbmRhLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCxEZXNjR2lybywgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIE1hcmNhLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgRmFicmljYW50ZSwgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIFByb2R1Y3RvLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgTm9tYnJlRGVwYXJ0YW1lbnRvLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgTm9tYnJlRmFtaWxpYSwgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIE5vbWJyZUNhdGVnb3JpYSwgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIEVzdGFkbywgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIE10cy4yLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgVGlwby51YmljYWNpw7NuLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgR2lybywgc29ydCA9IFRSVUUpDQojY291bnQoYmQsIEhvcmEuaW5pY2lvLCBzb3J0ID0gVFJVRSkNCiNjb3VudChiZCwgSG9yYS5jaWVycmUsIHNvcnQgPSBUUlVFKQ0KDQojIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KdGliYmxlKGJkKQ0KDQpzdHIoYmQpDQoNCmhlYWQoYmQpDQpoZWFkKGJkLCBuPTcpDQoNCnRhaWwoYmQpDQoNCiMgaW5zdGFsbC5wYWNrYWdlcygiamFuaXRvciIpDQpsaWJyYXJ5KGphbml0b3IpDQoNCnRhYnlsKGJkLCB2Y0NsYXZlVGllbmRhLCBOb21icmVEZXBhcnRhbWVudG8pDQoNCmBgYA0KDQojIyMjIE9ic2VydmFjaW9uZXMNCiAxLkNhc2kgbmluZ3VuIHJlZ2lzdHJvIGN1ZW50YSBjb24gUExVLg0KIDIuY2FtYmlhciBmb3JtYXRvIGRlIGZlY2hhLg0KIDMuQ2FtYmlhciBmb3JtYXRvIGRlIGhvcmEuDQogNC5IYXkgcHJlY2lvcyBuZWdhdGl2b3MuDQogNS5VbmlkYWRlcyBtZW5vcmVzIGEgMS4NCg0KIyMjIFTDqWNuaWNhcyBwYXJhIGxpbXBpZXphIGRlIGRhdG9zOg0KDQojIyMgVMOpY25pY2EgMS4gUmVtb3ZlciB2YWxvcmVzIGlycmVsZXZhbnRlcw0KYGBge3J9DQogI0VsaW1pbmFyIGNvbHVtbmFzDQogICAgIGJkMSA8LSBiZA0KICAgICBiZDEgPC0gc3Vic2V0KGJkMSxzZWxlY3QgPSAtYyAoUExVLCBDb2RpZ28uQmFycmFzKSkNCg0KICAjRWxpbWluYXIgIHJlbmdsb25lcw0KICAgICBiZDIgPC0gYmQxDQogICAgIGJkMiA8LSBiZDJbYmQyJFByZWNpbyA+IDAsIF0NCiAgICAgc3VtbWFyeSAoYmQxKQ0KICAgICBzdW1tYXJ5IChiZDIpDQogICNFc3RvIG5vIGxvIHVzYXJlbW9zLCBwb25kcmVtb3MgcHJlY2lvcyBuZWdhdGl2b3MgY29tbyBhYnNvbHV0bw0KYGBgDQoNCiAgIA0KIyMjIFTDqWNuaWNhIDIuIFJlbW92ZXIgbG9zIHZhbG9yZXMgZHVwbGljYWRvcw0KYGBge3J9DQojwr9DdWFudG9zIHJlbmdsb25lcyBkdXBsaWNhZG9zIHRlbmVtb3M/DQogICAgIGJkMVtkdXBsaWNhdGVkKGJkMSksXQ0KICAgICBzdW0oZHVwbGljYXRlZChiZDEpKQ0KDQojRWxpbWluYXIgcmVuZ2xvbmVzIGR1cGxpY2Fkb3MNCiAgICAgYmQzIDwtIGJkMQ0KICAgICBsaWJyYXJ5KGRwbHlyKQ0KICAgICBiZDMgPC0gZGlzdGluY3QoYmQzKQ0KICAgICANCmBgYA0KICAgICANCiMjIyBUw6ljbmljYSAzLiBFcnJvcmVzIHRpcG9ncsOhZmljb3MgeSBlcnJvcmVzIHNpbWlsYXJlcw0KYGBge3J9DQojUHJlY2lvcyBlbiBhYnNvbHV0bw0KICAgICBiZDQgPC0gYmQzDQogICAgIGJkNCRQcmVjaW8gPC0gYWJzKGJkNCRQcmVjaW8pDQogICAgIHN1bW1hcnkoYmQ0KQ0KDQojQ2FudGlkYWRlcyBlbiBlbnRlcm9zDQogICAgIGJkNSA8LSBiZDQNCiAgICAgYmQ0JHVuaWRhZGVzIDwtIGNlaWxpbmcoYmQ1JFVuaWRhZGVzKQ0KICAgICBzdW1tYXJ5KGJkNSkNCmBgYA0KDQojIyMgVMOpY25pY2EgNC4gQ29udmVydGlyIHRpcG9zIGRlIGRhdG9zDQpgYGB7cn0NCiAjQ29udmVydGlyIGRlIGNhcmFjdGVyIGEgZmVjaGENCiAgICAgYmQ2IDwtIGJkNQ0KICAgICBiZDYkRmVjaGEgPC0gYXMuRGF0ZShiZDYkRmVjaGEsIGZvcm1hdCA9ICIlZC8lbS8lWSIpDQogICAgIHRpYmJsZShiZDYpDQogICAgIA0KICAjQ29udmVydGlyIGRlIGNhcmFjdGVyIGEgZW50ZXJvIA0KICAgICBiZDcgPC0gYmQ2DQogICAgIGJkNyRIb3JhIDwtIHN1YnN0cihiZDckSG9yYSwgc3RhcnQgPSAxLCBzdG9wID0gMikNCiAgICAgdGliYmxlKGJkNykNCiAgICAgYmQ3JEhvcmEgPC0gYXMuaW50ZWdlcihiZDckSG9yYSkNCiAgICAgc3RyKGJkNykNCmBgYA0KICAgICANCiMjIyBUw6luaWNhIDUuIFZhbG9yZXMgZmFsdGFudGVzDQpgYGB7cn0NCiAjwr9DdcOhbnRvcyBOQSB0ZW5nbyBlbiBsYSBiYXNlIGRlIGRhdG9zPw0KICAgICBzdW0oaXMubmEoYmQ3KSkNCiAgICAgc3VtKGlzLm5hKGJkKSkNCiAgICAgDQogI8K/Q3VhbnRvcyBOQSB0ZW5nbyBwb3IgdmFyaWFibGU/DQogICAgIHNhcHBseShiZDcsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpDQogICAgIHNhcHBseShiZCwgZnVuY3Rpb24oeCkgc3VtKGlzLm5hKHgpKSkNCiAgICAgDQogI0JvcnJhciB0b2RvcyBsb3MgcmVnaXN0cmlzIE5BIGRlIHVuYSB0YWJsYQ0KICAgICBiZDggPC0gYmQNCiAgICAgYmQ4IDwtIG5hLm9taXQoYmQ4KQ0KICAgICBzdW1tYXJ5KGJkOCkNCiAgICAgDQogI1JlZW1wbGF6YXIgTkEgY29uIENFUk9TDQogICAgIGJkOSA8LSBiZA0KICAgICBiZDlbaXMubmEoYmQ5KV08LTANCiAgICAgc3VtbWFyeShiZDkpDQogICAgIA0KICAgICANCiAjUmVlbXBsZXphciBOQSBjb24gZWwgcHJvbWVkaW8NCiAgICAgYmQxMCA8LWJkDQogICAgIGJkMTAkUExVW2lzLm5hKGJkMTAkUExVKV08LW1lYW4oYmQxMCRQTFUsIG5hLnJtID0gVFJVRSkNCiAgICAgc3VtbWFyeSAoYmQxMCkNCg0KICAgICANCiAgI1JlZW1wbGF6YXIgbmVnYXRpdm9zIGNvbiBjZXJvDQogICAgIGJkMTEgPC0gYmQNCiAgICAgYmQxMVtiZDExIDwwXSA8LTANCiAgICAgc3VtbWFyeShiZDExKQ0KYGBgDQogICAgIA0KIyMjIFTDqWNuaWNhIDYuIE3DqXRvZG8gZXN0YWTDrXN0aWNvDQpgYGB7cn0NCiAgICAgYmQxMiA8LSBiZDcNCiAgICAgYm94cGxvdChiZDEyJFByZWNpbywgaG9yaXpvbnRhbCA9IFRSVUUpDQogICAgIGJveHBsb3QoYmQxMiRVbmlkYWRlcywgaG9yaXpvbnRhbCA9IFRSVUUpDQogICAgIA0KICAjQWdyZWdhciBjb2x1bW5hcw0KICAgICMgaW5zdGFsbC5wYWNrYWdlcygibHVicmlkYXRlIikNCiAgICAgbGlicmFyeShsdWJyaWRhdGUpDQogICAgIGJkMTIkRGlhX2RlX2xhX1NlbWFuYSA8LSB3ZGF5KGJkMTIkRmVjaGEpDQogICAgIHN1bW1hcnkoYmQxMikNCiAgICAgDQogICAgIGJkMTIkU3VidG90YWwgPC0gYmQxMiRQcmVjaW8gKiBiZDEyJFVuaWRhZGVzDQogICAgIHN1bW1hcnkoYmQxMikNCiAgICAgDQogICAgIGJkMTIkVXRpbGlkYWQgPC0gYmQxMiRQcmVjaW8gLSBiZDEyJFVsdC5Db3N0bw0KICAgICBzdW1tYXJ5KGJkMTIpDQpgYGANCiAgICAgDQojIyMgRXhwb3J0YXIgYmFzZSBkZSBkYXRvcyBsaW1waWENCmBgYHtyfQ0KIGJkX2xpbXBpYSA8LSBiZDEyDQogICAgIHdyaXRlLmNzdihiZF9saW1waWEsIGZpbGU9ImFiYXJyb3Rlc19iZF9saW1waWEuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQpgYGANCg0KIyMjICoqQ29uY2x1c2lvbmVzKioNCiAgICAgDQpMYXMgZGlzdGludGFzIHTDqWNuaWNhcyBkZSBsaW1waWV6YSBkZSBiYXNlcyBkZSBkYXRvcyBhcHJlbmRpZGFzIGFudGVyaW9ybWVudGUgc29uIHN1bWFtZW50ZSBpbXBvcnRhbnRlcyBwYXJhICpsb2dyYXIgdW4gYW7DoWxpc2lzIGFjZXJ0aXZvIHkgbcOhcyBhcGVnYWRvIGEgbG8gcXVlIHF1ZXJlbW9zIGRlc2NpZnJhci4qIEVsIHByaW1lciBwYXNvIHBhcmEgdG9kbyBhbsOhbGlzaXMgbyBnZW5lcmFjacOzbiBkZSBlc3RyYXRlZ2lhcyBvIG51ZXZvcyBtw6l0b2RvcyBlcyBsYSBsaW1waWV6YSBkZSBsYXMgYmFzZXMgZGUgZGF0b3MgcGFyYSBmYWNpbGl0YXIgbGEgZ2VuZXJhY2nDs24gZGUgbG9zIG1pc21vcyB5IGRlc2NhcnRhciBkYXRvcyBxdWUgbm8gbm9zIHNpcnZlbi4NCg0KUiBlcyB1bmEgaGVycmFtaWVudGEgc3VtYW1lbnRlIMO6dGlsIHBhcmEgZXN0byB5YSBxdWUgY3VlbnRhIGNvbiBkaXZlcnNhcyBmdW5jaW9uZXMgZXN0YWTDrXN0aWNhcyB5IGFuYWzDrXRpY2FzIHBhcmEgcmVlbXBsYXphciBkYXRvcywgZWxpbWluYXJsb3MgbyBiaWVuIGFuYWxpemFyIHF1w6kgZGF0b3MgaW1wb3J0YW4gbcOhcyB5IGFzw60gZW50ZW5kZXIgbnVlc3RyYSBiYXNlIGRlIGRhdG9zIHkgZXhwb3J0YXJsYSBsaW1waWEgcGFyYSBzdSB1dGlsaXphY2nDs24uDQoNCkVuIGVzdGUgY2FzbywgdXRpbGl6YW1vcyBsYSBiYXNlIGRlIGRhdG9zICJhYmFycm90ZXMiLCBsYSBjdWFsIGNvbnRhYmEgY29uIGRpc3RpbnRvcyBwcm9kdWN0b3MsIHN1cyBwcmVjaW9zIHkgb3RyYXMgdmFyaWFibGVzIGNvbiBlbCBvYmpldGl2byBkZSByZWFsaXphciBhbsOhbGlzaXMgcXVlIG5vcyBwZXJtaXRpw6lyYW4gcmVhbGl6YXIgZXN0cmF0ZWdpYXMgcGFyYSBpbmNyZW1lbnRhciBzdXMgdmVudGFzOyBwb3IgbG8gcXVlIHByaW1lcmFtZW50ZSBzZSBsaW1wacOzIGxhIGJhc2UgYWwgcmVtb3ZlciB2YWxvcmVzIGlycmVsZXZhbnRlcyBjb21vIGxhIGNvbHVtbmEgZGUgIlBMVSIgeSAiQ8OzZGlnbyBkZSBCYXJyYXMiLCBhc2ltaXNtbyBzZSBlbGltaW5hcm9uIGxvcyB2YWxvcmVzIGR1cGxpY2Fkb3MsIHNlIHJlZW1wbGF6YXJvbiBsYXMgY2VsZGFzIHZhY8OtYXMgY29uIDAsIGVudHJlIG90cmFzIGNvc2FzIHBhcmEgZGVzcHXDqXMgaGFjZXIgdW4gYW7DoWxpc2lzIGRlIE1hcmtldCBCYXNrZXQuDQoNCg==