# 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)
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)
# (ii) Combine vectors into a data frame
product_data <- data.frame (
product,
unit_price,
units_sold,
unit_cost,
advertising_cost,
orders,
returned_orders
)
# (iii) Inspect the data frame
cat("First five records:\n")
print(head(product_data, 5))
cat("\nNumber of rows and columns:\n")
print(dim(product_data))
cat("Rows: ", nrow(product_data), ", Columns: ", ncol(product_data), "\n", sep = "")
cat("\nVariable names:\n")
print(names(product_data))
cat("\nStructure of the data frame:\n")
str(product_data)
# Question 2: Financial Performance Calculations
# (i) Sales Revenue
product_data$revenue <- product_data$unit_price * product_data$units_sold
# (ii) Cost of Goods sold
product_data$cogs <- product_data$unit_cost * product_data$units_sold
# (iii) Gross Profit
product_data$gross_profit <- product_data$revenue - product_data$cogs
# (iv) Net Contribution
product_data$net_contribution <- product_data$gross_profit - product_data$advertising_cost
# (v) Profit Margin
product_data$profit_margin <- round (product_data$net_contribution / product_data$revenue * 100,2)
# (vi) Return Rate
product_data$return_rate <- round (product_data$returned_orders / product_data$orders * 100,2)
# Display Updated Data frame
cat("\nUpdated data frame:\n")
print(product_data)
# Question 3: Descriptive analysis
# (i) Total Financial Performance
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_contribution), "\n")
# (ii) Mean and Median Net Contribution
cat("Mean net contribution:", mean(product_data$net_contribution), "\n")
cat("Median net contribution:", median(product_data$net_contribution), "\n")
# (iii) Highest and Lowest Net Contribution
cat("Highest net contribution:", max(product_data$net_contribution), "from", product_data$product[which.max(product_data$net_contribution)], "\n")
cat("Lowest net contribution:", min(product_data$net_contribution), "from", product_data$product[which.min(product_data$net_contribution)], "\n")
# (iv) Maximum and Minimum Return Rates
cat("Maximum return rate:", max(product_data$return_rate), "\n")
cat("Minimum return rate:", min(product_data$return_rate), "\n")
# (v) Sort Net Contributions in Ascending Order Net contribution Range
cat("Sorted net contributions (ascending):\n")
print(sort(product_data$net_contribution))
cat("Net contribution range:", diff(range(product_data$net_contribution)), "\n")
# Question 4: Conditional Statements and Business Classification
# Create empty vectors
profitability <- character(nrow(product_data))
return_risk <- character(nrow(product_data))
# (i) Product Profitability Classification
for (i in 1:nrow(product_data)) {
if (product_data$net_contribution[i] >= 750000) {
profitability [i] <- "High Performer"
} else if (product_data$net_contribution[i] >= 400000) {
profitability [i] <- "Moderate Performer"
} else {
profitability [i] <- "Low Performer"
}
}
# (ii) Product Return-Risk Classification
for (i in 1:nrow(product_data)) {
if (product_data$return_rate[i] > 5) {
return_risk [i] <- "High Return Risk"
} else {
return_risk [i] <- "Acceptable Return Rate"
}
}
# (iii) Add classifications to the data frame
product_data$profitability <-profitability
product_data$return_risk <-return_risk
# Display classification report
classification_report <-product_data[, c(
"product",
"net_contribution",
"profit_margin",
"return_rate",
"profitability",
"return_risk"
)]
print(classification_report)
# Question 5: Loops and Automated Business Reporting
# (i) Display each product's revenue and net contribution
for (i in 1:nrow(product_data)) {
cat("Product:", product_data$product[i], "\n")
cat("Sales Revenue:", product_data$revenue[i], "\n")
cat("Net Contribution:",
product_data$net_contribution[i], "\n")
cat("--------------------------\n")
}
# (ii) Count products in each profitability category
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 Performer") {
moderate_count <- moderate_count + 1
} else {
low_count <- low_count + 1
}
}
cat("High Performers:", high_count, "\n")
cat("Moderate Performers:", moderate_count, "\n")
cat("Low Performers:", low_count, "\n")
# (iii) Identify products requiring management attention
i <- 1
attention_count <- 0
cat("Products Requiring Management Attention:\n")
while (i <= nrow(product_data)) {
if (product_data$net_contribution[i] < 400000 ||
product_data$return_rate[i] > 5) {
cat(product_data$product[i], "\n")
attention_count <- attention_count + 1
}
i <- i + 1
}
# (iv) Display total number requiring attention
cat("Total Products Requiring Management Attention:",
attention_count, "\n")
# Question 6: User-Defined Functions
# (i) Function to calculate net contribution
calculate_contribution <- function(unit_price, units_sold, unit_cost, advertising_cost) {
revenue <- unit_price * units_sold
cogs <- unit_cost * units_sold
gross_profit <- revenue - cogs
net_contribution <- gross_profit - advertising_cost
return(net_contribution)
}
# (ii) Function to 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 using two products
# Test 1: Smartphone
smartphone_contribution <- calculate_contribution(
95000, 80, 76000, 220000
)
smartphone <- classify_product(
smartphone_contribution
)
cat("Product: Smartphone\n")
cat("Net Contribution:", smartphone_contribution, "\n")
cat("Category:", smartphone, "\n\n")
# Test 2: Printer
printer_contribution <- calculate_contribution(
42000, 38, 33000, 45000
)
printer <- classify_product(
printer_contribution
)
cat("Product: Printer\n")
cat("Net Contribution:", printer_contribution, "\n")
cat("Category:", printer, "\n")
# (i): Bar Chart
barplot(product_data$net_contribution,
names.arg = product_data$product,
main = "Net Contribution by Product",
xlab = "Products",
ylab = "Net Contribution (LKR)",
col = "skyblue",
las = 2,
cex.names = 0.8
)
#(ii): Histogram
hist(product_data$net_contribution,
main = "Distribution of Net Contribution",
xlab = "Net Contribution (LKR)",
ylab = "Number of Products",
col = "lightgreen",
border = "black"
)
# (iii): Scatter Plot
plot(product_data$advertising_cost,
product_data$net_contribution,
main = "Advertising Cost vs Net Contribution",
xlab = "Advertising Cost (LKR)",
ylab = "Net Contribution (LKR)",
col = "blue",
pch = 19
)
# Save Bar Chart
png("bar_chart.png", width = 1200, height = 800)
barplot(product_data$net_contribution,
names.arg = product_data$product,
main = "Net Contribution by Product",
xlab = "Products",
ylab = "Net Contribution (LKR)",
col = "skyblue",
las = 2,
cex.names = 0.8)
dev.off()
# Save Histogram
png("histogram.png", width = 1200, height = 800)
hist(product_data$net_contribution,
main = "Distribution of Net Contribution",
xlab = "Net Contribution (LKR)",
ylab = "Number of Products",
col = "lightgreen",
border = "black")
dev.off()
# Save Scatter Plot
png("scatter_plot.png", width = 1200, height = 800)
plot(product_data$advertising_cost,
product_data$net_contribution,
main = "Advertising Cost vs Net Contribution",
xlab = "Advertising Cost (LKR)",
ylab = "Net Contribution (LKR)",
col = "blue",
pch = 19)
dev.off()
# (iv): CSV Export
write.csv(
product_data,
file = "product_performance.csv",
row.names = FALSE
)
cat("CSV file exported successfully.\n")
To embed this project on your website, copy the following code and paste it into your website's HTML: