Как найти% совпадения / сходства между ячейками в таблице в R? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть несколько последовательностей в таблице (т. Е. TCGATCGATCGA), и я хочу найти те, которые на 90% совпадают.Я смотрю на пакет RecordLinkage и функцию levenshteinSim.Я знаю, что могу вручную импортировать каждую из последовательностей и сравнивать, но у меня есть более 1000 последовательностей, так как мне заставить его автоматически сравнивать каждую строку друг с другом?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Эта же функция есть в ссылке на 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 и str2 из функции levenshteinSim() должны быть символьными векторами.

Длядополнительная информация идет по https://cran.r -project.org / package = RecordLinkage .

0 голосов
/ 27 июня 2019

Я бы порекомендовал вам взглянуть на пакет расстояний между строками. В частности, это функция stringdist (), которая выдает числовой вывод, связанный с тем, как далеко одна строка от другой. Вы должны быть в состоянии поиграть с порогами, чтобы удовлетворить ваши цели.

https://cran.r -project.org / веб / пакеты / stringdist / stringdist.pdf

Лучший, Мостафа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...