如何在SAS中按字母顺序对地址进行排序?

时间:2018-07-02 01:26:51

标签: sas

我有一个dataset,有很多地址。

PROC SORT DATA=work68;
    by ADDRESS ;


run;

但是它仅显示{.1}列,例如..,它仅考虑地址的第一个数字。

ADDRESS

3 个答案:

答案 0 :(得分:1)

您可以使用选项SORTSEQ=LINGUISTIC(NUMERIC_COLLATION=ON)来让SAS尝试对数字值进行排序,就好像它们是数字一样。

PROC SORT DATA=work68 sortseq=linguistic(numeric_collation=on);
    by ADDRESS ;
run;

答案 1 :(得分:0)

如果我正确理解了您的要求,则可以尝试创建一个删除了所有数字的新地址列并对其进行排序:

QUERY: SELECT cars FROM my_cars WHERE id IN ('x','y','z')

答案 2 :(得分:0)

Proc SQL语法可以特殊方式对数据进行排序,ORDER BY <computation-1>, …, <computation-N>

您可能想先按街道名称排序,然后再按数字前提标识符(门牌号码)排序。例如

数据

data have; input; address=_infile_;datalines;
2237 Strang Avenue 
2932 Ely Avenue 
3306 Wilson Ave 
3313 Wilson Avenue 
46 Nuvern Avenue
3313 Ely Avenue
4494 Nuvern Avenue
run;

按街道名称排序,然后按门牌号

proc sql;
  create table want as
  select *
  from have
  order by
    compress (address,,'ds')                /* ignore digits and spaces - presume to be street name */
  , input (scan(address,1),? best12.)       /* house number */
  ;
quit;

此示例简化了假设,并且无法正确排序#### ##th Street之类的地址结构