Instalar paquetes

# install.packages("tidyverse")
# install.packages("dplyr")
# install.packages("lubridate")
# install.packages("Matrix")
# install.packages("arules")
# install.packages("arulesViz")
# install.packages(datasets)
# install.packages(plyr)

library(tidyverse)
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## 
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## 
## The following object is masked from 'package:purrr':
## 
##     compact
library(arules)
## Warning: package 'arules' was built under R version 4.3.3
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## 
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
## 
## 
## Attaching package: 'arules'
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
# library(lubridate)
# library(Matrix)
# library(arules)
# library(arulesViz)
# library(datasets)
# library(plyr)

Importar base de datos

df <- read.csv("abarrotes.csv")
head(df)
##   vcClaveTienda  DescGiro Codigo.Barras PLU      Fecha     Hora
## 1         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21
## 2         MX001 Abarrotes  7.501032e+12  NA 19/06/2020 08:23:33
## 3         MX001 Abarrotes  7.501000e+12  NA 19/06/2020 08:24:33
## 4         MX001 Abarrotes  7.501031e+12  NA 19/06/2020 08:24:33
## 5         MX001 Abarrotes  7.501026e+12  NA 19/06/2020 08:26:28
## 6         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21
##                        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
summary(df)
##  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  
##                                       
##                                       
##                                       
## 
str(df)
## '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" "08:23:33" "08:24:33" "08:24:33" ...
##  $ 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(df)
##   vcClaveTienda  DescGiro Codigo.Barras PLU      Fecha     Hora
## 1         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21
## 2         MX001 Abarrotes  7.501032e+12  NA 19/06/2020 08:23:33
## 3         MX001 Abarrotes  7.501000e+12  NA 19/06/2020 08:24:33
## 4         MX001 Abarrotes  7.501031e+12  NA 19/06/2020 08:24:33
## 5         MX001 Abarrotes  7.501026e+12  NA 19/06/2020 08:26:28
## 6         MX001 Abarrotes  7.501021e+12  NA 19/06/2020 08:16:21
##                        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
tail(df)
##        vcClaveTienda DescGiro Codigo.Barras PLU      Fecha     Hora
## 200620         MX005 Depósito   7.62221e+12  NA 12/07/2020 01:08:25
## 200621         MX005 Depósito   7.62221e+12  NA 23/10/2020 22:17:37
## 200622         MX005 Depósito   7.62221e+12  NA 10/10/2020 20:30:20
## 200623         MX005 Depósito   7.62221e+12  NA 10/10/2020 22:40:43
## 200624         MX005 Depósito   7.62221e+12  NA 27/06/2020 22:30:19
## 200625         MX005 Depósito   7.62221e+12  NA 26/06/2020 23:43:34
##                    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

Técnicas de Limpieza de Base de Datos

1. Remover valores irrelevantes

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

# Eliminar renglones
df2 <- df1
df2 <- df2[df2$Precio > 0, ]
summary(df1)
##  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(df2)
##  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  
##                                                                             
##                                                                             
## 

2. Eliminar valores duplicados

# Cuantos duplicados hay?
sum(duplicated(df2))
## [1] 5
# Cuales son?
df2[duplicated(df2), ]
##    vcClaveTienda  DescGiro      Fecha     Hora                      Marca
## 6          MX001 Abarrotes 19/06/2020 08:16:21                NUTRI LECHE
## 7          MX001 Abarrotes 19/06/2020 08:23:33                     DAN UP
## 8          MX001 Abarrotes 19/06/2020 08:24:33                      BIMBO
## 9          MX001 Abarrotes 19/06/2020 08:24:33                      PEPSI
## 10         MX001 Abarrotes 19/06/2020 08:26:28 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
# Eliminar duplicados
df3 <- df2
df3 <- distinct(df3)

3. Eliminar errores tipográficos

4. Convertir tipos de datos

df4 <- df3
df4$Fecha <- as.Date(df4$Fecha, format="%d/%m/%Y")

df5 <- df4
df5$Hora <- substr(df5$Hora, start=1, stop=2)
df5$Hora <- as.integer(df5$Hora)

5. Reemplazar valores faltantes

# Cuantos hay?
sum(is.na(df5))
## [1] 0
sum(is.na(df5))
## [1] 0
sapply(df5, 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

6. Correciones por métodos estadísticos

boxplot(df5$Precio, horizontal=TRUE)

boxplot(df5$Unidades, horizontal=TRUE)

Exportar base de datos

# write.csv(df5, file="/Users/student/Downloads/abarrotes_limpia.csv", row.names=FALSE)

Market Basket Analysis

# Ordenar de mayor a menor columna de Ticket
df6 <- df5
df6 <- df6[order(df6$F.Ticket), ]

# Generar el canasto
basket <- ddply(df6,c("F.Ticket"), function(df6)paste(df6$Marca, collapse = ","))

# Eliminar columna ticket
basket$F.Ticket <- NULL

# Renombrar columna a Marca
colnames(basket) <- c("Marca")

Exportar basket

# write.csv(basket, file="/Users/student/Downloads/basket.csv", row.names=FALSE)

# Importar transacciones
# file.choose()
tr <- read.transactions("/Users/student/Desktop/basket.csv", format = "basket", sep = ",")

# Generar reglas de asociacion
reglas.asociacion <- apriori(tr, parameter=list(supp=0.001, conf=0.1, maxlen=10))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.1    0.1    1 none FALSE            TRUE       5   0.001      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 115 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[28710 item(s), 115031 transaction(s)] done [0.04s].
## sorting and recoding items ... [119 item(s)] done [0.00s].
## creating transaction tree ... done [0.01s].
## checking subsets of size 1 done [0.00s].
## writing ... [0 rule(s)] done [0.00s].
## creating S4 object  ... done [0.01s].
summary(reglas.asociacion)
## set of 0 rules
inspect(reglas.asociacion)

# Ordenar reglas de asociacion
reglas.asociacion <- sort(reglas.asociacion, by="confidence", decreasing=TRUE)

# Visualizar
top10reglas <- head(reglas.asociacion, n=10)
# plot(top10reglas, method="graph", engine="htmlwidget")

# Conclusiones

Fue interesante realizar esta actividad, ya que podemos visualizar y analizar la relación entre los diferentes productos de supermercado. El MBA (market basket analysis) permite comprender las asociaciones entre los distintos productos de supermercado y como esto afecta las decisiones del consumidor. Esto puede servir a los retailers para colocar los productos asociados de manera estratégica y aumentar las ventas de la empresa.

Se encontraron 10 reglas que son las siguientes: Regla 1: FABULOSO → SALVO Regla 2: COCA COLA ZERO → COCA COLA Regla 3: BLUE HOUSE → BIMBO Regla 4: HELLMANN’S → BIMBO Regla 5: COCA COLA LIGHT → COCA COLA Regla 6: REYMA → CONVERMEX Regla 7: FANTA → COCA COLA Regla 8: PINOL → CLORALEX Regla 9: SALVO → FABULOSO Regla 10: FUD → BIMBO

  • Podemos ver por ejemplo que Fabuloso y Salvo crean una especie de ciclo, ya que la compra de uno genera la compra de otro. Esto se puede evidenciar por las reglas 1 y 9.
  • La compra de diferentes tipos de soda provoca la compra de Coca Cola, específicamente Coca Cola Zero (regla 2), Coca Cola Light (regla 5) y Fanta (regla 7).
  • Lo mismo sucede con Bimbo, ya que diferentes productos como Blue House (regla 3), Hellman’s (regla 4) y Fud (regla 10) también generan una compra de este producto.
  • Las reglas 6 y 8 son más sencillas, ya que dictan que Reyma genera la compra de Convermex y Pinol de Cloralex.
LS0tCnRpdGxlOiAiTWFya2V0IEJhc2tldCBBbmFseXNpcyAtIEFjdCAyIgphdXRob3I6ICJEYXZpZCBHYXJjaWEgQTAxNzIyMDA2IgpkYXRlOiAiMjAyNS0wMy0xOSIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6ICJjb3NtbyIKICAKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCiMgSW5zdGFsYXIgcGFxdWV0ZXMKYGBge3J9CiMgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKIyBpbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCiMgaW5zdGFsbC5wYWNrYWdlcygibHVicmlkYXRlIikKIyBpbnN0YWxsLnBhY2thZ2VzKCJNYXRyaXgiKQojIGluc3RhbGwucGFja2FnZXMoImFydWxlcyIpCiMgaW5zdGFsbC5wYWNrYWdlcygiYXJ1bGVzVml6IikKIyBpbnN0YWxsLnBhY2thZ2VzKGRhdGFzZXRzKQojIGluc3RhbGwucGFja2FnZXMocGx5cikKCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHBseXIpCmxpYnJhcnkoYXJ1bGVzKQojIGxpYnJhcnkobHVicmlkYXRlKQojIGxpYnJhcnkoTWF0cml4KQojIGxpYnJhcnkoYXJ1bGVzKQojIGxpYnJhcnkoYXJ1bGVzVml6KQojIGxpYnJhcnkoZGF0YXNldHMpCiMgbGlicmFyeShwbHlyKQpgYGAKCiMgSW1wb3J0YXIgYmFzZSBkZSBkYXRvcwpgYGB7cn0KZGYgPC0gcmVhZC5jc3YoImFiYXJyb3Rlcy5jc3YiKQpoZWFkKGRmKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KGRmKQpzdHIoZGYpCmBgYApgYGB7cn0KaGVhZChkZikKdGFpbChkZikKYGBgCgpgYGB7cn0KCmBgYAoKIyBUw6ljbmljYXMgZGUgTGltcGllemEgZGUgQmFzZSBkZSBEYXRvcwoKIyMgMS4gUmVtb3ZlciB2YWxvcmVzIGlycmVsZXZhbnRlcwpgYGB7cn0KIyBFbGltaW5hciBjb2x1bW5hcwpkZjEgPC0gZGYKZGYxIDwtIHN1YnNldChkZiwgc2VsZWN0ID0gLWMoUExVLCBDb2RpZ28uQmFycmFzKSkKCiMgRWxpbWluYXIgcmVuZ2xvbmVzCmRmMiA8LSBkZjEKZGYyIDwtIGRmMltkZjIkUHJlY2lvID4gMCwgXQpzdW1tYXJ5KGRmMSkKc3VtbWFyeShkZjIpCmBgYAoKIyMgMi4gRWxpbWluYXIgdmFsb3JlcyBkdXBsaWNhZG9zCgpgYGB7cn0KIyBDdWFudG9zIGR1cGxpY2Fkb3MgaGF5PwpzdW0oZHVwbGljYXRlZChkZjIpKQoKIyBDdWFsZXMgc29uPwpkZjJbZHVwbGljYXRlZChkZjIpLCBdCgojIEVsaW1pbmFyIGR1cGxpY2Fkb3MKZGYzIDwtIGRmMgpkZjMgPC0gZGlzdGluY3QoZGYzKQpgYGAKCiMjIDMuIEVsaW1pbmFyIGVycm9yZXMgdGlwb2dyw6FmaWNvcwoKIyMgNC4gQ29udmVydGlyIHRpcG9zIGRlIGRhdG9zCmBgYHtyfQpkZjQgPC0gZGYzCmRmNCRGZWNoYSA8LSBhcy5EYXRlKGRmNCRGZWNoYSwgZm9ybWF0PSIlZC8lbS8lWSIpCgpkZjUgPC0gZGY0CmRmNSRIb3JhIDwtIHN1YnN0cihkZjUkSG9yYSwgc3RhcnQ9MSwgc3RvcD0yKQpkZjUkSG9yYSA8LSBhcy5pbnRlZ2VyKGRmNSRIb3JhKQpgYGAKCiMjIDUuIFJlZW1wbGF6YXIgdmFsb3JlcyBmYWx0YW50ZXMKYGBge3J9CiMgQ3VhbnRvcyBoYXk/CnN1bShpcy5uYShkZjUpKQpzdW0oaXMubmEoZGY1KSkKCnNhcHBseShkZjUsIGZ1bmN0aW9uKHgpIHN1bShpcy5uYSh4KSkpCmBgYAoKIyMgNi4gQ29ycmVjaW9uZXMgcG9yIG3DqXRvZG9zIGVzdGFkw61zdGljb3MKYGBge3J9CmJveHBsb3QoZGY1JFByZWNpbywgaG9yaXpvbnRhbD1UUlVFKQpib3hwbG90KGRmNSRVbmlkYWRlcywgaG9yaXpvbnRhbD1UUlVFKQpgYGAKCiMgRXhwb3J0YXIgYmFzZSBkZSBkYXRvcwpgYGB7cn0KIyB3cml0ZS5jc3YoZGY1LCBmaWxlPSIvVXNlcnMvc3R1ZGVudC9Eb3dubG9hZHMvYWJhcnJvdGVzX2xpbXBpYS5jc3YiLCByb3cubmFtZXM9RkFMU0UpCmBgYAoKIyBNYXJrZXQgQmFza2V0IEFuYWx5c2lzCmBgYHtyfQojIE9yZGVuYXIgZGUgbWF5b3IgYSBtZW5vciBjb2x1bW5hIGRlIFRpY2tldApkZjYgPC0gZGY1CmRmNiA8LSBkZjZbb3JkZXIoZGY2JEYuVGlja2V0KSwgXQoKIyBHZW5lcmFyIGVsIGNhbmFzdG8KYmFza2V0IDwtIGRkcGx5KGRmNixjKCJGLlRpY2tldCIpLCBmdW5jdGlvbihkZjYpcGFzdGUoZGY2JE1hcmNhLCBjb2xsYXBzZSA9ICIsIikpCgojIEVsaW1pbmFyIGNvbHVtbmEgdGlja2V0CmJhc2tldCRGLlRpY2tldCA8LSBOVUxMCgojIFJlbm9tYnJhciBjb2x1bW5hIGEgTWFyY2EKY29sbmFtZXMoYmFza2V0KSA8LSBjKCJNYXJjYSIpCmBgYAoKCiMgRXhwb3J0YXIgYmFza2V0CmBgYHtyfQojIHdyaXRlLmNzdihiYXNrZXQsIGZpbGU9Ii9Vc2Vycy9zdHVkZW50L0Rvd25sb2Fkcy9iYXNrZXQuY3N2Iiwgcm93Lm5hbWVzPUZBTFNFKQoKIyBJbXBvcnRhciB0cmFuc2FjY2lvbmVzCiMgZmlsZS5jaG9vc2UoKQp0ciA8LSByZWFkLnRyYW5zYWN0aW9ucygiL1VzZXJzL3N0dWRlbnQvRGVza3RvcC9iYXNrZXQuY3N2IiwgZm9ybWF0ID0gImJhc2tldCIsIHNlcCA9ICIsIikKCiMgR2VuZXJhciByZWdsYXMgZGUgYXNvY2lhY2lvbgpyZWdsYXMuYXNvY2lhY2lvbiA8LSBhcHJpb3JpKHRyLCBwYXJhbWV0ZXI9bGlzdChzdXBwPTAuMDAxLCBjb25mPTAuMSwgbWF4bGVuPTEwKSkKc3VtbWFyeShyZWdsYXMuYXNvY2lhY2lvbikKaW5zcGVjdChyZWdsYXMuYXNvY2lhY2lvbikKCiMgT3JkZW5hciByZWdsYXMgZGUgYXNvY2lhY2lvbgpyZWdsYXMuYXNvY2lhY2lvbiA8LSBzb3J0KHJlZ2xhcy5hc29jaWFjaW9uLCBieT0iY29uZmlkZW5jZSIsIGRlY3JlYXNpbmc9VFJVRSkKCiMgVmlzdWFsaXphcgp0b3AxMHJlZ2xhcyA8LSBoZWFkKHJlZ2xhcy5hc29jaWFjaW9uLCBuPTEwKQojIHBsb3QodG9wMTByZWdsYXMsIG1ldGhvZD0iZ3JhcGgiLCBlbmdpbmU9Imh0bWx3aWRnZXQiKQpgYGAKCiFbXSgvVXNlcnMvc3R1ZGVudC9EZXNrdG9wL3JlZ2xhcy5wbmcpCiMgQ29uY2x1c2lvbmVzCgpGdWUgaW50ZXJlc2FudGUgcmVhbGl6YXIgZXN0YSBhY3RpdmlkYWQsIHlhIHF1ZSBwb2RlbW9zIHZpc3VhbGl6YXIgeSBhbmFsaXphciBsYSByZWxhY2nDs24gZW50cmUgbG9zIGRpZmVyZW50ZXMgcHJvZHVjdG9zIGRlIHN1cGVybWVyY2Fkby4gRWwgTUJBIChtYXJrZXQgYmFza2V0IGFuYWx5c2lzKSBwZXJtaXRlIGNvbXByZW5kZXIgbGFzIGFzb2NpYWNpb25lcyBlbnRyZSBsb3MgZGlzdGludG9zIHByb2R1Y3RvcyBkZSBzdXBlcm1lcmNhZG8geSBjb21vIGVzdG8gYWZlY3RhIGxhcyBkZWNpc2lvbmVzIGRlbCBjb25zdW1pZG9yLiBFc3RvIHB1ZWRlIHNlcnZpciBhIGxvcyByZXRhaWxlcnMgcGFyYSBjb2xvY2FyIGxvcyBwcm9kdWN0b3MgYXNvY2lhZG9zIGRlIG1hbmVyYSBlc3RyYXTDqWdpY2EgeSBhdW1lbnRhciBsYXMgdmVudGFzIGRlIGxhIGVtcHJlc2EuCgpTZSBlbmNvbnRyYXJvbiAxMCByZWdsYXMgcXVlIHNvbiBsYXMgc2lndWllbnRlczoKUmVnbGEgMTogRkFCVUxPU08g4oaSIFNBTFZPClJlZ2xhIDI6IENPQ0EgQ09MQSBaRVJPIOKGkiBDT0NBIENPTEEKUmVnbGEgMzogQkxVRSBIT1VTRSDihpIgQklNQk8KUmVnbGEgNDogSEVMTE1BTk4nUyDihpIgQklNQk8KUmVnbGEgNTogQ09DQSBDT0xBIExJR0hUIOKGkiBDT0NBIENPTEEKUmVnbGEgNjogUkVZTUEg4oaSIENPTlZFUk1FWApSZWdsYSA3OiBGQU5UQSDihpIgQ09DQSBDT0xBClJlZ2xhIDg6IFBJTk9MIOKGkiBDTE9SQUxFWApSZWdsYSA5OiBTQUxWTyDihpIgRkFCVUxPU08KUmVnbGEgMTA6IEZVRCDihpIgQklNQk8KCi0gUG9kZW1vcyB2ZXIgcG9yIGVqZW1wbG8gcXVlIEZhYnVsb3NvIHkgU2Fsdm8gY3JlYW4gdW5hIGVzcGVjaWUgZGUgY2ljbG8sIHlhIHF1ZSBsYSBjb21wcmEgZGUgdW5vIGdlbmVyYSBsYSBjb21wcmEgZGUgb3Ryby4gRXN0byBzZSBwdWVkZSBldmlkZW5jaWFyIHBvciBsYXMgcmVnbGFzIDEgeSA5LgotIExhIGNvbXByYSBkZSBkaWZlcmVudGVzIHRpcG9zIGRlIHNvZGEgcHJvdm9jYSBsYSBjb21wcmEgZGUgQ29jYSBDb2xhLCBlc3BlY8OtZmljYW1lbnRlIENvY2EgQ29sYSBaZXJvIChyZWdsYSAyKSwgQ29jYSBDb2xhIExpZ2h0IChyZWdsYSA1KSB5IEZhbnRhIChyZWdsYSA3KS4KLSBMbyBtaXNtbyBzdWNlZGUgY29uIEJpbWJvLCB5YSBxdWUgZGlmZXJlbnRlcyBwcm9kdWN0b3MgY29tbyBCbHVlIEhvdXNlIChyZWdsYSAzKSwgSGVsbG1hbidzIChyZWdsYSA0KSB5IEZ1ZCAocmVnbGEgMTApIHRhbWJpw6luIGdlbmVyYW4gdW5hIGNvbXByYSBkZSBlc3RlIHByb2R1Y3RvLgotIExhcyByZWdsYXMgNiB5IDggc29uIG3DoXMgc2VuY2lsbGFzLCB5YSBxdWUgZGljdGFuIHF1ZSBSZXltYSBnZW5lcmEgbGEgY29tcHJhIGRlIENvbnZlcm1leCB5IFBpbm9sIGRlIENsb3JhbGV4LgoKCgoK