# 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