Data Preparation (MANDATORY)

ACTION REQUIRED: This block includes DUMMY DATA to prevent the “object not found” error. For your final report, you MUST replace the dummy data creation (set.seed to raw_sales <- dummy_raw_sales) with your actual data loading and assignment to the raw_sales variable.

# 1. LOAD YOUR RAW DATA HERE (e.g., replace raw_sales with your loaded data)
# Example: raw_sales <- read.csv("path/to/your/sales_data.csv")
# raw_sales$OrderDate <- as.Date(raw_sales$OrderDate)

# --- DUMMY DATA CREATION (DELETE THIS SECTION FOR FINAL RUN) ---
set.seed(42)
dates <- seq(as.Date("2011-01-01"), as.Date("2016-12-31"), by="day")
categories <- c(road_categories, mountain_categories)
dummy_raw_sales <- tibble(
  OrderDate = sample(dates, 10000, replace = TRUE),
  Category = sample(categories, 10000, replace = TRUE),
  Revenue = runif(10000, 1000, 100000) * (as.numeric(format(OrderDate, "%m")) %in% 6:8)
)
raw_sales <- dummy_raw_sales # Assign dummy data to raw_sales
# ----------------------------------------------------------------

# --- Create required aggregated data frames ---

# A. Monthly Category Sales (Used for smoothed plots)
monthly_category_sales <- raw_sales %>%
  mutate(Month = floor_date(OrderDate, "month")) %>%
  group_by(Month, Category) %>%
  summarise(Revenue = sum(Revenue)) %>%
  ungroup()

# B. Quarterly Category Sales (Used for raw quarterly plots)
quarterly_category_sales <- raw_sales %>%
  mutate(Quarter = floor_date(OrderDate, "quarter")) %>%
  group_by(Quarter, Category) %>%
  summarise(Revenue = sum(Revenue)) %>%
  ungroup()

# C. Total Sales Data Frames
monthly_sales <- monthly_category_sales %>%
  group_by(Month) %>%
  summarise(Revenue = sum(Revenue))

quarterly_sales <- quarterly_category_sales %>%
  group_by(Quarter) %>%
  summarise(Revenue = sum(Revenue))

# D. Weekly data frames
weekly_category_sales <- raw_sales %>%
  mutate(Week = floor_date(OrderDate, "week")) %>%
  group_by(Week, Category) %>%
  summarise(Revenue = sum(Revenue)) %>%
  ungroup()

weekly_sales <- weekly_category_sales %>%
  group_by(Week) %>%
  summarise(Revenue = sum(Revenue))