Ich komme gleich zum Punkt: Ich habe einige Datensätze im .csv-Format mit regelmäßig protokollierten Sensordaten von einem Computer gegeben. Dieser Datensatz enthält jedoch auch Messungen, die beim Ausschalten der Maschine vorgenommen wurden und die ich beim Einschalten von den abgemeldeten Daten trennen möchte. Zur Unterteilung der relevanten Daten habe ich auch eine Datei, die die Start- und Endzeiten dieser Abschaltungen enthält. Diese Datei ist mehrere hundert Zeilen lang.Subsetting Daten nach mehreren Zeiträumen - R
Beispiele für die entsprechenden Dateien für dieses Problem:
file: sensor_data.csv
sens_name,time,measurement
sens_A,17/12/11 06:45,32.3321
sens_A,17/12/11 08:01,36.1290
sens_B,17/12/11 05:32,17.1122
sens_B,18/12/11 03:43,12.3189
##################################################
file: shutdowns.csv
shutdown_start,shutdown_end
17/12/11 07:46,17/12/11 08:23
17/12/11 08:23,17/12/11 09:00
17/12/11 09:00,17/12/11 13:30
18/12/11 01:42,18/12/11 07:43
Um Daten in R Teilmenge, ich habe früher verwendet, um die subset()
Funktion mit einfachen Bedingungen, die fein gearbeitet hat, aber ich weiß nicht, wie es weiter gehen über das Subsetting von Sensordaten, die außerhalb von mehreren Shutdown-Datumsbereichen liegen. Ich habe die Datums- und Uhrzeitdaten bereits mit as.POSIXlt()
formatiert.
Ich vermute, dass einige Skripts beteiligt sein können, um eine gute Lösung zu finden, aber ich fürchte, ich bin noch nicht erfahren genug, um mit dieser Art von Daten umzugehen.
Jede Hilfe, Beratung oder Lösung wird sehr geschätzt. Lassen Sie mich wissen, ob noch etwas für eine Lösung benötigt wird.
Vielen Dank, Pierre! Ich habe sogar ein paar Dinge aus deinem Code gelernt. Ich habe jedoch Probleme mit "ind1" nach Abschluss Ihrer Schritte. Die Eingabe von 'summary (ind1)' zeigt, dass jede einzelne Zeile als FALSE bewertet wurde. Ich vermute, dass dies mit der "Filterbedingung" in "function (t)" zusammenhängt, aber ich konnte selbst keine Lösung finden. Gibt es etwas, das ich vermisst habe? Danke nochmal für deine Zeit. – AbuZabi
Hallo nochmal. Ich versuche es immer noch herauszufinden und bin bei dem Versuch, die Rolle der 'sum()' Funktion in 'function (t)' zu verstehen, stecken geblieben. Mit 'sapply()' nimmst du einzelne Messzeiten von 'sensor_data $ time' und bewertest dann, ob jeder die Bedingung in' function (t) 'erfüllt, richtig? Funktioniert die Funktion 'sum()', um zu sehen, ob die sensor_data-Zeiten innerhalb ** irgendeines ** Abschaltintervalls liegen? – AbuZabi
Die Verwendung von 'sum' in der Funktion ist eine Möglichkeit, die Anzahl der TRUEs vs FALSEs zu zählen. Probieren Sie 'sum (c (TRUE, FALSE, TRUE))' aus, um zu sehen, wie es hinzugefügt wird. –