# 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
| 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 |