# Question 1: Data Preparation and Inspection
# (i) Create separate vectors
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)
ad_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)
# (ii) Combine vectors into a data frame
product_data <- data.frame(
product, unit_price, units_sold, unit_cost,
ad_cost, orders, returned_orders
)
# (iii) Inspect the data
head(product_data, 5)
nrow(product_data)
ncol(product_data)
names(product_data)
str(product_data)
# Question 2: Financial Performance Calculations
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_contrib <- product_data$gross_profit - product_data$ad_cost
product_data$profit_margin <- (product_data$net_contrib / product_data$revenue) * 100
product_data$return_rate <- (product_data$returned_orders / product_data$orders) * 100
print(product_data)
# Question 3: Descriptive Business Analysis
# (i) Total values
cat("Total revenue: ", sum(product_data$revenue), "\n")
cat("Total COGS: ", sum(product_data$cogs), "\n")
cat("Total gross profit: ", sum(product_data$gross_profit), "\n")
cat("Total net contribution: ", sum(product_data$net_contrib), "\n")
# (ii) Mean and median
cat("Mean net contribution: ", mean(product_data$net_contrib), "\n")
cat("Median net contribution: ", median(product_data$net_contrib), "\n")
# (iii) Highest and lowest net contribution
cat("Highest net contribution:", max(product_data$net_contrib), "\n")
cat("Lowest net contribution:", min(product_data$net_contrib), "\n")
# (iv) Maximum and minimum return rates
cat("Max return rate:", max(product_data$return_rate), "\n")
cat("Min return rate:", min(product_data$return_rate), "\n")
# (v) Sort net contribution and calculate range
sorted_nc <- sort(product_data$net_contrib)
print(sorted_nc)
nc_range <- max(product_data$net_contrib) - min(product_data$net_contrib)
cat("Range of net contribution:", nc_range, "\n")
# Question 4: Conditional Statements and Business Classification
n <- nrow(product_data)
profit_category <- character(n)
return_risk <- character(n)
# A. Product profitability classification
for (i in 1:n) {
if (product_data$net_contrib[i] >= 750000) {
profit_category[i] <- "High Performer"
} else if (product_data$net_contrib[i] >= 400000) {
profit_category[i] <- "Moderate Performer"
} else {
profit_category[i] <- "Low Performer"
}
}
# B. Product return-risk classification
for (i in 1:n) {
if (product_data$return_rate[i] > 5) {
return_risk[i] <- "High Return Risk"
} else {
return_risk[i] <- "Acceptable Return Rate"
}
}
product_data$profit_category <- profit_category
product_data$return_risk <- return_risk
report <- product_data[, c(
"product", "net_contrib", "profit_margin",
"return_rate", "profit_category", "return_risk"
)]
print(report)
# Question 5: Loops and Automated Business Reporting
# (i) Display each product's revenue and net contribution
for (i in 1:n) {
cat(product_data$product[i],
"| Revenue:", product_data$revenue[i],
"| Net contribution:", product_data$net_contrib[i], "\n")
}
# (ii) Count products in each profitability category
high_count <- 0
moderate_count <- 0
low_count <- 0
for (i in 1:n) {
if (product_data$profit_category[i] == "High Performer") {
high_count <- high_count + 1
} else if (product_data$profit_category[i] == "Moderate Performer") {
moderate_count <- moderate_count + 1
} else {
low_count <- low_count + 1
}
}
cat("High:", high_count,
"| Moderate:", moderate_count,
"| Low:", low_count, "\n")
# (iii) Display products requiring management attention
i <- 1
attention_count <- 0
while (i <= n) {
if (product_data$net_contrib[i] < 400000 ||
product_data$return_rate[i] > 5) {
cat(product_data$product[i], "\n")
attention_count <- attention_count + 1
}
i <- i + 1
}
# (iv) Total products requiring attention
cat("Products requiring attention:", attention_count, "\n")
# Question 6: User-Defined Functions
# (i) Calculate net contribution
calculate_contribution <- function(unit_price, units_sold, unit_cost, ad_cost) {
revenue <- unit_price * units_sold
cogs <- unit_cost * units_sold
net <- revenue - cogs - ad_cost
return(net)
}
# (ii) Classify product profitability
classify_product <- function(net_contribution) {
if (net_contribution >= 750000) {
return("High Performer")
} else if (net_contribution >= 400000) {
return("Moderate Performer")
} else {
return("Low Performer")
}
}
# (iii) Test both functions
laptop_nc <- calculate_contribution(185000, 35, 150000, 180000)
printer_nc <- calculate_contribution(42000, 38, 33000, 45000)
cat("Laptop:", laptop_nc, "-", classify_product(laptop_nc), "\n")
cat("Printer:", printer_nc, "-", classify_product(printer_nc), "\n")
# Question 7: Graphical Analysis, Exporting and Recommendations
# (i) Bar chart
barplot(product_data$net_contrib,
names.arg = product_data$product,
main = "Net Contribution by Product",
xlab = "Product",
ylab = "Net Contribution (LKR)",
col = "steelblue",
las = 2)
# (ii) Histogram
hist(product_data$net_contrib,
main = "Distribution of Net Contribution",
xlab = "Net Contribution (LKR)",
col = "orange")
# (iii) Scatter plot
plot(product_data$ad_cost, product_data$net_contrib,
main = "Advertising Cost vs Net Contribution",
xlab = "Advertising Cost (LKR)",
ylab = "Net Contribution (LKR)",
pch = 19,
col = "darkgreen")
text(product_data$ad_cost, product_data$net_contrib,
labels = product_data$product,
pos = 3,
cex = 0.7)
# (iv) Export data to CSV
write.csv(product_data, "product_performance.csv", row.names = FALSE)
To embed this project on your website, copy the following code and paste it into your website's HTML: