我有一个非常有趣的问题陈述......我有两个实际上彼此相关的数据集(它们都与汽车品牌和型号有关)。其中一个是已处理数据(品牌,型号和变量已分割,处理和编辑),而另一列是原始Feed。
有没有办法让两者联系起来?我完全失去了,因此,没有提供任何代码。问题是没有办法链接这两列,因为没有SID ....它的纯名称。
答案 0 :(得分:0)
乔是对的,你需要提供样本数据或至少是一个起点,这是一个很好的问题。但无论如何,这都是一个答案的尝试。
如果只有名称变量,假设它们是字符变量,那么您将需要使用字符串比较函数。一般程序如下:
通过删除标点符号并标准化案例来清除两个名称变量。您应该使用compress()和upcase()或lowcase()函数作为起点。
接下来,您需要将一个数据集中的每个名称与另一个名称中的每个名称进行比较,并选择最相似的一对作为初步匹配。查看spedis()和complev()函数以了解创建相似性得分的方法。
查看输出数据集结果!像这样的模糊匹配可以调整得很好,但从长远来看它不会是完美的,你必须至少检查结果的随机样本以检查错误。前几次你会发现问题并希望通过在#2中更新你的评分方法来开始寻求更好的解决方案。
这是一个非常基本的代码shell,可能会有所帮助:
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;