Как найти% совпадения / сходства между ячейками в таблице в R?

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

0
задан tamcle 26 June 2019 в 21:47
поделиться

2 ответа

Эта же функция есть в ссылке на 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 .

1
ответ дан Gainz 26 June 2019 в 21:47
поделиться

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

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

Бест, Мостафа

0
ответ дан Mostafa Lotfi 26 June 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: