2016-06-16 4 views
1

Mein Datenrahmen df sieht ungefähr so ​​aus:Wie filtere ich einen Datenrahmen mit dplyrs Filter() und R-Basis ifelse()?

Home,  Away, Inning 
"Boston", "NYC", "Top" 
"NYC", "Boston", "Bottom" 
"NYC", "Boston", "Top" 

I dplyr die filter(), um einen Datenrahmen zu bilden, der seine Daten von einem bekommt ifelse() Abfrage verwenden möge.

Wenn Home"Boston" ist, geben Sie mir alle Zeilen, wo Inning"Top" ist. Wenn Away"Boston" ist, gib mir alle Zeilen, in denen Inning"Bottom" ist.

Wie mache ich das mit dplyr's filter()?

Antwort

6

Ich glaube nicht, Sie brauchen ifelse(), nur die Logik im Filter angeben.

dplyr::filter(df, (Home == "Boston" & Inning == "Top") | 
        (Away == "Boston" & Inning == "Bottom")) 

#  Home Away Inning 
# 1 Boston NYC Top 
# 2 NYC Boston Bottom 
2

Wir verwenden subset von base R

subset(df1, (Home == "Boston" & Inning =="Top")| 
        (Away == "Boston" & Inning == "Bottom")) 
# Home Away Inning 
#1 Boston NYC Top 
#2 NYC Boston Bottom 
Verwandte Themen