检查r中另一个字符串中是否存在一个字符串的所有字符

Osh*_*han 2 r string-matching

我想比较像PRABHAKAR SHARMA和的字符串SHARMA KUMAR PRABHAKAR.目的是检查较短字符串的所有字符是否都存在于另一个字符串中.如果是这种情况,我应该获得100%匹配,否则表示匹配字符百分比的百分比.

我尝试levenshteinSimRecordLinkage包中使用但它给出了一个数字,对应于将一个字符串更改为另一个字符串所需的更改次数.

install.packages("RecordLinkage")
require(RecordLinkage)
levenshteinSim("PRABHAKAR SHARMA","SHARMA KUMAR PRABHAKAR")

#[1] 0.3636364
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望100%匹配.此外,还必须复制超过1,000,000条记录.

Kar*_* W. 5

这是一种方法

s1 <- "PRABHAKAR SHARMA"
s2 <- "SHARMA KUMAR PRABHAKAR"

compare <- function(s1, s2) {
    c1 <- unique(strsplit(s1, "")[[1]])
    c2 <- unique(strsplit(s2, "")[[1]])
    length(intersect(c1,c2))/length(c1)
}

compare(s1,s2)
#1
Run Code Online (Sandbox Code Playgroud)

但它可能有点慢.它也将空间角色视为角色.使用Vectorize应用在列:

dat <- data.frame(small=c("a", "b"), big=c("aa", "cc"), stringsAsFactors=FALSE)
vcomp <- Vectorize(compare)
dat <- transform(dat, comp=vcomp(small, big))
Run Code Online (Sandbox Code Playgroud)