是否可以通过r中的一行中有多少+号以及是否有某个字母(或单词)在行中进行过滤?
例如,如果我只想过滤带有2个或更多+号的行,并且它们还必须包含c。
示例输入:
a + b + c
a + b
a + c
a + b + b
a + c + c
a + b + c + d
示例输出:
a + b + c
a + c + c
a + b + c + d
我们使用str_count
获取列中每个元素中+
的个数,检查其是否大于1,并检测列中是否有'c'字符
library(dplyr)
library(stringr)
df1 %>%
filter(str_count(col1, fixed("+")) >1, str_detect(col1, fixed("c")))
与产出
# A tibble: 3 × 1
col1
<chr>
1 a + b + c
2 a + c + c
3 a + b + c + d
数据df1 <- structure(list(col1 = c("a + b + c", "a + b", "a + c", "a + b + b",
"a + c + c", "a + b + c + d")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))
这是一个可能的base R解决方案:
df[nchar(gsub("[^+]", "", df$col1)) > 1 &
grepl("c", df$col1, fixed = TRUE), ]
col1
<chr>
1 a + b + c
2 a + c + c
3 a + b + c + d
structure(list(col1 = c("a + b + c", "a + b", "a + c", "a + b + b",
"a + c + c", "a + b + c + d")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))