我试图在SAS中创建一个模糊匹配算法,但我被困在创建所有可能的地址选项列表的机制上。
我想创建一个通用地址字符串的列表,例如,St、街道、大道、大道等。
然后获取地址,如果字符串中的任何单词与公共地址字符串列表匹配,则创建该地址的所有可能场景。
举个例子:
北大街101号将转换为:北大街101号北大街101号北大街101号北大街101号北大街
我可以对此进行小规模的编程,但当我想在列表中包含大约100个常用地址字符串时,就不能这样做了。
发布于 2016-04-09 02:21:27
我会把常见的东西列表(ST->街道等)转换成一种格式。然后,您可以通过使用PUT和PUTting创建数组(或者,可能是垂直数据集),使用该格式的各种字,如果返回非null,则将新的位放入新的数组元素中。
类似于:
步骤1.创建包含您关系的excel文件
Step2.导入excel文件,使用PROC format CNTLIN=选项导入为某种格式,hlo=o为‘’(其他选项)
步骤3.在datastep中应用,如下所示:
data want;
set have;
do _i = 1 to countw(address);
*use CALL SCAN to find position of i'th word and extract to _ADDCHECK;
*use PUT with format created in step 2 to see if it matches;
if _addcheck ne ' ' then do;
*use CALL SCAN results combined with SUBSTR to put _ADDCHECK back in;
output; *or store in an array if you prefer;
end;
end;
run;然后你就有了非常灵活的东西。
另一种仍然适用于格式的选择是将地址分割成单独的单词,然后使用PROC TABULATE和格式和多标签选项(hlo='m')来生成更大的列表(这将必须是多行,至少在一开始是这样)。
https://stackoverflow.com/questions/36505909
复制相似问题