R多重模糊匹配agrep创建变量

R多重模糊匹配agrep创建变量,r,match,agrep,R,Match,Agrep,R新手。我想通过创建一个变量(是/否)来创建一个测试,检查名字或姓氏是否与电子邮件地址匹配。如果是,请在该行中附加一个“yes”变量 数据示例: id firstname lastname email address match 1 patrick boyles patrickb@gmail.com yes 2 zeke cosmos zeke@gmail.com yes 3 foo foo abcd@gmail.com no 我知道我需要使用agrep。让我困惑的是,如何让R检查两列(名字和

R新手。我想通过创建一个变量(是/否)来创建一个测试,检查名字或姓氏是否与电子邮件地址匹配。如果是,请在该行中附加一个“yes”变量

数据示例:

id firstname lastname email address match
1 patrick boyles patrickb@gmail.com yes
2 zeke cosmos zeke@gmail.com yes
3 foo foo abcd@gmail.com no
我知道我需要使用agrep。让我困惑的是,如何让R检查两列(名字和姓氏),并且只检查该行内的内容

谢谢
-新手

以下是一些开始

library(stringdist) # install.packages("stringdist") b4, if you need to
df <- read.table(header = TRUE, text = "id firstname lastname emailaddress match
1 patrick boyles patrickb@gmail.com yes
2 zeke cosmos zeke@gmail.com yes
3 foo foo abcd@gmail.com no")
df$match2 <- ifelse(with(df, stringdist(a = paste0(firstname, lastname), 
                                        b = sub("(.*)@.*", "\\1", emailaddress), 
                                        method = "lcs")) <= 7, 
                    "yes", "no")
df
#   id firstname lastname      email.address match match2
# 1  1   patrick   boyles patrickb@gmail.com   yes    yes
# 2  2      zeke   cosmos     zeke@gmail.com   yes    yes
# 3  3       foo      foo     abcd@gmail.com    no     no
library(stringdist)#安装.packages(“stringdist”)b4,如果需要

你们互相匹配吗?是否匹配到另一个数据集?您正在寻找
apply(dat,1,函数(x){x[[2]]和x[[3]]})
完全伪造的电子邮件地址和数据,其中的名字或姓氏与电子邮件地址模糊匹配。另一种方法可能是在@符号处拆分电子邮件地址,并使用ngram(可能是3,以涵盖大多数情况)进行匹配?最长的公共子串(method=“lcs”和method=“dl”不处理换位。我刚刚读了马克·范德洛的文章,所以我很高兴能测试一些想法。是的,听起来像是对我另一个答案的有趣尝试。:)