首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用另一个dataframe和grepl在数据框中搜索字符串

使用另一个dataframe和grepl在数据框中搜索字符串
EN

Stack Overflow用户
提问于 2021-08-19 05:53:31
回答 3查看 96关注 0票数 2

我需要使用另一个数据帧按列过滤数据帧,但是因为匹配不准确,所以我想使用grepl可能是一种方法。

下面的代码可以举例说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A <- data.frame(X=c("RRT","FGT","UTX","GRW"),Y=c(5,6,9,4))

B <- data.frame(Z=c("PPL","FG","RT","UTX"))

A %>% filter(.,grepl("RT",X))

# the result using a single match
X Y
RRT 5

##desired result

A %>% filter(.,grepl(B,A$X))

A.X  A.Y
RRT  5
FGT  6
UTX  9

实现这一目标的最佳方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-19 06:01:51

那这个呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> A %>%
+   filter(colSums(outer(B$Z, X, Vectorize(grepl))) > 0)
    X Y
1 RRT 5
2 FGT 6
3 UTX 9
票数 3
EN

Stack Overflow用户

发布于 2021-08-19 06:05:39

基于B$Z创建正则表达式模式,并对其进行过滤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A[grepl(paste0(B$Z, collapse = "|"), A$X), ]
票数 3
EN

Stack Overflow用户

发布于 2021-08-19 09:15:32

使用str_detect

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
library(stringr)
A %>% 
   filter(str_detect(X, str_c(B$Z, collapse = "|")))
    X Y
1 RRT 5
2 FGT 6
3 UTX 9
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68849166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文