如果是同时筛选好几个特定字符串呢
时间: 2024-09-15 07:13:51 浏览: 12
如果你想同时筛选多个特定字符串,可以稍微修改上面的R代码来处理这种情况。无论是`dplyr`还是`data.table`,你都可以使用`|`操作符来连接多个条件。例如,假设你想找出第一列(`col1`)、第二列(`col2`)和第三列(`col3`)中分别出现了`str1`、`str2`和`str3`的情况,你可以这样做:
```R
# dplyr
df %>%
mutate(new_column = str_detect(., paste0(c("col1", "col2", "col3"), ": ", c("str1", "str2", "str3")), all_vars = TRUE, negate = TRUE) |
str_detect(., c("str1", "str2", "str3"))) %>%
mutate_at(new_column, ~ifelse(is.na(.), NA_character_, . == T))
# data.table
setDT(df)[, new_column := ifelse(any(grepl(c("str1", "str2", "str3"), paste0(colnames(.), ":", df[, c("col1", "col2", "col3")])), grepl(c("str1", "str2", "str3"), names(.)), NA)]
```
这两个代码片段都会检查每一行,看是否在指定的所有列中同时找到了所有的特定字符串。如果有,`new_column`就会为`TRUE`;如果没有,为`FALSE`或`NA`。