данный скрипт R вычисляет сходство в % между двумя именами, как показано на рисунке. Здесь у нас есть два столбца «names1» и «names2» с соответствующими идентификаторами в id1 и id2. Мое требование состоит в том, что когда мы выполняем скрипт, каждое имя в «names1» сравнивается с каждым именем в столбце «names2», я не хочу, чтобы одна и та же запись, т.е. столбец (id1,names1), сравнивалась с его идентичной записью в ( столбец id2,names2). Например, первая (id1,names1) запись (1,Prabhudev Ramanujam) должна сравниваться со всеми (id2,names2), но не с первой (id2,names2) записью. Аналогично для всех пар. Также, если формула
percent(sapply(names1, function(i)RecordLinkage::levenshteinSim(i,names2)))
можно настроить для получения аналогичного и более быстрого результата здесь, поскольку он замедляется при больших объемах данных. Прикрепите снимок, пожалуйста, помогите.
library(stringdist)
library(RecordLinkage)
library(dplyr)
library(scales)
id1 <- 1:8
names1 <- c("Prabhudev Ramanujam","Deepak Subramaniam","Sangamer
Mahapatra","SriramKishore Sharma",
"Deepak Subramaniam","SriramKishore Sharma","Deepak
Subramaniam","Sangamer Mahapatra")
id2 <- c(1,2,3,4,11,13,9,10)
names2 <- c("Prabhudev Ramanujam","Deepak Subramaniam","Sangamer
Mahapatra","SriramKishore Sharma",
"Deepak Subramaniam","Sangamer Mahapatra","SriramKishore
Sharma","Deepak Subramaniam")
Name_Data <- data.frame(id1,names1,id2,names2)
Percent<- percent(sapply(names1, function(i)
RecordLinkage::levenshteinSim(i,names2)))
Total_Value <- data.frame(id2,names2,Percent)
i1 <- seq_len(nrow(Name_Data)); percent(sapply(i1, function(i) RecordLinkage::levenshteinSim(names1[i], names2[setdiff(i1, i)])))
- person akrun   schedule 06.01.2018percent(unlist(lapply(1:length(names1), function(x) levenshteinSim(names1[x], names2[-x]))))
так будет немного быстрее - person erocoar   schedule 06.01.2018outer
может быть быстрееpercent(outer(names1, names2, FUN= RecordLinkage::levenshteinSim))
или сделать перекрестное соединениеlibrary(data.table); CJ(names1, names2)[, percent(RecordLinkage::levenshteinSim(V1, V2))]
- person akrun   schedule 06.01.2018