在任何列中包含字符串的子集行

时间:2019-02-06 22:07:05

标签: r grep dplyr grepl

我有一个如下的数据集:

  Col1      Col2     Col3
abckel        NA        7
jdmelw     njabc       NA
     8     jdken     jdne

如何对数据集进行子集设置,以便仅保留包含字符串“ abc”的行?

最终预期输出:

  Col1      Col2     Col3
abckel        NA        7
jdmelw     njabc       NA

2 个答案:

答案 0 :(得分:2)

使用data.frame:

d <- data.frame("Col1" = c("abckel", "jdmelw", 8),
                "Col2" = c(NA, "njabc", NA),
                "Col3" = c(7, NA, "jdne"),
                stringsAsFactors = F)

以下内容应返回您想要的结果:

d_new <- d[apply(d, 1, function(x) any(grepl("abc", x))), ]

答案 1 :(得分:1)

一种dplyr解决方案:

library(dplyr)

df %>% filter_all(any_vars(grepl("abc", .)))

输出:

     Col1  Col2 Col3
1: abckel  <NA>    7
2: jdmelw njabc <NA>