r - 如何在两组字符串之间找到相似的

我有两组数据,我试图在多个文件中找到相似的字符串。作为一个例子,我在这里展示了两个数据

df1<-structure(list(test = c("SNTM1", "STTTT2", "STOLA", "STOMQ", 
"STR2", "SUPTY1", "TBNHSG", "TEYAH", "TMEIL1", "TMEIL2", "TMEIL3", 
"TNIL", "TREUK", "TTRK", "TRRFK", "UBA52", "YIPF1")), class = "data.frame", row.names = c(NA, 
-17L))


df2<- structure(list(test = c("SNTLK", "STTTFSG", "STOIU", "STOMQ", 
"STR25", "SUPYHGS", "TBHYDG", "TEHDYG", "TMEIL1", "YIPF1")), class = "data.frame", row.names = c(NA, 
-10L))

我发现类似这样的字符串

semi_join(df, df2, by="test")

甚至这个

match(df$test,df2$test)

或其他几种方法,我只是想不出有时它不起作用,可能是因为字符结构或大写小写,我一直在自杀,但它不匹配。列表很大,这就是为什么我不能在这里粘贴所有内容

我也尝试过的是

df1$test <- as.character(df1$test)
df2$test <- as.character(df2$test)

但我仍然无法弄清楚。任何想法?

回答1

试试 fuzzyjoin

我们可以加入 df1 df2 基于它们的列的模糊字符串匹配。

使用 max_dist 我们可以定义用于加入的最大距离

请参阅:?stringdist_left_join

library(dplyr)
library(fuzzyjoin)

fuzzyjoin::stringdist_left_join(x=df1, y=df2, max_dist =.35, by='test', method ='jaccard', distance_col = "dist")
test.x test.y      dist
1   SNTM1   <NA>        NA
2  STTTT2   <NA>        NA
3   STOLA   <NA>        NA
4   STOMQ  STOMQ 0.0000000
5    STR2  STR25 0.2000000
6  SUPTY1   <NA>        NA
7  TBNHSG   <NA>        NA
8   TEYAH   <NA>        NA
9  TMEIL1 TMEIL1 0.0000000
10 TMEIL2 TMEIL1 0.2857143
11 TMEIL3 TMEIL1 0.2857143
12   TNIL   <NA>        NA
13  TREUK   <NA>        NA
14   TTRK   <NA>        NA
15  TRRFK   <NA>        NA
16  UBA52   <NA>        NA
17  YIPF1  YIPF1 0.0000000

相似文章

r - 由于某些标准,在个体中找到最佳组合

我想从许多人中随机组成一组。对于个人,我有关于他们的位置(两种可能性)和他们所属位置的团队的信息。目前尚不清楚有多少人将加入。应根据以下限制组成组:团体一般应由3-4人组成在一个组内,位置之间的份额(...

c - c 程序处理 multithreading

我的c程序需要帮助,我已经完成了大部分,但还有一些问题。该计划是关于**探索进程和线程之间的同步。**在一个程序中给定了三(3)个流程,这些流程协同工作以解决生产者消费者问题:2个过程是“生产者”,每...

最新文章