Maximalwerte im Tagesgang je Stunde

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Luga86
Beiträge: 5
Registriert: Fr Jul 08, 2022 12:25 pm

Maximalwerte im Tagesgang je Stunde

Beitrag von Luga86 »

wetter.txt
(4.55 KiB) 63-mal heruntergeladen
Liebes Forum,
ich möchte den Temperaturtagesgang darstellen und gleichzeitig die Luftfeuchte als Linie in einer Grafik zusammen darstellen. Geht das mit ggplt auf der linken bzw. rechten y Achse?
Ich möchte weiterhin die Maximalwerte je Stunde filtern und wissen, zu welchem Zeitpunkt diese aufgetreten sind. Mit meiner Methode bekomme ich nur die Werte, aber nicht die Info wann die aufgetreten sind. Kann ich die Uhrzeit noch anfügen?
Wie kann ich mir eine Stundenspalte erstellen - diese hier hat mir Excel eingerichtet....
Danke schon einmal für Eure Hilfe.
Das ist mein Code:

Code: Alles auswählen


wetter.data <- read.table("wetter.txt", header=TRUE, 
                          sep="\t", na.strings="NA", dec=",", 
                          strip.white=TRUE)
wetter.data$stunde <- as.factor(wetter.data$stunde)
wetter.data$date <- as.POSIXct(wetter.data$date, format = '%d.%m.%y')
wetter.data$dt <- as.POSIXct(paste0(wetter.data$date,' ', wetter.data$time), 
                             format = "%Y-%m-%d %H:%M")
-------
ggplot(wetter.data, aes(x=dt, y=rh))+
  geom_point() +
  geom_line()
facet_grid(~stunde)

plot(wetter.data$dt~wetter.data$LT, type="l", col="red",ylim=c(0,50))
lines(wetter.data$dt,wetter.data$rh, type="l", col="blue",ylim=c(0,100))

df<-wetter.data[,list(min=min(LT),
                      mean=mean(LT), 
                      max=max(LT)), by = stunde]

bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von bigben »

Hallo Liga,
Ich kann gerade keine Daten lesen oder was programmieren. Zum Thema Temperatur und Luftfeuchtigkeit gleichzeitig würde ich Dich gerne auf einen vorhandenen Strang hinweisen: viewtopic.php?p=17188
Hilft das?
LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luga86
Beiträge: 5
Registriert: Fr Jul 08, 2022 12:25 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Luga86 »

Hallo Bernhard,
hab vielen Dank. Für den Punkt "Darstellung" werde ich da fündig werden und bin auch schon einen Schritt weiter.
Das Herausfiltern der maximalen Werte je Zeiteinheit (z.B. Stunde) ist meine größere Herausforderung, hier bin ich noch nicht weitergekommen....
Grüße und Danke für Eure Hilfe.
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von bigben »

Hallo Luga,

wie geschrieben kann ich derzeit nicht coden. Es sieht aber so aus, als würden Dir die Funktionen which.min() und which.max() fehlen, um die genaue Uhrzeit innerhalb der Stunde nachzuschlagen.

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luga86
Beiträge: 5
Registriert: Fr Jul 08, 2022 12:25 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Luga86 »

Hallo bigben,
hab vielen Dank.
Ich habe mich erfolglos versucht und mit "whichmax" nur den Maximalwert des gesamten Datensatzes erhalten. Wie ergänze ich den code, damit ich den Maximalwert je Tag erhalte?
Das ist mein code/Ergebnis:

> wetter.data
date time rh LT
1 29.06.22 0:00 72.1 19.0
2 29.06.22 0:10 72.9 18.8
......

> wetter.data[which.max(wetter.data$LT),]

date time rh LT
244 30.06.22 16:30 46.4 29.1

Ich habe Werte von mehreren Tagen und möchte den Maximalwert je Tag filtern.
Ich habe es mit by = date etc. versucht. Könnt Ihr helfen?

Hier ist der Code:

Code: Alles auswählen

wetter.data <- read.table("wetter.txt", header=TRUE, 
                          sep="\t", na.strings="NA", dec=",", 
                          strip.white=TRUE)
wetter.data[which.max(wetter.data$LT),]

wetter.data[which.max(wetter.data$LT,by=date),]
                          
                          
Vielen Dank für Eure Hilfe.
wetter.txt
(16.66 KiB) 39-mal heruntergeladen
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Athomas »

Luga86
Beiträge: 5
Registriert: Fr Jul 08, 2022 12:25 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Luga86 »

Hallo Athomas,
hab vielen Dank. Ich bin dort auf meinen Irrwegen tatsächlich auch schon gewesen und alle Varianten funktionieren.
Ich bräuchte aber nicht nur den Maximalwert, sondern alle erfassten Werte zu diesem Zeitpunkt, weil ich z.B. diese mit weiteren auf Korrelation prüfen möchte.
Ich habe den Datensatz tagesweise aufgeteilt und dann jeweils das max gefiltert. So ist mein Ergebnis, aber ich denke, dass es auch schneller geht.

Code: Alles auswählen

> wetter.data_29<-wetter.data[wetter.data$date == as.POSIXct("2022-06-29"),]
> wetter.data_30<-wetter.data[wetter.data$date == as.POSIXct("2022-06-30"),]
> wetter.data_01<-wetter.data[wetter.data$date == as.POSIXct("2022-07-01"),]
> wetter.data_02<-wetter.data[wetter.data$date == as.POSIXct("2022-07-02"),]

> wetter.data_29[which.max(wetter.data_29$LT),]
         date  time   rh   LT                  dt
72 2022-06-29 11:50 69.9 22.6 2022-06-29 11:50:00
> wetter.data_30[which.max(wetter.data_30$LT),]
          date  time   rh   LT                  dt
244 2022-06-30 16:30 46.4 29.1 2022-06-30 16:30:00
> wetter.data_01[which.max(wetter.data_01$LT),]
          date time   rh LT                  dt
333 2022-07-01 7:20 66.7 24 2022-07-01 07:20:00
> wetter.data_02[which.max(wetter.data_02$LT),]
          date  time   rh   LT                  dt
534 2022-07-02 16:50 27.8 26.8 2022-07-02 16:50:00
Wie wäre solch ein Ergebnis möglich?
date time rh LT dt
72 2022-06-29 11:50 69.9 22.6 2022-06-29 11:50:00
244 2022-06-30 16:30 46.4 29.1 2022-06-30 16:30:00
333 2022-07-01 7:20 66.7 24 2022-07-01 07:20:00
534 2022-07-02 16:50 27.8 26.8 2022-07-02 16:50:00

Hab vielen Dank.
Grüße
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Athomas »

Diese (Teil-) Lösungen könnte man leicht komplettieren, indem man die Ergebnisdatei über Tag und (Maximal-) Wert an die ursprünglichen Daten dranjoint. Ich bin aber ganz optimistisch, dass es auch kompakter geht...

Zu dem Fall, dass der Maximalwert an einem Tag mehrfach auftaucht, hast Du noch nichts gesagt!?
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Athomas »

Code: Alles auswählen

library(data.table)
DT <- fread("http://forum.r-statistik.de/download/file.php?id=1771", dec=",")
DT[  , Datum:=as.Date(date, format="%d.%m.%y")]
DT[  , maxLT:=max(LT), by=Datum]
Teil1 <- DT[LT==maxLT, ]
Teil2 <- Teil1[!duplicated(Teil1$Datum)][  , !"maxLT"]
Luga86
Beiträge: 5
Registriert: Fr Jul 08, 2022 12:25 pm

Re: Maximalwerte im Tagesgang je Stunde

Beitrag von Luga86 »

Hallo Athomas,
hab vielen Dank. Bei meinem vorgehen hatte ich immer nur einen Wert je Tag (den jeweils zeitlich ersten) erhalten und bei Deiner Variante "Teil2" ist das ähnlich. Hab vielen Dank für Deinen Hinweis. Es wäre der jeweils letzte Maximalwert / Zeiteinheit günstiger, weil die Werte ab diesem Zeitpunkt dann tatsächlich wieder fallen. Kann ich festlegen bzw. beeinflussen, welcher der beiden Werte gefiltert wird?
Herzlichen Dank und viele Grüße
Antworten