文字列だけど数字のようにソートしたい

こんな風に文字なのにちゃんとソートしたいときってありますよね。

data numbers;
input number $;
cards;
Part1
Part2
Part3
Part4
Part5
Part6
Part7
Part8
Part9
Part10
;

今までは数値型の変数をもう一つ用意して、ソートしていました。
このままソートできる方法ないかな、と探していたら・・・
ありましたよ!
sortseq=linguistic (numeric_collation=on)
を追加指定するだけ。

proc sort data=numbers sortseq=linguistic (numeric_collation=on) ;
by number;
run;

SAS 9,2からの新しい機能だったようで。
全く知らなかったです。
目から鱗が落ちました。

Obs number

1 Part1
2 Part2
3 Part3
4 Part4
5 Part5
6 Part6
7 Part7
8 Part8
9 Part9
10 Part10


Linguistic Collation-SAScommunityorg

ヘイ!ユー!PROC REPORTにしちゃいなYO!

PROC PRINTよりPROC REPOT使いましょうよ的なレポートです。
So You're Still Not Using PROC REPORT. Why Not?
確かにPROC REPOTの方が圧倒的に応用が効きますよね。
でもあまり懲ろうとして、ドツボにハマリそうな気がしないでもないです。

PROC PROPCASE

SAS9.1から使える関数PROPCASEメモ。
Using the PROPCASE function
最初の1文字を大文字にする関数のようです。
従来の方法:

DATA CAPITALIZE;
INFORMAT FIRST LAST $30.;
INPUT FIRST LAST;
FIRST = LOWCASE(FIRST);
LAST = LOWCASE(LAST);
SUBSTR(FIRST,1,1) = UPCASE(SUBSTR(FIRST,1,1));
SUBSTR(LAST,1,1) = UPCASE(SUBSTR(LAST,1,1));
DATALINES;
ronald cODy
THomaS eDISON
albert einstein
;
PROC PRINT DATA=CAPITALIZE NOOBS;
TITLE "Listing of Data Set CAPITALIZE";
RUN;

PRPOCASEを使う方法:

DATA PROPER;
INPUT NAME $60.;
NAME = PROPCASE(NAME);
DATALINES;
ronald cODy
THomaS eDISON
albert einstein
;
PROC PRINT DATA=PROPER NOOBS;
TITLE "Listing of Data Set PROPER";
RUN;