R 模糊匹配(和覆盖)向量项

R 模糊匹配(和覆盖)向量项,r,string,dplyr,fuzzy-comparison,fuzzyjoin,R,String,Dplyr,Fuzzy Comparison,Fuzzyjoin,我有5个带列名的向量,它们相似,但不完全相同 我正在试图找到一种方法,根据vector1中的名称更正vector2、vector3、vector4、vector5中的条目 我已经得到了一些想法和建议,导致下面的代码。但最后,我甚至无法比较前两个向量。更不用说覆盖它们了 library(dplyr) library(fuzzyjoin) vector1 <- c("something","nothing", "anything"

我有5个带列名的向量,它们相似,但不完全相同

我正在试图找到一种方法,根据
vector1
中的名称更正
vector2
vector3
vector4
vector5
中的条目

我已经得到了一些想法和建议,导致下面的代码。但最后,我甚至无法比较前两个向量。更不用说覆盖它们了

library(dplyr)
library(fuzzyjoin)


vector1 <- c("something","nothing", "anything", "number4")
vector2 <- c("some thing","no thing","addition", "anything", "number4")
vector3 <- c("some thing wrong","nothing", "anything_")
vector4 <- c("something","nothingg", "anything", "number_4")
vector5 <- c("something","nothing", "anything happening", "number4")
是否仍然需要将距离添加到此解决方案并基于距离覆盖向量

预期结果:

  string_to_match closest_match  distance
1       something    some thing   1
2         nothing      no thing   1
3        anything      anything   0
4         number4       number4   0

vector1 <- c("something","nothing", "anything", "number4")
vector2 <- c("something","nothing","addition", "anything", "number4")
vector3 <- c("something","nothing", "anything")
vector4 <- c("something","nothing", "anything", "number4")
vector5 <- c("something","nothing", "anything", "number4")
字符串到最近匹配距离
有些事有些事
没什么没什么
什么都可以
4数字4数字4 0

vector1
fuzzyjoin
函数将添加距离度量。如果只选择最接近的匹配列/向量,则无需覆盖

库(fuzzyjoin);图书馆(dplyr)
向量1某物某物1
#>没什么没什么
#>什么都可以
#>4数字4数字4 0
#向量3或任何其他向量的fuller解
(完整的\u表\u中的\u可能的\u匹配\u矢量3通过“things”连接)
#>#A tibble:12 x 3
#>东西.x东西.y距离
#>                        
#>出了什么事了什么事
#>2.有什么不对劲吗
#>有什么不对劲吗
#>4.有什么事打错电话了
#>什么都没有
#>6什么都没有
#>什么都没有
#>8没有数字4 6
#>什么都行
#>10什么都没有3
#>什么都行
#>任何数字都可以
(表中最接近的匹配项百分比)
分组依据(things.x)%>%
变异(秩=行数(距离))%>%
过滤器(秩==1))
#>#tibble:3 x 4
#>#组:things.x[3]
#>事物.x事物.y距离秩
#>                        
#>有什么不对劲吗
#>2什么都没有0 1
#>什么都行,什么都行
#slice_min(距离,带_ties=FALSE)#不能使用slice_min,否则顺序会混乱
(new_vector3[1]“something”“nothing”“anything”
(新矢量2%
分组依据(things.x)%>%
变异(秩=行数(距离))%>%
筛选器(秩==1)%>%
($things.y)
#>加入:“事物”
#>[1]“something”“nothing”“nothing”“nothing”“nothing”“nothing”“nothing”“数字4”

由(v0.3.0)

于2021-01-06创建,我注意到您想要的结果删除了“加法”,它可能与“任何东西”最匹配。如果这对您来说太远,您可以调整最大距离以消除它
  string_to_match closest_match  distance
1       something    some thing   1
2         nothing      no thing   1
3        anything      anything   0
4         number4       number4   0

vector1 <- c("something","nothing", "anything", "number4")
vector2 <- c("something","nothing","addition", "anything", "number4")
vector3 <- c("something","nothing", "anything")
vector4 <- c("something","nothing", "anything", "number4")
vector5 <- c("something","nothing", "anything", "number4")