我正在尝试在SAS中创建一个模糊匹配算法,而我却陷入了创建所有可能的地址选项列表的机制。
我想创建一个公共地址字符串列表,即St,Street,Ave,Avenue等。
然后获取地址,如果字符串中的任何单词与公共地址字符串列表匹配,则创建该地址的所有可能方案。
例如:
101 N Main St将转换为: 101 N Main St. 101 N Main Street 101 North Main St. 101 North Main Street
我可以小规模编程,但不是当我在列表中有大约100个常用地址字符串时。
答案 0 :(得分:0)
我会将常用事物列表(ST-> STREET等)放入格式中。然后,您可以使用PUT创建数组(或者可能是垂直数据集),并使用该格式输入各种单词,如果返回非null,则将新位放入新的数组元素中。
类似的东西:
步骤1.使用您的关系制作excel文件
步骤2.导入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格式和MULTILABEL选项(hlo =' m')生成更大的列表(这必须是多行,至少起初。)