我有一个dataset
,有很多地址。
PROC SORT DATA=work68;
by ADDRESS ;
run;
但是它仅显示{.1}列,例如..,它仅考虑地址的第一个数字。
ADDRESS
答案 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
之类的地址结构