maxima verschiedener Blöcke finden

Methoden der Zeitreihenanalyse

Moderator: schubbiaschwilli

Antworten
Laukez

maxima verschiedener Blöcke finden

Beitrag von Laukez »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: maxima verschiedener Blöcke finden

Beitrag von jogo »

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