preise <- read_csv("preise.csv") %>%
  mutate(datum = as.Date(datum))

# Berechnung der Dynamik-Metriken pro Produkt
dynamik_check <- preise %>%
  group_by(produkt) %>%
  summarise(
    messpunkte = n(),
    min_preis = min(preis),
    max_preis = max(preis),
    range = max_preis - min_preis,
    prozent_diff = (range / min_preis) * 100
  ) %>%
  filter(messpunkte > 1) %>% # Nur Produkte mit mindestens zwei Messwerten
  arrange(desc(range))

# Anzeige der Top 10 dynamischsten Produkte
knitr::kable(head(dynamik_check, 10), digits = 2, caption = "Produkte mit der größten Preisspanne")
Produkte mit der größten Preisspanne
produkt messpunkte min_preis max_preis range prozent_diff
Kiwi 6 0.39 2.99 2.60 666.67
Zwiebeln gelb 8 1.39 2.69 1.30 93.53
Hähn.-Geschnetzeltes 4 3.79 4.99 1.20 31.66
Gorgonzola dolce 5 1.89 2.99 1.10 58.20
Zitronen 750g 2 0.99 2.09 1.10 111.11
Gummiringe 2 0.99 2.00 1.01 102.02
Hackfleisch gemischt 5 3.89 4.89 1.00 25.71
Blumenkohl 7 1.29 2.19 0.90 69.77
Zwiebeln rot 2 1.09 1.99 0.90 82.57
Bioland Speisek 2 2.19 2.99 0.80 36.53
top_dynamisch <- dynamik_check %>% slice_max(range, n = 8) %>% pull(produkt)

plot_data <- preise %>%
  filter(produkt %in% top_dynamisch)

ggplot(plot_data, aes(x = datum, y = preis, color = produkt)) +
  geom_step(size = 1) +
  geom_point() +
  facet_wrap(~ produkt, scales = "free_y", ncol = 2) +
  theme_minimal() +
  labs(title = "Top 8 Produkte mit der höchsten Preisdynamik",
       subtitle = "Skalierung der Y-Achse ist individuell (free_y), um Trends besser zu sehen",
       x = "Datum",
       y = "Preis in Euro") +
  theme(legend.position = "none")

preise %>%
  mutate(monat = floor_date(datum, "month")) %>%
  group_by(monat) %>%
  summarise(anzahl_preispunkte = n()) %>%
  ggplot(aes(x = monat, y = anzahl_preispunkte)) +
  geom_col(fill = "steelblue") +
  theme_minimal() +
  labs(title = "Datendichte über die Zeit",
       x = "Monat",
       y = "Anzahl erfasster Preise")