文字列だけど数字のようにソートしたい
こんな風に文字なのにちゃんとソートしたいときってありますよね。
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
CDISC始めました
最近CDISCについて触れる機会がでてきましたので、CDISCについても触れたいと思います。
ヘイ!ユー!PROC REPORTにしちゃいなYO!
PROC PRINTよりPROC REPOT使いましょうよ的なレポートです。
So You're Still Not Using PROC REPORT. Why Not?
確かにPROC REPOTの方が圧倒的に応用が効きますよね。
でもあまり懲ろうとして、ドツボにハマリそうな気がしないでもないです。
ODS and Microsoft Excel
SASのODSとExcelに関するリンク集。
後で読みたい・・・
ODS and Microsoft Excel
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;