【发布时间】:2015-05-19 00:02:35
【问题描述】:
我有一个电子邮件列表,我想使用最长公共子字符串比较行之间的模式(相似性)来比较它们。
data 是带有电子邮件的数据框:
V1
1 "01003@163.com"
2 "cloud@coldmail.com"
3 "den_smukk_kiilar@hotmail.com"
4 "Esteban.verduzco@gmail.com"
5 "freiheitmensch@gmail.com"
6 "mitsoanastos@yahoo.com"
7 "ahmedsir744@yahoo.com"
8 ...
这是我的代码:
library(stringdist)
for(i in 1:nrow(data)) {
sample <- data[i,]
for(j in (i+1):nrow(data)) if(i+1 <= nrow(data)) {
if((stringdist(data[j,],sample,method='lcs'))<=3) { #number of different characteres 3 (123.456 == 123.321)
duplicate <- data[j,]
email1 = as.character(data[i,])
email2 = as.character(data[j,])
pair <- cbind(email1, email2)
output3[dfrow, ] <- pair
dfrow <- dfrow + 1
}
}
}
“输出”是显示相似电子邮件的数据框。
email1 email2
1 "01079@163.com" "01069@163.com"
我有 30 万封电子邮件,这将需要很长时间......
有没有更好的方法?
谢谢!
【问题讨论】:
标签: r for-loop pattern-matching nested-loops reshape