product_name     <- 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_name, unit_price, units_sold, unit_cost,
                           advertising_cost, orders, returned_orders,
                           stringsAsFactors = FALSE)
head(product_data, 5)      # first five records
nrow(product_data)         # number of rows
ncol(product_data)         # number of columns
names(product_data)        # variable names
str(product_data)          # structure
 
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)

total_revenue          <- sum(product_data$revenue)
total_cogs             <- sum(product_data$cogs)
total_gross_profit     <- sum(product_data$gross_profit)
total_net_contribution <- sum(product_data$net_contribution)
cat("Total sales revenue      : LKR", format(total_revenue, big.mark = ","), "\n")
cat("Total COGS               : LKR", format(total_cogs, big.mark = ","), "\n")
cat("Total gross profit       : LKR", format(total_gross_profit, big.mark = ","), "\n")
cat("Total net contribution   : LKR", format(total_net_contribution, big.mark = ","), "\n")

mean_nc   <- mean(product_data$net_contribution)
median_nc <- median(product_data$net_contribution)
cat("Mean net contribution    : LKR", format(mean_nc, big.mark = ","), "\n")
cat("Median net contribution  : LKR", format(median_nc, big.mark = ","), "\n")

best_index  <- which.max(product_data$net_contribution)
worst_index <- which.min(product_data$net_contribution)
cat("Highest net contribution :", product_data$product_name[best_index],
    "- LKR", format(max(product_data$net_contribution), big.mark = ","), "\n")
cat("Lowest net contribution  :", product_data$product_name[worst_index],
    "- LKR", format(min(product_data$net_contribution), big.mark = ","), "\n")

cat("Maximum return rate      :", product_data$product_name[which.max(product_data$return_rate)],
    "-", round(max(product_data$return_rate), 2), "%\n")
cat("Minimum return rate      :", product_data$product_name[which.min(product_data$return_rate)],
    "-", round(min(product_data$return_rate), 2), "%\n")

sorted_nc <- sort(product_data$net_contribution)
print(sorted_nc)
nc_range <- max(product_data$net_contribution) - min(product_data$net_contribution)
cat("Range of net contribution: LKR", format(nc_range, big.mark = ","), "\n")

n <- nrow(product_data)
profit_category <- character(n)    
return_category <- character(n)

for (i in 1:n) {
  if (product_data$net_contribution[i] >= 750000) {
    profit_category[i] <- "High Performer"
  } else if (product_data$net_contribution[i] >= 400000) {
    profit_category[i] <- "Moderate Performer"
  } else {
    profit_category[i] <- "Low Performer"
  }
}

for (i in 1:n) {
  if (product_data$net_contribution[i] >= 750000) {
    profit_category[i] <- "High Performer"
  } else if (product_data$net_contribution[i] >= 400000) {
    profit_category[i] <- "Moderate Performer"
  } else {
    profit_category[i] <- "Low Performer"
  }
  if (product_data$return_rate[i] > 5) {
    return_category[i] <- "High Return Risk"
  } else {
    return_category[i] <- "Acceptable Return Rate"
  }
}

for (i in 1:n) {
  cat(product_data$product_name[i], "| Revenue: LKR", format(product_data$revenue[i], big.mark = ","),
      "| Net contribution: LKR", format(product_data$net_contribution[i], big.mark = ","), "\n")
}


cat("Products requiring management attention:\n")
attention_count <- 0
i <- 1
while (i <= n) {
  if (product_data$net_contribution[i] < 400000 || product_data$return_rate[i] > 5) {
    cat(" -", product_data$product_name[i], "\n")
    attention_count <- attention_count + 1
  }
  i <- i + 1             
}

cat("Total products requiring attention:", attention_count, "\n")

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


classify_product <- function(net_contribution) {
  if (net_contribution >= 750000) {
    category <- "High Performer"
  } else if (net_contribution >= 400000) {
    category <- "Moderate Performer"
  } else {
    category <- "Low Performer"
  }
  return(category)
}
 
laptop_nc  <- calculate_contribution(185000, 35, 150000, 180000)
printer_nc <- calculate_contribution(42000, 38, 33000, 45000)
keyboard_nc <- calculate_contribution(8500, 210, 4200, 50000)
cat("Laptop   :", laptop_nc,   "-", classify_product(laptop_nc),   "\n")
cat("Printer  :", printer_nc,  "-", classify_product(printer_nc),  "\n")
cat("Keyboard :", keyboard_nc, "-", classify_product(keyboard_nc), "\n")

barplot(product_data$net_contribution,
        names.arg = product_data$product_name,
        main = "Net Contribution by Product",
        xlab = "Product", ylab = "Net Contribution (LKR)",
        col = "steelblue", las = 2, cex.names = 0.8)

hist(product_data$net_contribution,
     main = "Distribution of Net Contribution",
     xlab = "Net Contribution (LKR)", ylab = "Number of Products",
     col = "lightgreen", border = "white")

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, col = "darkred")
text(product_data$advertising_cost, product_data$net_contribution,
     labels = product_data$product_name, pos = 3, cex = 0.7)

write.csv(product_data, "product_performance.csv", row.names = FALSE)

Embed on website

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