4月から SAS の使い方を統計手法を中心に紹介してきたが、
目前のテーマに対して活用できるようになってきたであろうか?
それぞれの手法を理解すると共にこれらを組み合わせることによって
より多角的な知見が得られるようになると思う。
入力したデータをそのまま使うのであれば統計手法を使うだけで済むと思うが、
変量の四則演算の結果を調査対象にしたり、
データの一部を抽出して利用しようとすると、
何らかの指示を出さなければならない。
手っ取り早い方法としては、MS-Excel にデータを転送して、
目的の処理を実施後、再転送することによって実現することもできるが、
SAS 内でも同様のことを行うことが可能である。
今回は SAS を使うにあたって知っていると便利かもしれない
データの変容(加工)テクニックを幾つか紹介する。
なお、
第15回
では、第4節で「変数変換」を、第5節で「if 文」を紹介したので、
これも併せて参考にすると良い。
data rei01; do i=1 to 200; x=rannor(12345); output; end; run;
/* Lesson 21-1 */ /* File Name = les2101.sas 11/22/01 */ options linesize=72; /* pagesize=20; */ : 出力サイズの指定 data rei01; : データセット名を rei01 とする do i=1 to 200; : 200回の繰り返し x=rannor(12345); : 正規乱数を発生させる output; : データセットに追加する end; : 繰り返しの終端 run; : proc print data=rei01(obs=10); : 先頭 10ケースの表示 run; : proc means data=rei01; : 全データに対する平均の計算 run; : proc print data=rei01(firstobs=91 obs=110); : 91番から 110番のデータの表示 run; : proc means data=rei01(firstobs=91 obs=110); : 91番から 110番のデータについての平均 run; : data _null_; : データセット名は付けない set rei01; : 元となるデータセット名 file "unsorted.dat"; : 出力ファイル名 put i 5. x 15.8; : 変量 i は小数点以上 5桁で run; : 変量 x は小数点以上 15桁、以下 8桁で proc sort data=rei01; : 並べ替え by x; : 変量 x について run; : proc print data=rei01(obs=10); run; proc print data=rei01(firstobs=91 obs=110); run; proc means data=rei01(firstobs=91 obs=110); run; data _null_; set rei01; file "sorted.dat"; put i 5. x 15.8; run;
/* Lesson 21-2 */ /* File Name = les2102.sas 11/22/01 */ options linesize=72; /* pagesize=20; */ data rei02; : データセット名を rei02 とする do i=1 to 100; : x=rannor(23456); : 上記とは別の種で乱数を発生させる x10=int(x*10); : 10倍して正数部分だけ利用 output; : end; : run; : title "Default"; : 見出し(タイトル)を付ける : 「指定なし」 proc chart data=rei02; : オプションを指定しない場合のヒストグラム hbar x; : 変量 x について run; : title "Ascending order"; : 「昇順」 proc chart data=rei02; : hbar x / midpoints=-3 to 3 by .5; : 変量 x について昇順で。0.5 刻み。 run; : title "Descending order"; : 「降順」 proc chart data=rei02; : hbar x / midpoints=3 to -3 by -.5; : 変量 x について降順で。-0.5 刻み。 run; : title "Default"; : 「指定なし」: x10 を昇順に表示 proc freq data=rei02; : オプションを指定しない場合の度数分布表 tables x10; : 変量 x10 について run; : title "Freqency order"; : 「頻度降順」: 頻度の大きいものから proc freq data=rei02 order=freq; : tables x10; : 変量 x10 についての頻度順に表示 run; : proc sort data=rei02; : 並べ替え by decending x10; : x10 について降順に並べる run; : title "Descending order"; : 「数値降順」: x10 を降順に表示 proc freq data=rei02 order=data; : データの出現順で表示させるというオプション tables x10; : run; :
data rei03; infile 'data03.dat' obs=10000 truncover lrecl=530;
input kamoku $ 2 kesseki $ 3 k_code $ 10-11 t_score 12-14 s_scor01 103-104 s_scor02 105-106 s_scor03 107-108 s_scor04 109-110 ;