【发布时间】:2020-10-21 10:06:05
【问题描述】:
我有 5 个列名的向量,它们相似,但不完全相同。
我正在尝试根据vector1 中的名称来更正vector2、vector3、vector4、vector5 中的条目。
我得到了一些想法here 和here,导致下面的代码。但最后,我什至在比较前两个向量时遇到了困难。更不用说覆盖它们了。
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")
我是这样开始的:
apply(adist(x = vector1, y = vector2), 1, which.min)
data.frame(string_to_match = vector1,
closest_match = vector2[apply(adist(x = vector1, y = vector2), 1, which.min)])
string_to_match closest_match
1 something some thing
2 nothing no thing
3 anything anything
4 number4 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")
有没有人能让我走上正轨?
【问题讨论】:
-
我注意到您想要的结果删除了“addition”,它可能与“anything”最接近。如果这对你来说太远了,你可以调整 max_dist 来消除它
标签: r string dplyr fuzzy-comparison fuzzyjoin