如何在R中的表格中的单元格之间找到%匹配/相似度?

时间:2019-06-26 20:33:32

标签: r

我在表中有一堆序列(即TCGATCGATCGA),我想找到90%匹配的序列。我正在查看RecordLinkage包和函数levenshteinSim。我知道我可以手动导入每个序列并进行比较,但是我有1000多个序列,那么如何获得它来自动比较每一行呢?

2 个答案:

答案 0 :(得分:1)

相同的功能在Mako212的链接中,尽管我有时会使用这个软件包,但我想给出一些解释,它可能非常有用。我们将使用levenshteinSim()包中的RecordLinkage函数。

包装:

install.packages("RecordLinkage")
library(RecordLinkage)

找到这90%的匹配项:

data <- c("tcgartyu", "tcgart", "tckael", "tcgatcgatc", "tcgatcgatcg")
[1] "tcgartyu"   "tcgart"     "tckael"     "tcgatcgatc"   "tcgatcgatcg"

matches <- levenshteinSim('tcgatcgatcga', data)
[1] 0.42 0.42 0.25 0.83 0.92

matches_90 <- matches > 0.9
[1] FALSE FALSE FALSE FALSE  TRUE

因此,使用此功能,您将能够获得匹配90%(或在我的示例中更高)的行。然后,您可以按照自己的方式使用这些百分比匹配。

请注意,来自str1函数的str2levenshteinSim()参数必须是字符向量。

有关更多信息,请访问https://cran.r-project.org/package=RecordLinkage

答案 1 :(得分:0)

我建议您查看该字符串距离软件包。具体来说,此stringdist()函数为您提供一个数字输出,该输出与一个字符串与另一个字符串之间的距离有关。您应该能够按照自己的目的进行操作。

https://cran.r-project.org/web/packages/stringdist/stringdist.pdf

最好, 莫斯塔法(Mostafa)