3 min read

Wetterdaten des DWD analysieren - 2026

Dieses Skript wurde mit Hilfe von KI erstellt.

Load packages

library(tidyverse)

Load data

Data Source: Deutscher Wetterdienst (DWD), Climate Data Center, opendata.dwd.de, License: CC BY 4.0

klimakenntage_url <- "https://raw.githubusercontent.com/sebastiansauer/data_se/refs/heads/master/content/post/2026-08-14-wetterdaten-des-dwd-aufbereiten/klimakenntage_bundesland_jahr.csv"

Klimakenntage

# Frost-/Sommer-/Eistage, Tropennaechte und Starkregentage liegen beim DWD
# erst ab 1951 vor; nur "trocken_monate" (abgeleitet aus den Monatsnieder-
# schlaegen) reicht weiter zurueck. Auf 1951+ filtern, damit alle Indikatoren
# in den Facet-Plots dieselbe x-Achse (Jahr) haben.
klimakenntage <- read_csv(klimakenntage_url) |>
  filter(Jahr >= 1951)

Data Dictionary: DWD Jahreswerte – Klimakenntage

Quelle: klimakenntage_bundesland_jahr.csv

SpalteTypBeschreibung
JahrintegerKalenderjahr der Beobachtung
BundeslandcharacterDeutsches Bundesland (regionaler Mittelwert)
WertdoubleAnzahl der Tage im jeweiligen Jahr, die das Kriterium des Indikators erfüllen
IndikatorcharacterKenntag-Typ, siehe Codebuch unten

Codebuch Indikator

Wert in IndikatorDWD-KürzelDeutsche BezeichnungDefinition
frost_daysFDFrosttageTmin < 0 °C
ice_daysIDEistageTmax < 0 °C
summer_daysSUSommertageTmax ≥ 25 °C
hot_daysHeiße TageTmax ≥ 30 °C
tropical_nightsTRTropennächteTmin ≥ 20 °C
precipGE10mm_daysStarkregentage (≥10 mm)Tagesniederschlag ≥ 10 mm
precipGE20mm_daysStarkregentage (≥20 mm)Tagesniederschlag ≥ 20 mm
trocken_monateTrockenmonateAnzahl Monate/Jahr mit Niederschlag unter dem 20%-Quantil des Bundeslands

Hinweis: Tmin/Tmax beziehen sich auf die Tagesminimum-/Tagesmaximumtemperatur der Lufttemperatur in 2 m Höhe. Die Werte sind regionale Jahresmittel je Bundesland, wie vom DWD (Climate Data Center, regional_averages_DE) bereitgestellt.

Auswertung Frosttage

klimakenntage |> 
  group_by(Indikator, Jahr) |> 
  summarise(Wert_avg = mean(Wert, na.rm = TRUE)) |> 
  ungroup() |> 
  filter(Indikator == "frost_days") |> 
  ggplot(aes(x = Jahr, y = Wert_avg)) +
  geom_line() +
  geom_smooth()

Auswertung Tropennächte

klimakenntage |> 
  group_by(Indikator, Jahr) |> 
  summarise(Wert_avg = mean(Wert)) |> 
  ungroup() |> 
  filter(Indikator == "tropical_nights") |>
  ggplot(aes(x = Jahr, y = Wert_avg)) +
  geom_line() +
  geom_smooth()

Auswertung alle Indikatoren

klimakenntage |>
  group_by(Indikator, Jahr) |>
  summarise(Wert_avg = mean(Wert, na.rm = TRUE)) |>
  ungroup() |>
  ggplot(aes(x = Jahr, y = Wert_avg, color = Indikator)) +
  geom_line() +
  geom_smooth() +
  facet_wrap(~ Indikator, scales = "free_y") +
  labs(x = "Jahr", y = "Mittlere Anzahl Tage") +
  theme(legend.position = "none")

Auswertung pro Bundesland und Indikator

klimakenntage |>
  ggplot(aes(x = Jahr, y = Wert, color = Bundesland)) +
  geom_line() +
  facet_wrap(~ Indikator, scales = "free_y") +
  labs(x = "Jahr", y = "Anzahl Tage")

Auswertung für Deutschland insgesamt

klimakenntage |>
  group_by(Indikator, Jahr) |>
  summarise(Wert_avg = mean(Wert, na.rm = TRUE)) |>
  ungroup() |>
  ggplot(aes(x = Jahr, y = Wert_avg)) +
  geom_line() +
  geom_smooth() +
  facet_wrap(~ Indikator, scales = "free_y") +
  labs(x = "Jahr", y = "Mittlere Anzahl Tage (Deutschland)")