【问题标题】:How do I filter a data frame with dplyr's filter() and R-base's ifelse()?如何使用 dplyr 的 filter() 和 R-base 的 ifelse() 过滤数据框?
【发布时间】:2016-10-18 15:44:48
【问题描述】:

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

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

我想使用 dplyr 的 filter() 来制作一个从 ifelse() 查询中获取数据的数据框。

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

我如何使用 dplyr 的 filter() 做到这一点?

【问题讨论】:

    标签: r if-statement dplyr


    【解决方案1】:

    我们可以从base R使用subset

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 有时候解决方法很简单,你只需要在stackoverflow上搜索正确的关键字:P
      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多