gpt4 book ai didi

excel - 使用 SAS 或 Excel 删除 "almost duplicates"

转载 作者:行者123 更新时间:2023-12-02 10:45:24 25 4
gpt4 key购买 nike

我正在 SAS 工作,我有一个包含 2 列的数据集,我不仅要删除重复项,还要删除“几乎”重复项。数据如下所示:

**Brand        Product**
Coca Cola Coca Cola Light
Coca Cola Coca Cola Lgt
Coca Cola Cocacolalight
Coca Cola Coca Cola Vanila
Pepsi Pepsi Zero
Pepsi Pepsi Zro

我不知道这是否真的可能,但我希望文件在删除“重复项”后看起来像这样:

    **Brand        Product**
Coca Cola Coca Cola Light
Coca Cola Coca Cola Vanila
Pepsi Pepsi Zero

我不偏好决赛 table 是否有例如“Pepsi Zero”或“Pepsi Zro”,只要没有“重复”值即可。

我在想是否有一种方法可以比较例如前 4-5 个字母,如果相同则将其视为重复。但我当然愿意接受建议。如果有一种方法可以在 excel 中完成,我很想听听。

最佳答案

我将首先直接引用 Jeff 的 answer :

SAS has at least a couple functions for calculating edit distance between two strings:

Compged, for general edit distance: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002206133.htm

Complev, for Levenshtein distance: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002206137.htm

还有用于比较编辑距离的 spedis() 函数。

现在这些都很棒,但我个人最喜欢的是 soundex() 函数,它允许您测试两个单词“听起来”是否相同。它不会 100% 正确,但在本例中结果正常。

首先一些数据:

Data HAVE;
attrib name length=$20 alt_name length=$20;
infile datalines dsd dlm=',' truncover;
input name $ alt_name $;
datalines;
Coca Cola ,Coca Cola Light
Coca Cola ,Coca Cola Lgt
Coca Cola ,Cocacolalight
Coca Cola ,Coca Cola Vanila
Pepsi ,Pepsi Zero
Pepsi ,Pepsi Zro
;
Run;

获取我们想要比较的每个单词组合,并计算用于目测的 soundex():

proc sql noprint;
create table cartesian as
select a.name,
a.alt_name as alt_name1,
b.alt_name as alt_name2,
soundex(a.alt_name) as soundex_a,
soundex(b.alt_name) as soundex_b
from have a, have b
where a.name = b.name
and soundex(a.alt_name) eq soundex(b.alt_name)
;
quit;

现在我将把它留作练习,以对结果列表进行重复数据删除。但基本上这会告诉你哪些词是匹配的。如果匹配出现误报,只需将它们添加到异常(exception)列表中即可手动转换这些特定值。

关于excel - 使用 SAS 或 Excel 删除 "almost duplicates",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29373148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com