查找R中两个向量之间的部分匹配字符串
我正在使用R中的两个字符串向量 第一个是Owner,包含大约100000个元素,看起来像:查找R中两个向量之间的部分匹配字符串,r,R,我正在使用R中的两个字符串向量 第一个是Owner,包含大约100000个元素,看起来像: > proprietor [1] "GERALD RICA LIMITED" [2] "EUROMASTER STUDIO SRL" [3] "CENTRE D'ECHANGES INTERNATIONAUX (CEI)
> proprietor
[1] "GERALD RICA LIMITED"
[2] "EUROMASTER STUDIO SRL"
[3] "CENTRE D'ECHANGES INTERNATIONAUX (CEI)"
[4] "RONTEC SERVICE STATION 1A LIMITED"
[5] "MOORGARTH PROPERTIES (LUXEMBOURG) S.A.R.L"
[6] "BEAVRON INVESTMENTS LIMITED"
[7] "MITRALI LIMITED"
另一个名称包含大约700000个类似元素:
> name
[1] "MULTIPOINT HOLDINGS LIMITED"
[2] "NYASA PROPERTY LIMITED"
[3] "WHITE LODGE HOLDINGS LIMITED"
[4] "MULTIPOINT HOLDINGS LIMITED"
[5] "MULTIPOINT HOLDINGS LIMITED"
[6] "JBL INVESTMENT LIMITED"
[7] "DIMBLEBY LIMITED"
[8] "LIDL U.K. GMBH"
我想知道所有者的哪些要素也在名称中,考虑到可能有一些拼写错误,或者一些像“LIMITED”这样的词也可以写为“LTD”
我已经尝试过的:
- %name中的
owner%返回一个空元素,我知道不是这样的
不工作,因为我的向量中存在重复项intersect(所有者,名称)
- 主要是,我尝试使用
进行循环,以允许部分匹配:agrep()
for(i在1:97034中){
if(is.null(agrep(所有者[i],姓名,最大距离=0.1,value=TRUE,useBytes=TRUE,costs=null,ignore.case=TRUE))==“TRUE”){
test[i]我将使用包stringdist
中的函数adist
最简单的工作示例:
创建一个非义词向量,并将该向量称为a:
a非常好用,非常感谢!!对于链接,我也非常感谢。
for (i in 1:97034) {
if (is.null(agrep(proprietor[i], name, max.distance=0.1, value=TRUE, useBytes=TRUE, costs=NULL, ignore.case=TRUE))=="TRUE") {
test[i] <- 1
} else {
test[i] <- agrep(proprietor[i], name, max.distance=0.1, value=TRUE, useBytes=TRUE, costs=NULL, ignore.case=TRUE)
}
}
[,1] [,2] [,3] [,4] [,5]
[1,] 3 15 7 7 8
[2,] 7 8 6 7 7
[3,] 7 10 2 3 5
[4,] 7 10 3 2 5
[5,] 8 11 5 5 0