多列上的R dplyr过滤字符串条件

标签 r tidyverse

我有一个 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)

如果变量 v2 到 v5 有“X”,我如何过滤它们?我看过一些使用 filter at 的示例,但这些示例似乎只适用于数字条件。

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

用“X”替换 >5 是行不通的

最佳答案

有了dplyr 1.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

关于多列上的R dplyr过滤字符串条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63643051/

相关文章:

r - 从事后测试中获得整洁的输出

r - 找到获得向量中相同元素之间所有间隔的最快方法

在 r 中使用 rename_at 从列名中删除后缀

r - 如何找到基于两列的独特组合?

r - 使用累积连接将嵌套列表转换为非嵌套列表

使用查找另一个数据帧替换一个数据帧中的文本

r - 为 R 中的相同值添加一列索引

r - 数据争论 : Aggregating by group sequentially reducing

R 在数据框中查找值(因子变量的rowwise)

r - 使用 tidyverse reshape data.frame 及其列名称