library(flexdashboard)
library(tidyverse)
library(lubridate)
library(plotly)
library(scales)
# Load and preprocess the data
superstore <- read_csv("superstore.csv")
superstore <- superstore %>%
mutate(`Order Date` = mdy(`Order Date`),
Year = year(`Order Date`))
# Total Sales
valueBox(dollar(sum(superstore$Sales, na.rm = TRUE)), icon = "fa-dollar-sign", color = "primary")
$2,297,201
# Total Profit
valueBox(dollar(sum(superstore$Profit, na.rm = TRUE)), icon = "fa-chart-line", color = "success")
$286,397
# Total Quantity
valueBox(sum(superstore$Quantity, na.rm = TRUE), icon = "fa-box", color = "info")
37873
# Total Orders
valueBox(length(unique(superstore$`Order ID`)), icon = "fa-shopping-cart", color = "warning")
5009
# Grouping by Year and Segment
segment_sales <- superstore %>%
group_by(Year, Segment) %>%
summarise(Sales = sum(Sales, na.rm = TRUE), .groups = "drop")
# Plotting Sales by Segment
plot_ly(segment_sales, x = ~Year, y = ~Sales, color = ~Segment, type = 'scatter', mode = 'lines+markers') %>%
layout(title = "Sales by Segment Over Time",
yaxis = list(title = "Sales"), xaxis = list(title = "Year"))
# Grouping by Year and Category
category_sales <- superstore %>%
group_by(Year, Category) %>%
summarise(Sales = sum(Sales, na.rm = TRUE), .groups = "drop")
# Plotting Sales by Product Category
plot_ly(category_sales, x = ~Year, y = ~Sales, color = ~Category, type = 'bar') %>%
layout(title = "Sales by Product Category Over Time",
barmode = "group",
yaxis = list(title = "Sales"), xaxis = list(title = "Year"))