【问题标题】:How to do cross rows operation in SAS ?如何在 SAS 中进行跨行操作?
【发布时间】:2016-05-17 09:20:37
【问题描述】:

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

【问题讨论】:

标签: sas levenshtein-distance


【解决方案1】:

proc sql 中进行自我加入,使用compged 的结果作为加入条件的标准:

例子:

过程 sql ; 创建表similar_emails为 选择a.Email 作为EmailA,b.Email 作为EmailB 从 email_list 一个 左连接 电子邮件列表 b 上 compged(a.Email,b.Email)

【讨论】:

  • 但我只有一个电子邮件列表。假设我没有。电子邮件 ID。我必须将第一个电子邮件 ID 与其余 (n-1) 个电子邮件 ID 进行比较,将第二个电子邮件 ID 与其余 (n-1) 个电子邮件 ID 进行比较。
  • 使用交叉连接而不是左连接,对分数进行排序并将其添加到 select 语句中。
  • 我的示例基于单个电子邮件列表。如果您希望排除与自身匹配的电子邮件,请在前面的数据步骤中为每一行指定一个 ID,并将 and a.ID ^= b.ID 添加到连接条件。
  • 或者您可以删除任何 emailA=emailB 的观察结果
猜你喜欢
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多