# Create data frame
retail <- data.frame(
BillID = c(501,502,503,504,505,506),
CustomerName = c("Aman","Riya","Karan","Neha","Rohit","Simran"),
Gender = c("Male","Female","Male","Female","Male","Female"),
Membership = c("Gold","Silver","Gold","None","Silver","Gold"),
Category = c("Grocery","Electronics","Clothing","Grocery","Electronics","Clothing"),
Quantity = c(10,1,3,8,2,5),
CostPrice = c(50,20000,800,60,18000,700),
SellingPrice = c(70,25000,1000,80,22000,900),
Discount = c(100,2000,150,50,500,300),
DeliveryType = c("Home","Store","Home","Store","Home","Home")
)
retail
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 1 501 Aman Male Gold Grocery 10 50
## 2 502 Riya Female Silver Electronics 1 20000
## 3 503 Karan Male Gold Clothing 3 800
## 4 504 Neha Female None Grocery 8 60
## 5 505 Rohit Male Silver Electronics 2 18000
## 6 506 Simran Female Gold Clothing 5 700
## SellingPrice Discount DeliveryType
## 1 70 100 Home
## 2 25000 2000 Store
## 3 1000 150 Home
## 4 80 50 Store
## 5 22000 500 Home
## 6 900 300 Home
retail$GrossRevenue <- retail$Quantity * retail$SellingPrice
retail$TotalCost <- retail$Quantity * retail$CostPrice
retail$NetRevenue <- retail$GrossRevenue - retail$Discount
retail$Profit <- retail$NetRevenue - retail$TotalCost
retail
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 1 501 Aman Male Gold Grocery 10 50
## 2 502 Riya Female Silver Electronics 1 20000
## 3 503 Karan Male Gold Clothing 3 800
## 4 504 Neha Female None Grocery 8 60
## 5 505 Rohit Male Silver Electronics 2 18000
## 6 506 Simran Female Gold Clothing 5 700
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 1 70 100 Home 700 500 600 100
## 2 25000 2000 Store 25000 20000 23000 3000
## 3 1000 150 Home 3000 2400 2850 450
## 4 80 50 Store 640 480 590 110
## 5 22000 500 Home 44000 36000 43500 7500
## 6 900 300 Home 4500 3500 4200 700
subset(retail, Membership=="Gold" & Profit>5000 & DeliveryType=="Home")
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit
## <0 rows> (or 0-length row.names)
subset(retail, Profit < 0)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit
## <0 rows> (or 0-length row.names)
subset(retail, Category=="Electronics" & Quantity>=2 & Discount>1000 & Profit>0)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit
## <0 rows> (or 0-length row.names)
subset(retail, Profit < 0)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit
## <0 rows> (or 0-length row.names)
subset(retail, NetRevenue>20000 | Membership=="Gold")
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 1 501 Aman Male Gold Grocery 10 50
## 2 502 Riya Female Silver Electronics 1 20000
## 3 503 Karan Male Gold Clothing 3 800
## 5 505 Rohit Male Silver Electronics 2 18000
## 6 506 Simran Female Gold Clothing 5 700
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 1 70 100 Home 700 500 600 100
## 2 25000 2000 Store 25000 20000 23000 3000
## 3 1000 150 Home 3000 2400 2850 450
## 5 22000 500 Home 44000 36000 43500 7500
## 6 900 300 Home 4500 3500 4200 700
retail$ProfitCategory <- ifelse(retail$Profit>10000, "High Profit",
ifelse(retail$Profit>0, "Moderate Profit","Loss"))
aggregate(Profit ~ Membership + Category, data=retail, sum)
## Membership Category Profit
## 1 Gold Clothing 1150
## 2 Silver Electronics 10500
## 3 Gold Grocery 100
## 4 None Grocery 110
aggregate(Profit ~ Gender + DeliveryType, data=retail, mean)
## Gender DeliveryType Profit
## 1 Female Home 700.000
## 2 Male Home 2683.333
## 3 Female Store 1555.000
retail$ProfitMargin <- (retail$Profit / retail$NetRevenue) * 100
subset(retail, ProfitMargin>30 & NetRevenue>20000)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit ProfitCategory
## [16] ProfitMargin
## <0 rows> (or 0-length row.names)
retail_sorted <- retail[order(-retail$Profit, -retail$NetRevenue),]
retail_sorted
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 5 505 Rohit Male Silver Electronics 2 18000
## 2 502 Riya Female Silver Electronics 1 20000
## 6 506 Simran Female Gold Clothing 5 700
## 3 503 Karan Male Gold Clothing 3 800
## 4 504 Neha Female None Grocery 8 60
## 1 501 Aman Male Gold Grocery 10 50
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 5 22000 500 Home 44000 36000 43500 7500
## 2 25000 2000 Store 25000 20000 23000 3000
## 6 900 300 Home 4500 3500 4200 700
## 3 1000 150 Home 3000 2400 2850 450
## 4 80 50 Store 640 480 590 110
## 1 70 100 Home 700 500 600 100
## ProfitCategory ProfitMargin
## 5 Moderate Profit 17.24138
## 2 Moderate Profit 13.04348
## 6 Moderate Profit 16.66667
## 3 Moderate Profit 15.78947
## 4 Moderate Profit 18.64407
## 1 Moderate Profit 16.66667
subset(retail, Membership=="Gold" & DeliveryType=="Home" & Profit>8000)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit ProfitCategory
## [16] ProfitMargin
## <0 rows> (or 0-length row.names)
subset(retail, (Discount/GrossRevenue)>0.15 & Category=="Electronics")
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit ProfitCategory
## [16] ProfitMargin
## <0 rows> (or 0-length row.names)
subset(retail, Gender=="Female" & (Profit>5000 | Category=="Grocery"))
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 4 504 Neha Female None Grocery 8 60
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 4 80 50 Store 640 480 590 110
## ProfitCategory ProfitMargin
## 4 Moderate Profit 18.64407
subset(retail, Profit<0 | (Discount/GrossRevenue)>0.25)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit ProfitCategory
## [16] ProfitMargin
## <0 rows> (or 0-length row.names)
head(retail[order(-retail$Profit),],3)
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 5 505 Rohit Male Silver Electronics 2 18000
## 2 502 Riya Female Silver Electronics 1 20000
## 6 506 Simran Female Gold Clothing 5 700
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 5 22000 500 Home 44000 36000 43500 7500
## 2 25000 2000 Store 25000 20000 23000 3000
## 6 900 300 Home 4500 3500 4200 700
## ProfitCategory ProfitMargin
## 5 Moderate Profit 17.24138
## 2 Moderate Profit 13.04348
## 6 Moderate Profit 16.66667
aggregate(Profit ~ Membership, data=retail, mean)
## Membership Profit
## 1 Gold 416.6667
## 2 None 110.0000
## 3 Silver 5250.0000
aggregate(Profit ~ Membership, data=retail, mean)
## Membership Profit
## 1 Gold 416.6667
## 2 None 110.0000
## 3 Silver 5250.0000
subset(retail, TotalCost > NetRevenue)
## [1] BillID CustomerName Gender Membership Category
## [6] Quantity CostPrice SellingPrice Discount DeliveryType
## [11] GrossRevenue TotalCost NetRevenue Profit ProfitCategory
## [16] ProfitMargin
## <0 rows> (or 0-length row.names)
aggregate(Profit ~ Membership, data=retail, sum)
## Membership Profit
## 1 Gold 1250
## 2 None 110
## 3 Silver 10500
aggregate(Profit ~ DeliveryType, data=retail, mean)
## DeliveryType Profit
## 1 Home 2187.5
## 2 Store 1555.0
subset(retail, NetRevenue>20000 & ProfitMargin<20)
## BillID CustomerName Gender Membership Category Quantity CostPrice
## 2 502 Riya Female Silver Electronics 1 20000
## 5 505 Rohit Male Silver Electronics 2 18000
## SellingPrice Discount DeliveryType GrossRevenue TotalCost NetRevenue Profit
## 2 25000 2000 Store 25000 20000 23000 3000
## 5 22000 500 Home 44000 36000 43500 7500
## ProfitCategory ProfitMargin
## 2 Moderate Profit 13.04348
## 5 Moderate Profit 17.24138