В настоящее время я работаю над проектом программирования в R (для школы), и я использую набор данных, сделанный из большого количества пользователей LastFm (приложение, которое собирает данные, когда вы используете медиа плеер). Я хочу работать над возможной связью между двумя переменными, присутствующими в наборе данных, которые являются «никнейм» и «настоящим именем». Для этого я хотел бы вычислить переменную, которая представляет скорость сходства между символами.сравнение строки в R
В качестве примера взять одного человека (независимо от других переменных):
name = 'chris meller'
nickname = 'mellertime'
До сих пор пытался сортировать строки, чтобы проверить на одинаковых символов один за другим, но я застрял здесь , То, что я нашел, - это просто способ проверить, присутствует ли «имя» внутри «никнейма» с различными функциями.
>paste(sort(unlist(strsplit(name, ""))), collapse = "")
[1] "eeeillmmrt"
>paste(sort(unlist(strsplit(nickname, ""))), collapse = "")
[1] " ceehillmrrs"
То, что я хотел бы знать, если есть способ, чтобы подсчитать количество одинаковых букв между 2 строки символов, независимо от того?
Я хотел бы закончить с чем-то вроде этого:
function(a,b)
[1] 0.63
# a,b are 2 character strings
где результат представляет собой отношение числа идентичного характера между двумя строками, разделенных на количестве символов в реальном имени.
Граф письма с 'таблицы (strsplit ('eeeillmmrt', '') [[1]])', но расстояние редактирования (см. '? adist'), вероятно, будет более полезным. – alistaire
@alistaire спасибо за подсказку, я никогда не слышал, чтобы расстояние Левенштейна, которое используется в adist, если я не могу найти свой путь, я, вероятно, что-то сделаю с Левенштейном. –
@allstaire, не могли бы вы дать больше информации о реализации «adist»? Я не мог заставить его вернуть то, что искали ОП. Я даже попытался немного поработать в пакете 'stringdist', но не смог получить подходящее решение. –