Entfernen bestimmter Zeilen aus einem Datenrahmen
Habe ich einen Daten-frame z.B.:
sub day
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
und ich möchte zu löschen, bestimmte Zeilen, die identifiziert werden können durch die Kombination von sub und Tag.
Zum Beispiel sagen die ich entfernen wollte Zeilen, in denen sub='1' and Tag='2' und sub=3 und Tag='4'. Wie könnte ich dies tun?
Ich merke, dass ich könnte geben Sie die Zeilen-Nummern, aber Sie muss angewendet werden, um eine riesige dataframe, das wäre langweilig, durch zu gehen und die ID jeder Zeile.
InformationsquelleAutor der Frage Gab_27 | 2011-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder wenn sub ist ein Faktor, wie vorgeschlagen, durch die Verwendung von Anführungszeichen:
Könnte auch Teilmenge:
(Und ich befürworte den Einsatz von
which
in Dirk ' s Antwort, wenn Sie mit "[" auch wenn einige behaupten, es sei nicht notwendig).InformationsquelleAutor der Antwort 42-
Diese läuft darauf hinaus, zwei unterschiedliche Schritte:
which()
data.frame
durch den Ausschluss von Indizes aus dem vorherigen Schritt.Hier ist ein Beispiel:
Und wir sehen, dass
sub==2
nur einen Eintrag, noch mitday==1
.Bearbeiten Der zusammengesetzten Bedingung getan werden kann, mit einem 'oder' wie folgt:
und hier ist ein neues vollständiges Beispiel
InformationsquelleAutor der Antwort Dirk Eddelbuettel
Hier eine Lösung für Ihr problem mit dplyr's
filter
Funktion.Zwar können Sie übergeben Sie Ihre Daten-frame als erstes argument an jedem dplyr-Funktion, die ich verwendet habe seine
%>%
Betreiber, die Rohre Ihre Daten-frame an eine oder mehrere dplyr-Funktionen (filtern nur in diesem Fall).Sobald Sie sind vertraut mit dplyr, die Spickzettel ist sehr praktisch.
InformationsquelleAutor der Antwort Ken Lin
einer einfachen Lösung
cond1 <- df$sub == 1 & df$day == 2
cond2 <- df$sub == 3 & df$day == 4
df <- df[!cond1,]
df <- df[!cond2,]
InformationsquelleAutor der Antwort Ajay Choudhary