【问题标题】:How can I filter multiple columns with dplyr using string matching for the column name?如何使用 dplyr 使用列名的字符串匹配过滤多个列?
【发布时间】:2020-05-18 02:00:04
【问题描述】:

我很好奇什么是更简洁的方法来实现这一点:

nyc_crashes %>% filter(
  `NUMBER OF PERSONS INJURED`     >= 1 |
  `NUMBER OF PERSONS KILLED`      >= 1 |
  `NUMBER OF PEDESTRIANS INJURED` >= 1 |
  `NUMBER OF PEDESTRIANS KILLED`  >= 1 |
  `NUMBER OF CYCLIST INJURED`     >= 1 |
  `NUMBER OF CYCLIST KILLED`      >= 1 |
  `NUMBER OF MOTORIST INJURED`    >= 1 |
  `NUMBER OF MOTORIST KILLED`     >= 1
)

我可以对“INJURED | KILLED”使用字符串匹配,而不必为每个列名编写不同的条件吗?

【问题讨论】:

标签: r dplyr


【解决方案1】:

您可以使用 filter_at 和 ends_with 来做到这一点。

library(dplyr)
nyc_crashes %>%
  # Select columns that end with KILLED or INJURED
  filter_at(vars(c(ends_with("KILLED"),ends_with("INJURED"))), 
            # Keep rows where any of these variables is >= 1 
                          any_vars(. >= 1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2017-05-10
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多