web-dev-qa-db-de.com

Filtern eines Datenrahmens nach Werten in einer Spalte

Ich arbeite mit dem Datensatz LearnBayes. Für diejenigen, die die tatsächlichen Daten sehen wollen:

install.packages('LearnBayes')

Ich versuche, Zeilen basierend auf dem Wert in den Spalten herauszufiltern. Wenn der Spaltenwert beispielsweise "water" ist, möchte ich diese Zeile. Wenn der Spaltenwert "milk" ist, dann möchte ich es nicht. Letztendlich versuche ich alle Personen herauszufiltern, deren Drink-Spalte "Wasser" ist.

91
user722224

Der Teilmengenbefehl ist nicht erforderlich. Verwenden Sie einfach die Datenrahmenindizierung

studentdata[studentdata$Drink == 'water',]

Lesen Sie die Warnung von ?subset

Dies ist eine Komfortfunktion, die für die interaktive Verwendung vorgesehen ist. Für die Programmierung ist es besser, die Standard-Teilmengenfunktionen wie "[" zu verwenden, und insbesondere die nicht standardmäßige Auswertung des Arguments "Teilmenge" kann unerwartete Folgen haben.

199
adamleerich

Versuche dies:

subset(studentdata, Drink=='water')

das sollte es tun.

66
Dave Kincaid

Dachte, ich würde dies mit einer dplyr Lösung aktualisieren

library(dplyr)    
filter(studentdata, Drink == "water")
34
rrs