# ==================================================
# INTRODUCTION TO R PROGRAMMING FOR BUSINESS ANALYTICS
# LankaSmart E-Commerce Company
# ==================================================

# QUESTION 1: Create vectors and data frame

product <- c("Laptop", "Smartphone", "Tablet", "Headphones",
             "Smartwatch", "Printer", "Keyboard", "Monitor")

unit_price <- c(185000, 95000, 68000, 12500,
                28000, 42000, 8500, 56000)

units_sold <- c(35, 80, 45, 160, 90, 38, 210, 52)

unit_cost <- c(150000, 76000, 52000, 6500,
               19000, 33000, 4200, 43000)

advertising_cost <- c(180000, 220000, 90000, 60000,
                      85000, 45000, 50000, 75000)

orders <- c(35, 78, 44, 150, 88, 36, 200, 50)

returned_orders <- c(2, 5, 2, 12, 6, 3, 8, 2)

product_data <- data.frame(
  product, unit_price, units_sold, unit_cost,
  advertising_cost, orders, returned_orders
)

# Inspect the data
print(head(product_data, 5))
print(dim(product_data))
print(nrow(product_data))
print(ncol(product_data))
print(names(product_data))
str(product_data)


# QUESTION 2: Calculate performance measures

product_data$Revenue <-
  product_data$unit_price * product_data$units_sold

product_data$COGS <-
  product_data$unit_cost * product_data$units_sold

product_data$Gross_Profit <-
  product_data$Revenue - product_data$COGS

product_data$Net_Contribution <-
  product_data$Gross_Profit - product_data$advertising_cost

product_data$Profit_Margin <-
  (product_data$Net_Contribution / product_data$Revenue) * 100

product_data$Return_Rate <-
  (product_data$returned_orders / product_data$orders) * 100

print(product_data)


# QUESTION 3: Descriptive analysis

print(sum(product_data$Revenue))
print(sum(product_data$COGS))
print(sum(product_data$Gross_Profit))
print(sum(product_data$Net_Contribution))

print(mean(product_data$Net_Contribution))
print(median(product_data$Net_Contribution))

print(max(product_data$Net_Contribution))
print(min(product_data$Net_Contribution))

print(max(product_data$Return_Rate))
print(min(product_data$Return_Rate))

# Sort Net Contribution from lowest to highest
print(product_data[order(product_data$Net_Contribution), ])

# Calculate range
print(max(product_data$Net_Contribution) -
      min(product_data$Net_Contribution))


# QUESTION 4: Product classification

product_data$Profitability <- ifelse(
  product_data$Net_Contribution >= 750000,
  "High Performer",
  ifelse(
    product_data$Net_Contribution >= 400000,
    "Moderate",
    "Low"
  )
)

product_data$Return_Risk <- ifelse(
  product_data$Return_Rate > 5,
  "High Return Risk",
  "Acceptable"
)

# Final classification report
print(product_data[, c(
  "product", "Net_Contribution", "Profit_Margin",
  "Return_Rate", "Profitability", "Return_Risk"
)])


# QUESTION 5: Loops and conditions

# Display revenue and contribution for each product
for (i in 1:nrow(product_data)) {
  print(product_data$product[i])
  print(product_data$Revenue[i])
  print(product_data$Net_Contribution[i])
}

# Count profitability categories
high_count <- 0
moderate_count <- 0
low_count <- 0

for (i in 1:nrow(product_data)) {
  if (product_data$Profitability[i] == "High Performer") {
    high_count <- high_count + 1
  } else if (product_data$Profitability[i] == "Moderate") {
    moderate_count <- moderate_count + 1
  } else {
    low_count <- low_count + 1
  }
}

print(high_count)
print(moderate_count)
print(low_count)

# Identify products requiring attention
i <- 1
attention_count <- 0

while (i <= nrow(product_data)) {
  if (product_data$Net_Contribution[i] < 400000 ||
      product_data$Return_Rate[i] > 5) {
    print(product_data$product[i])
    attention_count <- attention_count + 1
  }
  i <- i + 1
}

print(attention_count)


# QUESTION 6: User-defined functions

calculate_contribution <- function(
  unit_price, units_sold, unit_cost, ad_cost
) {
  revenue <- unit_price * units_sold
  cogs <- unit_cost * units_sold
  gross_profit <- revenue - cogs
  net_contribution <- gross_profit - ad_cost
  return(net_contribution)
}

# Test the function using two products
print(calculate_contribution(185000, 35, 150000, 180000))
print(calculate_contribution(95000, 80, 76000, 220000))

classify_product <- function(contribution) {
  if (contribution >= 750000) {
    return("High Performer")
  } else if (contribution >= 400000) {
    return("Moderate")
  } else {
    return("Low")
  }
}

# Test the classification function
print(classify_product(800000))
print(classify_product(300000))


# QUESTION 7: Graphs and CSV export

# Bar chart: Net Contribution by product
barplot(
  product_data$Net_Contribution,
  names.arg = product_data$product,
  main = "Net Contribution by Product",
  xlab = "Product",
  ylab = "Net Contribution (LKR)",
  las = 2
)

# Histogram: Net Contribution distribution
hist(
  product_data$Net_Contribution,
  main = "Distribution of Net Contribution",
  xlab = "Net Contribution (LKR)",
  ylab = "Frequency"
)

# Scatter plot: Advertising Cost versus Net Contribution
plot(
  product_data$advertising_cost,
  product_data$Net_Contribution,
  main = "Advertising Cost vs Net Contribution",
  xlab = "Advertising Cost (LKR)",
  ylab = "Net Contribution (LKR)",
  pch = 19
)

# Export final data frame to CSV
write.csv(
  product_data,
  "product_performance.csv",
  row.names = FALSE
)

print("Analysis completed.")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: