我正在尝试按如下方式对数据集进行排序
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 sort 中的什么选项(SORTSEQ 选项)?
最佳答案
据我所知,执行此操作的唯一方法(更改排序顺序,以便破折号出现在字母字符后面)是使用 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;
关于将非字母字符(破折号)排序在字母字符之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387617/