# 1. Daten laden (Standard CSV mit Komma als Trenner)
preise_raw <- read_csv("preise.csv")

# 2. Datentypen korrigieren
preise_clean <- preise_raw %>%
  mutate(datum = as.Date(datum)) %>%
  # Duplikate entfernen (gleicher Tag, gleiches Produkt, gleicher Preis)
  distinct() %>%
  arrange(datum)

# 3. Fokus-Auswahl: Produkte mit der höchsten Datenpunktdichte finden
top_produkte <- preise_clean %>%
  count(produkt) %>%
  slice_max(n, n = 5) %>%
  pull(produkt)

# Daten für die Grafik filtern
plot_data <- preise_clean %>%
  filter(produkt %in% top_produkte)

head(plot_data)
## # A tibble: 6 × 3
##   datum      produkt            preis
##   <date>     <chr>              <dbl>
## 1 2025-02-13 Ananas              1.62
## 2 2025-02-13 Ananas              1.74
## 3 2025-02-13 Delikatess Lyoner   0.99
## 4 2025-02-13 Petersilie kraus    0.79
## 5 2025-02-13 Roggenvollkornbrot  0.79
## 6 2025-02-13 Zwiebeln gelb       1.59
ggplot(plot_data, aes(x = datum, y = preis, color = produkt, group = produkt)) +
  # Linien mit Stufen-Funktion (da Preise oft fix bleiben bis zur nächsten Änderung)
  geom_step(size = 1) +
  geom_point(alpha = 0.5) +
  # Facettierung, um jedes Produkt in einem eigenen kleinen Gitter zu sehen
  facet_wrap(~ produkt, scales = "free_y", ncol = 2) +
  theme_minimal() +
  labs(title = "Preisentwicklung identischer Produkte",
       subtitle = "Zeitlicher Verlauf der meistdokumentierten Artikel (Stufendiagramm)",
       x = "Datum",
       y = "Preis in Euro",
       caption = "Datenquelle: preise.csv") +
  theme(legend.position = "none",
        strip.text = element_text(face = "bold", size = 10),
        axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_x_date(date_labels = "%b %y", date_breaks = "3 months")

preise_clean %>%
  filter(produkt %in% top_produkte) %>%
  group_by(produkt) %>%
  summarise(
    Startpreis = first(preis, order_by = datum),
    Endpreis = last(preis, order_by = datum),
    Differenz = Endpreis - Startpreis,
    Prozent = (Endpreis - Startpreis) / Startpreis * 100
  ) %>%
  knitr::kable(digits = 2, caption = "Preisänderung in Prozent")
Preisänderung in Prozent
produkt Startpreis Endpreis Differenz Prozent
Ananas 1.62 1.97 0.35 21.60
Delikatess Lyoner 0.99 0.99 0.00 0.00
Paprika rot, spitz 1.99 1.89 -0.10 -5.03
Petersilie kraus 0.79 0.89 0.10 12.66
Rettertüte 3.00 3.00 0.00 0.00
Roggenvollkornbrot 0.79 0.79 0.00 0.00
Zitronen 1.29 1.39 0.10 7.75
Zwiebeln gelb 1.59 1.59 0.00 0.00