如何在SAS中进行跨行操作?

如何在SAS中进行跨行操作?,sas,levenshtein-distance,Sas,Levenshtein Distance,我在SAS数据集中有一个电子邮件列表。我想从列表中找出类似的电子邮件地址。我正在尝试在电子邮件变量的所有行中实现comped函数。我需要根据相似的距离对列表进行排序,以便相似的电子邮件地址成为邻居。有人能帮忙吗 在proc sql中执行自联接,使用comped的结果作为联接条件的标准: 例如: proc sql ; create table similar_emails as select a.Email as EmailA, b.Email as EmailB from email

我在SAS数据集中有一个电子邮件列表。我想从列表中找出类似的电子邮件地址。我正在尝试在电子邮件变量的所有行中实现comped函数。我需要根据相似的距离对列表进行排序,以便相似的电子邮件地址成为邻居。有人能帮忙吗

proc sql
中执行自联接,使用
comped
的结果作为联接条件的标准:

例如:

proc sql ; create table similar_emails as select a.Email as EmailA, b.Email as EmailB from email_list a left join email_list b on compged(a.Email,b.Email) <= 200 order by a.Email ; quit ; proc-sql; 创建与电子邮件类似的表 选择a.电子邮件作为电子邮件a,b.电子邮件作为电子邮件b 从电子邮件列表a 左连接
电子邮件(a.email,b.email)你现在的代码是什么?结果出了什么问题?对于这种类型的链接,您可以尝试这里的选项,@friedegg的解决方案在comped方面是好的,并且参考the-link-king.com也是一个好的选项。但我只有一个电子邮件列表。假设我有n个电子邮件ID。我必须将第一个电子邮件id与rest(n-1)电子邮件id进行比较,将第二个电子邮件id与rest(n-1)id进行比较。使用交叉连接而不是左连接,根据分数进行排序,并将其添加到select语句中。我的示例基于单个电子邮件列表。如果您希望排除电子邮件与自身的匹配,请在前面的数据步骤中为每一行指定一个ID,并将
和a.ID^=b.ID
添加到连接条件中。或者您可以删除emailA=emailB的任何观察结果