# 1. Daten laden (Erwartet 3 Spalten: Datum;Zeit;Wert)
raw_data <- read.csv2("Blatt 3-Tabelle 1.csv",
header = FALSE,
sep = ";",
stringsAsFactors = FALSE)
# 2. Spaltennamen explizit zuweisen
# Wir nehmen die ersten 3 Spalten an
colnames(raw_data)[1:3] <- c("Datum", "Zeit", "mg_dL")
# 3. Datentransformation (ETL)
bz_clean <- raw_data %>%
# Zeit-Format vereinheitlichen (Punkt zu Doppelpunkt korrigieren)
mutate(Zeit = str_replace_all(as.character(Zeit), "\\.", ":")) %>%
# Kombinierten Zeitstempel erstellen
mutate(Timestamp = dmy_hm(paste(Datum, Zeit))) %>%
# Numerische Konvertierung (Komma zu Punkt)
mutate(mg_dL = as.numeric(str_replace(as.character(mg_dL), ",", "."))) %>%
# Validierung
filter(!is.na(Timestamp), !is.na(mg_dL)) %>%
arrange(Timestamp)
# Kurze Vorschau der bereinigten Daten
head(bz_clean)
## Datum Zeit mg_dL Timestamp
## 1 1.1.2026 00:00 108.90 2026-01-01 00:00:00
## 2 1.1.2026 01:00 79.92 2026-01-01 01:00:00
## 3 1.1.2026 02:00 122.40 2026-01-01 02:00:00
## 4 1.1.2026 03:00 82.62 2026-01-01 03:00:00
## 5 1.1.2026 04:00 80.10 2026-01-01 04:00:00
## 6 1.1.2026 05:00 92.16 2026-01-01 05:00:00
ggplot(bz_clean, aes(x = Timestamp, y = mg_dL)) +
# Zielbereich (80-140 mg/dL)
annotate("rect", xmin = min(bz_clean$Timestamp), xmax = max(bz_clean$Timestamp),
ymin = 80, ymax = 140, alpha = 0.1, fill = "green") +
# Linien und Punkte
geom_line(color = "steelblue", size = 0.7) +
geom_point(color = "darkblue", size = 1.5, alpha = 0.6) +
# Glättungslinie zur Trend-Erkennung (optional)
geom_smooth(method = "loess", color = "red", linetype = "dotted", se = FALSE, size = 0.5) +
theme_minimal() +
labs(title = "Blutzuckerverlauf (mg/dL)",
subtitle = "Rote gepunktete Linie zeigt den geglätteten Trend",
x = "Zeit",
y = "Blutzucker [mg/dL]") +
scale_x_datetime(date_labels = "%d.%m. %H:%M", date_breaks = "12 hours") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Statistische Zusammenfassung der mg/dL Werte
summary(bz_clean$mg_dL)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 91.8 109.1 108.0 124.3 180.0
# Berechnung der Standardabweichung als Maß für die Variabilität
cat("Standardabweichung:", sd(bz_clean$mg_dL, na.rm = TRUE))
## Standardabweichung: 37.39987