Wie wählt man die Zeile mit dem maximalen Wert in jeder Gruppe?
Derzeit habe ich ein problem wie folgt. In ein dataset, in dem mehrere Beobachtungen für jedes Thema vorhanden ist, und ich möchte, um eine Teilmenge dieser dataset, in dem nur die maximale Datenrate, die für eine Aufzeichnung ausgewählt ist. Zum Beispiel für einen Datensatz wie folgt:
ID <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)
group <- data.frame(Subject=ID, pt=Value, Event=Event)
Thema 1, 2 und 3 die größte pt-Wert von 5, 17 und 5, beziehungsweise. Wie könnte ich zuerst, finden Sie die größten pt-Wert für jedes Fach, und legen Sie dann, diese Beobachtung in einem anderen Daten-frame? Dies bedeutet, dass diese Teilmenge nur die größten pt-Werte für jedes Thema.
InformationsquelleAutor der Frage Xinting WANG | 2014-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ein
data.table
Lösung:Wenn Sie möchten, um alle die Einträge zu max-Werte
pt
innerhalb jeder Gruppe:Wenn Sie möchten, nur die ersten max-Wert von
pt
:In diesem Fall, es macht keinen Unterschied, da es nicht mehrere maximale Werte innerhalb einer Gruppe in Ihren Daten.
InformationsquelleAutor der Antwort Arun
Die intuitive Methode ist die Verwendung group_by und top_n Funktion in dplyr
Dem Ergebnis, das Sie bekommen, ist
InformationsquelleAutor der Antwort Xi Liang
Eine kürzere Lösung mit
data.table
:InformationsquelleAutor der Antwort Mark Chamness
Ich war mir nicht sicher, was Sie tun wollten, über der Spalte Ereignis, aber wenn Sie wollen, zu halten, dass ebenso, wie über
Hier verwenden wir
ave
Blick auf die Spalte "Wert" für jede "ID". Dann bestimmen wir, welcher Wert ist der maximale und dann diese in einen logischen Vektor, die wir verwenden können, um die Teilmenge der ursprünglichen Daten.frame.InformationsquelleAutor der Antwort MrFlick
Einen
dplyr
Lösung:Daraus ergibt sich die folgende Daten Rahmen:
InformationsquelleAutor der Antwort tkmckenzie
Mit Base
R
InformationsquelleAutor der Antwort Kalees Waran
Weitere option ist
slice
InformationsquelleAutor der Antwort akrun