Ich habe eine data.table mit zwei Parametern (Datum und Status), jetzt möchte ich neue Spalten basierend auf der ursprünglichen Tabelle einfügen.Gruppenfunktion mit Grundberechnung
Datenregeln:
- die Spalte-Status enthält nur "0" und "1"
- die Datumsspalte wird immer von Sekunden erhöhen :)
neue Variablen:
- Gruppe: um jede Gruppe oder jeden Zyklus für den Status zu nummerieren, ist die Reihenfolge des Status (0,1). es bedeutet, dass der Status mit dem Status '0' beginnt, wenn der Status wieder '0' wird, ist ein Zyklus abgeschlossen.
- cycle_time: Die Zykluszeit für jede Gruppe
- group_0 berechnen: die Zeit für den Status 0 innerhalb einer bestimmten Gruppe
- GROUP_1 berechnen: die Zeit für den Status 1 innerhalb einer bestimmten Gruppe
berechnen zum Beispiel kann eine einfache Eingabe:
der Code die Daten zu erzeugen:
dd <- data.table(date = c("2015-07-01 00:00:12", "2015-07-01 00:00:13","2015-07-01 00:00:14","2015-07-01 00:00:15", "2015-07-01 00:00:16", "2015-07-01 00:00:17","2015-07-01 00:00:18", "2015-07-01 00:00:19", "2015-07-01 00:00:20","2015-07-01 00:00:21", "2015-07-01 00:00:22", "2015-07-01 00:00:23","2015-07-01 00:00:24", "2015-07-01 00:00:25"), status = c(0,0,0,0,1,1,1,0,0,1,1,1,1,0))
die Ausgabe neuer Parameter einschließlich ist:
Ich habe tatsächlich mit einigen grundlegenden Methoden getan,
- die Hauptidee ist: Wenn der aktuelle Zustand 0 und das ist Der nächste Status ist 1, dann markieren Sie ihn als eine Gruppe.
- Die Idee könnte funktionieren, aber das Problem ist die Rechenzeit ist zu lang, da so viele Schleifen.
ich angenommen, dass es 1 bis 0 markiert die Grenze einer Gruppe
[? Wie ein großes R reproduzierbares Beispiel machen] (http://stackoverflow.com/questions/5963269) – zx8754