Messung von Dauer und Werten zeitversetzt-startender Events

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Ilonia
Beiträge: 30
Registriert: Mi Aug 09, 2017 3:50 pm

Messung von Dauer und Werten zeitversetzt-startender Events

Beitrag von Ilonia »

Hallo zusammen,

ich habe mal wieder ein Problem, bei dem ich eure Hilfe benötige. :)

Ich habe folgenden (Teil-)Datensatz mit einem Zeitstempelund zwei "Messspalten".

Code: Alles auswählen

dput(Test)
structure(list(Timestamp = c("2022-01-01 00:00:00", "2022-01-01 00:01:00", 
"2022-01-01 00:02:00", "2022-01-01 00:03:00", "2022-01-01 00:04:00", 
"2022-01-01 00:05:00", "2022-01-01 00:06:00", "2022-01-01 00:07:00", 
"2022-01-01 00:08:00", "2022-01-01 00:09:00", "2022-01-01 00:10:00", 
"2022-01-01 00:11:00", "2022-01-01 00:12:00", "2022-01-01 00:13:00", 
"2022-01-01 00:14:00", "2022-01-01 00:15:00", "2022-01-01 00:16:00", 
"2022-01-01 00:17:00", "2022-01-01 00:18:00", "2022-01-01 00:19:00", 
"2022-01-01 00:20:00", "2022-01-01 00:21:00", "2022-01-01 00:22:00", 
"2022-01-01 00:23:00", "2022-01-01 00:24:00", "2022-01-01 00:25:00", 
"2022-01-01 00:26:00", "2022-01-01 00:27:00", "2022-01-01 00:28:00", 
"2022-01-01 00:29:00", "2022-01-01 00:30:00", "2022-01-01 00:31:00", 
"2022-01-01 00:32:00", "2022-01-01 00:33:00", "2022-01-01 00:34:00"
), Col1 = c(1L, 2L, 1L, 3L, 5L, 7L, 4L, 23L, 6L, 8L, 0L, 0L, 
0L, 0L, 0L, 1L, 2L, 6L, 2L, 0L, 1L, 1L, 0L, 1L, 2L, 3L, 4L, 6L, 
3L, 2L, 2L, 3L, 5L, 2L, 1L), Col2 = c(0L, 0L, 0L, 0L, 2L, 4L, 
6L, 4L, 2L, 1L, 0L, 0L, 0L, 5L, 6L, 2L, 6L, 2L, 6L, 0L, 0L, 0L, 
0L, 1L, 2L, 5L, 3L, 6L, 7L, 22L, 3L, 0L, 0L, 0L, 0L)), row.names = c(NA, 
-35L), class = "data.frame")
Bei Zeilen in dem eine oder beide Zählspalten "Col1" und "Col2" eine 0 aufweisen wurde nichts gezählt, mit Zahlen hat entweder nur die eine oder beide Spalten Werte drinnen.
Ich möchte jetzt gerne den zeitlichen Versatz ermitteln. Also wie viele Minuten später hat Col1/Col2 später angefangen aufzuzeichen. Und zwar so lange, bis in beiden Spalten Werte aufgezeichnet sind.
Das kann natürlich vor und auch nach einer "gemeinsamen" Zeit auftreten. Aber auch, dass ohne einer gemeinsamen Zeit was aufgezeichnet wird.

Gibt es eine möglichkeit diesen "zeitlichen Versatz" zu bestimmen und dabei jeweils die Summe von Col1/Col2 zu bestimmen?
Konkret hätte ich gerne eine Ausgabe in einem neuen DF mit den Spalten "Zeitstempel Beginn", "Dauer", "Summe", "Spaltenname", also für Spaltenname Col1 oder Col2. Um zu denfinieren ob der zeitliche Versatz vor oder nach einer gemeinsamen Zeit auftritt könnte man die eine eigene Spalte "Zeitpunkt" mit "davor"/"danach"einfügen. Sollten Werte ohne einem gemeinsamen Zeitraum auftreten, sollen diese auch erfasst werden.

Also herauskommen sollte im besten Fall ein df der folgendermaßen aussieht:

Code: Alles auswählen

 dput(Aim_DF)
structure(list(Startzeit = c("2022-01-01 00:00:00", "2022-01-01 00:13:00", 
"2022-01-01 00:20:00", "2022-01-01 00:31:00"), Dauer = c(4L, 
2L, 2L, 4L), Summe = c(7L, 11L, 2L, 11L), Spalte = c("Col1", 
"Col2", "Col1", "Col1"), Zeitpunkt = c("davor", "danach", "Einzel", 
"danach")), row.names = c(NA, -4L), class = "data.frame")
Ich hoffe ich konnte mich klar ausdrücken... :oops:

Um die Länge der Zeit zu bekommen, braucht man bestimmt

Code: Alles auswählen

rle()
und um die Summe zu bestimmen

Code: Alles auswählen

colsum()
Viel mehr Ideen habe leider nicht.

Über Tipps, Input o.ä. von euch würde ich mich sehr freuen :)

Liebe Grüße
Isabel
Antworten