bd_limpia <- read.csv("/Users/lizmanzano/Desktop/abarrotes_bd_limpia.csv")

Paquetes y librerías requeridas

# install.packages("plyr")
library(Matrix)
# install.packages("arules")
library(arules)
## 
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
# install.packages("arulesViz")  
library(arulesViz)
library(datasets)

Ordenar de menor a mayor los Tickets

bd_limpia <- bd_limpia[order(bd_limpia$F.Ticket),]
head(bd_limpia)
##   vcClaveTienda  DescGiro      Fecha Hora                      Marca
## 1         MX001 Abarrotes 2020-06-19    8                NUTRI LECHE
## 2         MX001 Abarrotes 2020-06-19    8                     DAN UP
## 3         MX001 Abarrotes 2020-06-19    8                      BIMBO
## 4         MX001 Abarrotes 2020-06-19    8                      PEPSI
## 5         MX001 Abarrotes 2020-06-19    8 BLANCA NIEVES (DETERGENTE)
## 6         MX001 Abarrotes 2020-06-19    8                      FLASH
##                   Fabricante                           Producto Precio
## 1                    MEXILAC                Nutri Leche 1 Litro   16.0
## 2           DANONE DE MEXICO DANUP STRAWBERRY P/BEBER 350GR NAL   14.0
## 3                GRUPO BIMBO                Rebanadas Bimbo 2Pz    5.0
## 4        PEPSI-COLA MEXICANA                   Pepsi N.R. 400Ml    8.0
## 5 FABRICA DE JABON LA CORONA      Detergente Blanca Nieves 500G   19.5
## 6                       ALEN      Flash Xtra Brisa Marina 500Ml    9.5
##   Ult.Costo Unidades F.Ticket NombreDepartamento          NombreFamilia
## 1     12.31        1        1          Abarrotes Lacteos y Refrigerados
## 2     14.00        1        2          Abarrotes Lacteos y Refrigerados
## 3      5.00        1        3          Abarrotes         Pan y Tortilla
## 4      8.00        1        3          Abarrotes                Bebidas
## 5     15.00        1        4          Abarrotes     Limpieza del Hogar
## 6      7.31        1        4          Abarrotes     Limpieza del Hogar
##             NombreCategoria     Estado Mts.2 Tipo.ubicación      Giro
## 1                     Leche Nuevo León    60        Esquina Abarrotes
## 2                    Yogurt Nuevo León    60        Esquina Abarrotes
## 3     Pan Dulce Empaquetado Nuevo León    60        Esquina Abarrotes
## 4 Refrescos Plástico (N.R.) Nuevo León    60        Esquina Abarrotes
## 5                Lavandería Nuevo León    60        Esquina Abarrotes
## 6      Limpiadores Líquidos Nuevo León    60        Esquina Abarrotes
##   Hora.inicio Hora.cierre Dia_de_la_semana Subtotal Utilidad
## 1        8:00       22:00                6     16.0     3.69
## 2        8:00       22:00                6     14.0     0.00
## 3        8:00       22:00                6      5.0     0.00
## 4        8:00       22:00                6      8.0     0.00
## 5        8:00       22:00                6     19.5     4.50
## 6        8:00       22:00                6      9.5     2.19
tail(bd_limpia)
##        vcClaveTienda   DescGiro      Fecha Hora          Marca
## 107394         MX004 Carnicería 2020-10-15   11         YEMINA
## 167771         MX004 Carnicería 2020-10-15   11     DEL FUERTE
## 149429         MX004 Carnicería 2020-10-15   11 COCA COLA ZERO
## 168750         MX004 Carnicería 2020-10-15   11       DIAMANTE
## 161193         MX004 Carnicería 2020-10-15   12          PEPSI
## 112970         MX004 Carnicería 2020-10-15   12      COCA COLA
##                  Fabricante                       Producto Precio Ult.Costo
## 107394               HERDEZ    PASTA SPAGHETTI YEMINA 200G      7      5.38
## 167771 ALIMENTOS DEL FUERTE PURE DE TOMATE DEL FUERTE 345G     12      9.23
## 149429            COCA COLA           COCA COLA ZERO 600ML     15     11.54
## 168750           EMPACADOS              ARROZ DIAMANTE225G     11      8.46
## 161193  PEPSI-COLA MEXICANA              PEPSI N. R. 500ML     10      7.69
## 112970            COCA COLA     COCA COLA RETORNABLE 500ML     10      7.69
##        Unidades F.Ticket NombreDepartamento        NombreFamilia
## 107394        2   450032          Abarrotes       Sopas y Pastas
## 167771        1   450032          Abarrotes Salsas y Sazonadores
## 149429        2   450034          Abarrotes              Bebidas
## 168750        1   450037          Abarrotes    Granos y Semillas
## 161193        1   450039          Abarrotes              Bebidas
## 112970        8   450040          Abarrotes              Bebidas
##                      NombreCategoria  Estado Mts.2 Tipo.ubicación      Giro
## 107394 Fideos, Spaguetti, Tallarines Sinaloa    53        Esquina Abarrotes
## 167771          Salsa para Spaguetti Sinaloa    53        Esquina Abarrotes
## 149429         Refrescos Retornables Sinaloa    53        Esquina Abarrotes
## 168750                         Arroz Sinaloa    53        Esquina Abarrotes
## 161193     Refrescos Plástico (N.R.) Sinaloa    53        Esquina Abarrotes
## 112970         Refrescos Retornables Sinaloa    53        Esquina Abarrotes
##        Hora.inicio Hora.cierre Dia_de_la_semana Subtotal Utilidad
## 107394        7:00       23:00                5       14     1.62
## 167771        7:00       23:00                5       12     2.77
## 149429        7:00       23:00                5       30     3.46
## 168750        7:00       23:00                5       11     2.54
## 161193        7:00       23:00                5       10     2.31
## 112970        7:00       23:00                5       80     2.31

Generar basket

# install.packages("plyr")
library(plyr)
basket <- ddply(bd_limpia,c("F.Ticket"), function(bd_limpia)paste(bd_limpia$Marca, collapse = ","))

Eliminar Número de Ticket

basket$F.Ticket <- NULL

Renombramos el nombre de la columna

colnames(basket) <- c("Marca")

Exportar basket

write.csv(basket,"basket_abarrotes.csv", quote = FALSE, row.names = FALSE)

Importar transacciones

tr <- read.transactions("/Users/lizmanzano/Desktop/basket_abarrotes.csv", format = "basket" , sep= ",")

reglas.asociacion <- apriori(tr, parameter = list(supp= 0.001, conf=0.2, maxlen=10))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.2    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 ...[604 item(s), 115111 transaction(s)] done [0.04s].
## sorting and recoding items ... [207 item(s)] done [0.00s].
## creating transaction tree ... done [0.05s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [11 rule(s)] done [0.00s].
## creating S4 object  ... done [0.01s].
# summary(reglas.asociacion)
# inspect(reglas.asociacion)

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

top10reglas <- head(reglas.asociacion, n = 10, by = "confidence")

Gráfica Top 10 reglas

plot(top10reglas, method = "graph", engine = "htmlwidget")    

Conclusiones

Lo que se llevó a cabo dentro de este market basket fue mas que nada un análisis de las compras, de esta manera se analizaron los conjuntos de artículos para comprender a los clientes de mejor manera y así predecir sus necesidades, esto se hizo con la ayuda de herramientas como tidyverse y dplyr. Para esta tienda de abarrotes se ordenaron de menor a mayor los tickets y también se obtuvo una gráfica de top 10 reglas en dónde se pueden observar las marcas de productos que se encuentran en la tienda de abarrotes.