从数组创建地址列表

时间:2016-04-08 17:33:29

标签: sas

我正在尝试在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个常用地址字符串时。

1 个答案:

答案 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')生成更大的列表(这必须是多行,至少起初。)