列百分比对齐模式搜索

问题描述 投票:0回答:1

在具有2列以下字段的csv文件中,如何以百分比形式获得模式匹配以及对齐。注意:下面提到的值可能不正确。但是想知道如果对齐模式匹配多少正确它可以。

Field1  Field2  % match
aaaa    aa       66.667
bbb     ab       40
ccc     ccd      66.667
ddd     ddcv     57.142
r csv pattern-matching urlencode
1个回答
0
投票

如果你想知道两个字符串之间的相似百分比,那么你可以使用'Levenshtein Distance'或'Jaro-Winkler distance'来计算它。

library(dplyr)

#Levenshtein distance
library(RecordLinkage)
df_lv <- df %>%
  mutate(per_match = levenshteinSim(Field1, Field2))
df_lv
#  Field1 Field2 per_match
#1   aaaa     aa 0.5000000
#2    bbb     ab 0.3333333
#3    ccc    ccd 0.6666667
#4    ddd   ddcv 0.5000000
#5     aa    aas 0.6666667
#6     aa    aba 0.6666667


#Jaro–Winkler distance
library(stringdist)
df_jw <- df %>% 
  mutate(per_match = stringsim(Field1, Field2, method="jw"))
df_jw
#  Field1 Field2 per_match
#1   aaaa     aa 0.8333333
#2    bbb     ab 0.6111111
#3    ccc    ccd 0.7777778
#4    ddd   ddcv 0.7222222
#5     aa    aas 0.8888889
#6     aa    aba 0.6111111

#sample data
> dput(df)
structure(list(Field1 = c("aaaa", "bbb", "ccc", "ddd", "aa", 
"aa"), Field2 = c("aa", "ab", "ccd", "ddcv", "aas", "aba")), .Names = c("Field1", 
"Field2"), class = "data.frame", row.names = c(NA, -6L))

注意:我不确定您如何计算帖子中提到的百分比。正如@Uwe已在评论部分中提到的,您可能需要告诉我们您用于获取这些数字的算法,以便其他人可以帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.