如何使用dplyr的filter()和R-base的ifelse()过滤数据框?

时间:2016-06-16 23:08:13

标签: r if-statement dplyr

我的数据框df看起来像这样:

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

我想使用dplyr' s filter()创建一个数据框,从ifelse()查询中获取数据。

如果Home"Boston",请向我提供Inning"Top"的所有行。如果Away"Boston",请向我提供Inning"Bottom"的所有行。

如何使用dplyr' filter()

执行此操作

2 个答案:

答案 0 :(得分:7)

我认为您不需要ifelse(),只需在过滤器中指定逻辑。

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

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

答案 1 :(得分:2)

我们可以使用subset

中的base R
subset(df1, (Home == "Boston" & Inning =="Top" )|
                     (Away == "Boston" & Inning == "Bottom"))
#   Home   Away Inning
#1 Boston    NYC    Top
#2    NYC Boston Bottom