maxima verschiedener Blöcke finden

Methoden der Zeitreihenanalyse
Antworten
Laukez
Beiträge: 10
Registriert: Do Jan 11, 2018 12:46 pm

maxima verschiedener Blöcke finden

Beitrag von Laukez » Mi Jan 24, 2018 11:36 am

Hallo zusammen,

ich habe ein etwas umfangreicheres Problem. Es geht darum, die Maximalwerte einzelner Regenereignisse zu finden.

Ich habe eine Regenreihe, die mir die Messergebnisse einer Messstation in 5-min Schritten angibt. So kann zum Beispiel ein 15 minütiger Regen so aussehen:

Code: Alles auswählen

Uhrzeit    Niederschlang(mm)
12:10               2
12:15               3 
12:20               2
Jetzt möchte ich die Maximalwerte der Ereignisse finden (in dem Beispiel 3mm). Das Problem an der Sache ist, dass die Maximalwerte nur eines Ereinisses genommen werden sollen. Eine definierte Trockenwetterzeit von z.B. 30 min gibt mir die unterteilung von 2 Ereignissen:

Code: Alles auswählen

Uhrzeit    Niederschlag
12:05               0
12:10               2
12:15               3 
12:20               2
12:25               0
12:30               0
12:35               0
12:40               0
12:45               0
12:50               0
12:55               0
13:00               2
13:05               4
13:10               0
13:15               0
13:20               3
13:25               5
13:30               0
13:35               0
In diesem Beispiel habe ich 2 Ereignisse durch die Trockenwetterzeit von 12:25 bis 12:55. Somitz habe ich ein Maximum von 3mm und ein weiteres von 5mm.
Die Trockenzeit kann ich über rollapply() identifizieren. Wenn rollapply(Niederschlag, width = 6, sum) == "0" weiß ich, dass hier der Regen für eine ausreichend lange Zeit ausgesetzt hat und somit ein neues Ereignis beginnt. Jetz müsste ich es noch hinbekommen, die maxima zu bestimmen...

Hat da vielleicht jemand eine Idee?? Wäre super:)

Beste Grüße
Zuletzt geändert von jogo am Mi Jan 24, 2018 11:46 am, insgesamt 1-mal geändert.

jogo
Beiträge: 885
Registriert: Fr Okt 07, 2016 8:25 am

Re: maxima verschiedener Blöcke finden

Beitrag von jogo » Mi Jan 24, 2018 12:51 pm

Hallo Lukas,

vielleicht gefällt Dir dieses:

Code: Alles auswählen

library("data.table")
d <- fread(
"Uhrzeit    Niederschlag
12:05               0
12:10               2
12:15               3 
12:20               2
12:25               0
12:30               0
12:35               0
12:40               0
12:45               0
12:50               0
12:55               0
13:00               2
13:05               4
13:10               0
13:15               0
13:20               3
13:25               5
13:30               0
13:35               0")
d[, Zykl:=rleid(Niederschlag>0)]
d[, Zykl.max:=max(Niederschlag), by=Zykl]
d[Niederschlag!=0 & Niederschlag==Zykl.max]  ### oder d[Niederschlag!=0][Niederschlag==Zykl.max]
Gruß, Jörg

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast