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
| 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")
