Rückgabe der ersten Reihe der Gruppe

Ich habe einen Datenrahmen bestehend aus einemID, das ist für jedes Element in einer Gruppe gleich, zwei Datenzeiten und das Zeitintervall zwischen diesen beiden. Eines der datetime-Objekte ist meine relevante Zeitmarke. Jetzt möchte ich eine Untermenge des Datenrahmens erhalten, die aus dem frühesten Eintrag für jede Gruppe besteht. Die Einträge (insbesondere das Zeitintervall) müssen unangetastet bleiben.

Mein erster Ansatz bestand darin, den Frame nach 1. ID und 2. relevanter Datums- und Uhrzeitangabe zu sortieren. Ich konnte jedoch nicht den ersten Eintrag für jede neue Gruppe zurückgeben.

Ich habe mir dann das angeschautaggregate() ebenso gut wieddply() Funktion, aber ich konnte keine Option in beiden finden, die nur den ersten Eintrag zurückgibt, ohne eine Aggregationsfunktion auf den Zeitintervallwert anzuwenden.

Gibt es einen (einfachen) Weg, dies zu erreichen?

ZUSATZ: Vielleicht war ich unklar, als ich meine aggregierten () und ddply () Notizen hinzufügte. Ich muss nicht unbedingt aggregieren. Angesichts der Tatsache, dass der Datenrahmen so sortiert ist, dass die erste Zeile jeder neuen Gruppe die gesuchte Zeile ist, ist es ausreichend, nur eine Teilmenge mit jeder Zeile zurückzugeben, die eine andere ID als die vorherige hat (dh die Startreihe jeder neuen Gruppe).

Beispieldaten:

structure(list(ID = c(1454L, 1322L, 1454L, 1454L, 1855L, 1669L, 
1727L, 1727L, 1488L), Line = structure(c(2L, 1L, 3L, 1L, 1L, 
1L, 1L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"), 
    Start = structure(c(1357038060, 1357221074, 1357369644, 1357834170, 
    1357913412, 1358151763, 1358691675, 1358789411, 1359538400
    ), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1357110430, 
    1357365312, 1357564413, 1358230679, 1357978810, 1358674600, 
    1358853933, 1359531923, 1359568151), class = c("POSIXct", 
    "POSIXt"), tzone = ""), Interval = c(1206.16666666667, 2403.96666666667, 
    3246.15, 6608.48333333333, 1089.96666666667, 8713.95, 2704.3, 
    12375.2, 495.85)), .Names = c("ID", "Line", "Start", "End", 
"Interval"), row.names = c(NA, -9L), class = "data.frame")

Antworten auf die Frage(2)

Ihre Antwort auf die Frage