# Sparquote berechnen
einkaeufe <- einkaeufe %>% 
  mutate(Sparquote = round((Ersparnis / (Brutto + Ersparnis)) * 100, 2))
# Jetzt funktioniert datatable(), da einkaeufe existiert
datatable(einkaeufe, options = list(pageLength = 10)) %>%
  formatRound(c('Brutto', 'Ersparnis', 'Sparquote'), 2)
p <- ggplot(einkaeufe, aes(x = Datum, y = Brutto, text = paste("Beleg Nr:", Nr, "<br>Sparquote:", Sparquote, "%"))) +
  geom_line(color = "#0050aa", size = 0.5) +
  geom_point(aes(size = Ersparnis), color = "#ffcc00") +
  theme_minimal() +
  labs(title = "Einkaufssummen & Sparerfolge", y = "Euro", x = "")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggplotly(p, tooltip = "text")
ggplot(einkaeufe, aes(x = reorder(as.character(Nr), Sparquote), y = Sparquote)) +
  geom_bar(stat = "identity", fill = "#00b140") +
  coord_flip() +
  theme_minimal() +
  labs(title = "Sparquote pro Beleg (%)", x = "Beleg Nummer", y = "Prozent gespart")

ggplot(einkaeufe, aes(x = Datum, y = Brutto)) +
  geom_line(color = "#0050aa", size = 1) +
  geom_point(aes(size = Ersparnis), color = "#ffcc00") +
  theme_minimal() +
  labs(title = "Ausgaben-Verlauf bei Lidl",
       subtitle = "Punktgröße repräsentiert die Ersparnis durch Lidl Plus",
       y = "Summe (EUR)", x = "Monat")

einkaeufe <- einkaeufe %>% mutate(Sparquote = (Ersparnis / (Brutto + Ersparnis)) * 100)

ggplot(einkaeufe, aes(x = Nr, y = Sparquote)) +
  geom_bar(stat = "identity", fill = "#00b140") +
  coord_flip() +
  theme_minimal() +
  labs(title = "Sparquote pro Beleg (%)", x = "Beleg Nummer", y = "Prozent gespart")

library(plotly)
p <- ggplot(einkaeufe, aes(x = Datum, y = Brutto, text = paste("Beleg Nr:", Nr))) +
  geom_line(color = "#0050aa") +
  geom_point(aes(size = Ersparnis), color = "#ffcc00") +
  theme_minimal()

ggplotly(p) # Macht die Grafik interaktiv!

Analyse der Preisschwankungen

Einige Produkte weisen aufgrund von Saisonalität oder Aktionen starke Schwankungen auf.

# Wir nehmen an, du hast eine Spalte 'Retter' in der CSV (0 oder 1)
# Falls nicht vorhanden, erstellen wir hier eine Demo-Zählung basierend auf deinen Daten
# (In deiner CSV kannst du eine Spalte 'Retter' hinzufügen)

if(!"Retter" %in% colnames(einkaeufe)) {
  einkaeufe$Retter <- sample(c(0, 1), nrow(einkaeufe), replace = TRUE) # Platzhalter
}

retter_stats <- einkaeufe %>% summarize(Anzahl = sum(Retter), Ersparnis_geschätzt = sum(Retter) * 9)
datatable(einkaeufe, options = list(pageLength = 10))
if (!"Retter" %in% colnames(einkaeufe)) {
  einkaeufe$Retter <- sample(c(0, 1), nrow(einkaeufe), replace = TRUE)
}

retter_stats <- einkaeufe %>%
  summarize(
    Anzahl = sum(Retter),
    Ersparnis_geschaetzt = sum(Retter) * 9
  )

retter_stats
##   Anzahl Ersparnis_geschaetzt
## 1     11                   99
# Sparquote berechnen
einkaeufe <- einkaeufe %>% 
  mutate(Sparquote = round((Ersparnis / (Brutto + Ersparnis)) * 100, 2))
# Jetzt funktioniert datatable(), da einkaeufe existiert
datatable(einkaeufe, options = list(pageLength = 10)) %>%
  formatRound(c('Brutto', 'Ersparnis', 'Sparquote'), 2)