我正在尝试按如下方式对数据集进行排序
data X;
input name$;
cards;
ab
abb
b--
ba
; run;
我用
proc sort data=X ; by name; run;
输出是:
ab
abb
b--
ba
但是我看到我希望输出为
ab
abb
ba
b--
我可以使用的proc排序中的选项是什么(SORTSEQ选项)?
答案 0 :(得分:2)
据我所知,你可以做到这一点的唯一方法(更改排序顺序,以便在字母字符后出现破折号)将使用PROC TRANTAB
来定义用户定义的转换表,其后出现破折号那些字母,然后在SORTSEQ
中使用它:
例如,在这里,我将短划线移到字母' z' (' {'是ASCII校对序列中字母' z'后面的字符):
proc trantab table=ascii;
list one;
save table=nodash;
replace '-' '{';
save table=nodash;
list one;
run;
quit;
data X;
input name$;
cards;
ab
abb
b--
ba
;
run;
proc sort data=x sortseq='nodash';
by name;
run;
答案 1 :(得分:0)
我认为没有任何选择可以帮助你。 ' - '出现在ASCII字母之前,并且对sortseq=
选项中可用的其他整理顺序没有变化。
实现目标的一种方法是将所有非字母字符更改为ASCII字母后面的字符,例如'〜'。我不知道这对您的真实数据有多可行或实用。