Tidy Tuesday Valentines Day Analysis

Author

Ariel Dottin

Published

April 28, 2026

Introduction

For this week’s TidyTuesday, I explored the Valentine’s Day spending dataset…

# reshape-data}
historical_long <- historical_spending |>
  pivot_longer(
    cols = c(Candy, Flowers, Jewelry, GreetingCards, EveningOut, Clothing, GiftCards),
    names_to = "Category",
    values_to = "Spending"
  )
valentine_colors <- c(
"Candy" = "#FF69B4",
  "Flowers" = "#6A1B2A",
  "Jewelry" = "#D9B382",
  "GreetingCards" = "#BF00FF",
  "EveningOut" = "#E7A6A8",
  "Clothing" = "#D32F2F",
  "GiftCards" = "#F2D4C9"
)

ggplot(historical_long, aes(x = Year, y = Spending, color = Category)) +
  geom_line(linewidth = 1.3) +
  scale_color_manual(values = valentine_colors) +
  scale_x_continuous(
    breaks = seq(2010, 2022, 1),
    labels = seq(2010, 2022, 1)
  ) +
  labs(
    title = "Valentine’s Day Spending Trends (2010–2022)",
    subtitle = "Average spending per person across major gift categories",
    x = "Year",
    y = "Average Spending (USD)",
    color = "Gift Category"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold"),
    legend.position = "bottom",
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

Jewelry consistently has the highest average spending, with a noticeable increase after 2018. Categories like candy, flowers, and greeting cards remain relatively stable, while Evening Out shows a steady upward trend. Overall, the plot highlights how different gift categories have changed over time.

age_colors <- c(
  "18-24" = "#F4C2C2",
  "25-34" = "#E7A6A1",
  "35-44" = "#D9B382",
  "45-54" = "#8E3A59",
  "55-64" = "#6A1B2A",
  "65+"     = "#F2D4C9"
)
ggplot(gifts_age, aes(x = Age, y = SpendingCelebrating, fill = Age)) +
  geom_col(width = 0.7) +
  scale_fill_manual(values = age_colors) +
  labs(
    title = "Valentine’s Day Spending by Age Group",
    subtitle = "Average Valentine’s Day spending by age group",
    x = "Age Group",
    y = "Average Spending (USD)"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(face = "bold"),
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

Spending increases with age, with the 35–44 and 45–54 groups spending the most on Valentine’s Day. Younger adults spend noticeably less, likely due to income differences or different gifting habits.