我需要使用另一个数据帧按列过滤数据帧,但是因为匹配不准确,所以我想使用grepl
可能是一种方法。
下面的代码可以举例说明:
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
实现这一目标的最佳方法是什么?
发布于 2021-08-19 06:01:51
那这个呢?
> A %>%
+ filter(colSums(outer(B$Z, X, Vectorize(grepl))) > 0)
X Y
1 RRT 5
2 FGT 6
3 UTX 9
发布于 2021-08-19 06:05:39
基于B$Z
创建正则表达式模式,并对其进行过滤
A[grepl(paste0(B$Z, collapse = "|"), A$X), ]
发布于 2021-08-19 09:15:32
使用str_detect
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
https://stackoverflow.com/questions/68849166
复制相似问题