我有一个非常有趣的问题陈述...我有两个实际上彼此相关的数据集(它们都与汽车制造商和模型有关)。虽然其中一个是处理数据(品牌,型号和变体已被拆分,处理和编辑),而另一列是原始数据。文本挖掘数据总量
有什么办法可以让两者有联系吗?我完全失去了,因此,没有提供任何代码。问题是没有办法链接两列,因为没有SID ....它的纯名字。
我有一个非常有趣的问题陈述...我有两个实际上彼此相关的数据集(它们都与汽车制造商和模型有关)。虽然其中一个是处理数据(品牌,型号和变体已被拆分,处理和编辑),而另一列是原始数据。文本挖掘数据总量
有什么办法可以让两者有联系吗?我完全失去了,因此,没有提供任何代码。问题是没有办法链接两列,因为没有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;
非常感谢帮助...我会给它一个镜头,并更新你,当我得到一些结果! – galeej
你没有提供足够的信息,也没有一个具体问题,足以在这里真正回答。是的,你可以把它们联系起来。不,它不像“波浪魔杖”那么简单;这取决于你的数据,可能涉及很大的努力,远远超过了对一个问题的答案是适当的。 – Joe
我对不提供信息表示歉意。只是没有提供的信息......我知道这将是一项非常艰巨的任务(文本分析从不简单)......我想要一个理想的地方开始......我想也许,我会得到想法从哪里开始... – galeej