我有一个非常有趣的问题陈述......我有两个实际上彼此相关的数据集(它们都与汽车品牌和型号有关)。其中一列是处理过的数据(品牌、型号和变体已被拆分、处理和编辑),而另一列是原始提要。
有没有什么办法可以让两人结缘?我完全迷路了,因此没有提供任何代码。问题是没有办法链接这两列,因为没有 SID....它的纯名称。
乔是对的,您需要提供示例数据或至少一个起点,这才是一个好问题。但无论如何,这是一个答案的尝试。
如果您只有名称变量,假设它们是字符变量,您将需要使用字符串比较函数。对此的一般程序如下:
通过删除标点符号和标准化大小写来清理两个名称变量。您应该使用 compress() 和 upcase() 或 lowcase() 函数作为起点。
接下来,您需要将一个数据集中的每个名字与另一个数据集中的每个名字进行比较,并选择最相似的一对作为初步匹配。查看 spedis() 和 complev() 函数以了解创建相似度分数的方法。
查看输出数据集结果!像这样的模糊匹配可以调整为非常好,但从长远来看它不会是完美的,您必须至少检查结果的随机样本以检查错误。前几次你会发现问题,并希望通过更新#2 中的评分方法开始迭代以获得更好的解决方案。
这是一个非常基本的代码外壳,可能会有所帮助:
DATA output_matches (keep = name_1 match_name match_score);
SET input_data_1;
match_score = 0;
do i = 1 to N_data_2; /* N_data_2 is the number of observations in data set 2. */
SET input_data_2 point = i;
score = ...; /* You need to edit this to calculate a similarity score between the variables name_1 and name_2. */
if score < match_score then do;
match_score = score;
match_name = name_2;
end;
end;
RUN;