ich Daten haben, die wie folgt aussieht:Dplyr oder data.table aufeinander folgenden Zeilen innerhalb gruppierten Daten basierend auf dem Wert in einer anderen Spalte konsolidieren
ID CLASS START END
100 GA 3-Jan-15 1-Feb-15
100 G 1-Feb-15 22-Feb-15
100 GA 28-Feb-15 17-Mar-15
100 G 1-Apr-15 8-Apr-15
100 G 10-Apr-15 18-Apr-15
200 FA 3-Jan-14 1-Feb-14
200 FA 1-Feb-14 22-Feb-14
200 G 28-Feb-14 15-Mar-14
200 F 1-Apr-14 20-Apr-14
Hier die Daten:
df <- structure(list(ID = c(100L, 100L, 100L, 100L, 100L, 200L, 200L,
200L, 200L), CLASS = structure(c(4L, 3L, 4L, 3L, 3L, 2L, 2L,
3L, 1L), .Label = c("F", "FA", "G", "GA"), class = "factor"),
START = structure(c(9L, 4L, 7L, 2L, 5L, 8L, 3L, 6L, 1L), .Label = c("1-Apr-14",
"1-Apr-15", "1-Feb-14", "1-Feb-15", "10-Apr-15", "28-Feb-14",
"28-Feb-15", "3-Jan-14", "3-Jan-15"), class = "factor"),
END = structure(c(2L, 8L, 4L, 9L, 5L, 1L, 7L, 3L, 6L), .Label = c("1-Feb-14",
"1-Feb-15", "15-Mar-14", "17-Mar-15", "18-Apr-15", "20-Apr-14",
"22-Feb-14", "22-Feb-15", "8-Apr-15"), class = "factor")), .Names = c("ID",
"CLASS", "START", "END"), class = "data.frame", row.names = c(NA,
-9L))
Ich möchte um die Daten nach der ID-Spalte zu gruppieren und anschließend alle aufeinander folgenden Vorkommen desselben Werts in der Spalte CLASS zu konsolidieren (sortiert nach dem START-Datum), wobei das minimale Startdatum und das maximale Enddatum ausgewählt werden. Für die ID-Nummer 100 gibt es nur eine Instanz, bei der die Klasse "G" fortlaufend ist. Daher möchte ich diese beiden Zeilen zu einer einzelnen Zeile mit den Daten min (START) und max (END) zusammenfassen. Dies ist ein einfaches Beispiel, aber in den echten Daten gibt es manchmal mehrere aufeinanderfolgende Zeilen, die konsolidiert werden müssen.
Ich habe versucht, group_by gefolgt von einer Art Ranking, aber das scheint nicht den Trick zu tun. Irgendwelche Vorschläge, wie man das löst? Auch dies ist das erste Mal, dass ich auf SO poste, also hoffe ich, dass diese Frage Sinn macht.
Ergebnis soll wie folgt aussehen:
ID CLASS START END
100 GA 3-Jan-15 1-Feb-15
100 G 1-Feb-15 22-Feb-15
100 GA 28-Feb-15 17-Mar-15
100 G 1-Apr-15 18-Apr-15
200 FA 3-Jan-14 22-Feb-14
200 G 28-Feb-14 15-Mar-14
200 F 1-Apr-14 20-Apr-14
Sollen die beiden 'FA's in ID 200 nicht wie w konsolidiert werden? Elle? –
@CactusWoman das ist richtig! Ich werde die Tabelle bearbeiten. – Kartik