根据r中的一行中有多少个+号进行筛选



是否可以通过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))

相关内容

  • 没有找到相关文章

最新更新