首页 > 解决方案 > R dplyr 在多列上过滤字符串条件

问题描述

我有一个df,例如

df <-read.table(text="
v1 v2 v3 v4 v5
1  A  B  X  C
2  A  B  C  X
3  A  C  C  C
4  B  D  V  A
5  B  Z  Z  D", header=T)

如果变量有“X”,我如何过滤变量 v2 到 v5。我已经看到了一些使用过滤器的示例,但这些示例似乎仅适用于数字条件。

filter_at(vars(contains("prefix")), all_vars(.>5))

并且将 >5 替换为“X”不起作用

标签: rtidyverse

解决方案


使用dplyr1.0.4,我们可以使用if_any

library(dplyr)
df %>%
    filter(if_any(v2:v5, ~ . == 'X'))
#   v1 v2 v3 v4 v5
#1  1  A  B  X  C
#2  2  A  B  C  X

推荐阅读