### Market Basket Analysis in R with example

How can we identify the different products which can be bundled
together to increase the sales ? The answer of the question is Market Basket Analysis or Apriori
Algorithm.

This article has been written in continuation of the previous article covering

**Basic of Market Basket Analysis.**

We are taking a very common example of grocery store to make
you understand the algorithm step by step. Sample snapshot of the data is given
right side:

There are only two variables in the datasets

1) Customer Id – Unique identity number of customers

2) Products – Products bought by the customers

We would now cover all steps to run apriori algorithm in R

1. Let's first import the data.

**Code 1:**
mba_data<-read.csv("C:\\MBA_data_new.csv") # we are creating a data frame by importing csv file

<< Here is the screen shot of data in R.

mba_data( data frame in R) has two variable customer_id and products.

Each customer id has bought some products for example:

Each customer id has bought some products for example:

customer id 1 has bought

Bread

Butter

Eggs

Milk

head(trans) # you can check top 6 observation using head() function

Screenshot of top transaction :

We have transformed the data into the desired format to run the apriori algorithm. In order to run apriori algorithm, first, we need to install and load arules library package using below code.

library(arules) # loading arules library

Below are the screenshots of R Console :

We have installed the arules library. Now we can run the apriori algorithm using following statement:

rules = apriori(trans, parameter=list(support=0.10, confidence=0.5,maxlen=2,minlen=2))

We have successfully derived 66 rules( written second last line in the above screenshot).

Now lets have a look on those rules.

Screenshot for R.

Lets manually validate the first two rules ( buns => mustard and mustard => buns).

I hope that you would have read our last blog on Market Basket Analysis. In our last article we have explicitly explained

Please read that article before getting into below calculation to understand it better.

If you want to export the rule file into csv file, you can get it by below mentioned code.

write(rules,file="mba_rules1.csv",sep=",",row.names = FALSE)

I hope, the article is useful in understanding the market basket analysis

**2. We cannot directly use imported data to run apriori algorithm. We need to aggregate it first by customer id and transform into different format.****Code 2 :***trans <- split(mba_data$Products, mba_data$Customer_Id,"transactions")*

head(trans) # you can check top 6 observation using head() function

Screenshot of top transaction :

We have transformed the data into the desired format to run the apriori algorithm. In order to run apriori algorithm, first, we need to install and load arules library package using below code.

**Code 3:***install.packages("arules") # install arules library package*

library(arules) # loading arules library

Below are the screenshots of R Console :

We have installed the arules library. Now we can run the apriori algorithm using following statement:

**Code 4:**rules = apriori(trans, parameter=list(support=0.10, confidence=0.5,maxlen=2,minlen=2))

**Below are the screen shot of R result.**We have successfully derived 66 rules( written second last line in the above screenshot).

Now lets have a look on those rules.

**Code 5:***inspect(rules) # to get the rules*

Screenshot for R.

Lets manually validate the first two rules ( buns => mustard and mustard => buns).

I hope that you would have read our last blog on Market Basket Analysis. In our last article we have explicitly explained

**.***support, confidence and lift*Please read that article before getting into below calculation to understand it better.

If you want to export the rule file into csv file, you can get it by below mentioned code.

**Code 6:**write(rules,file="mba_rules1.csv",sep=",",row.names = FALSE)

I hope, the article is useful in understanding the market basket analysis

Enjoy reading our other articles and stay tuned with ...

Kindly do provide your feedback in the 'Comments' Section and share as much as possible.