授業内容
KEEPステートメント(データステップ)
KEEPステートメントを使うと、生成されたデータセットの中の一部分だけを、新しいデータセットとして採用することが可能になります。プロシジャベースで、データのグルーピングが可能になります。
【新規プログラム】
data ftsize;
infile 'z:\SAS\base01FF.prn';
input samno hght wght ft atnd allw ;
select;
when( ft > 26.0) ftsize = 3;
when( ft <= 24.5) ftsize = 1;
otherwise ftsize = 2;
end;
keep samno hght wght ftsize;
proc print data=ftsize;
run;
quit;
【プログラム末尾】
例えば前回付けていたプログラムで作られるデータは、samnoからallwまでの6つの変数に、ftsizeという新しい変数が加わった7つの変数によって構成されます。式が増えれば増えるだけ、変数が増えることになり、作られるデータセットが巨大なものになっていきます。それでは作業が煩雑になるので、残したい変数を指定する場合、このKEEPステートメントを使うのが便利なのです。上のプログラムでは、したから2行目にKEEPステートメントで、身長と、体重と、グループ化された足のサイズのみを残す操作がされています。
このKEEPステートメントの逆の操作に、「DROPステートメント」というものがあります。DROPステートメントでは、残す操作をする代わりに、振り落とす操作をすることになります。例えば、上のプログラムでKEEPステートメントの代わりに、DROPステートメントで、以下のように書いても出てくる結果は同じようになります。
【修正プログラム先頭】
drop ft atnd allw;*<-さっきのプログラムのKeepステートメントの所を入れ替える;
【プログラム末尾】
CORRプロシジャ(プロシジャステップ)相関係数
変数のもつ特性を調査するとき、その変数同士がどんな関係にあるのかを探るのかは重要なことです。ある変数の値の変化に併せて、他の変数の値が変化する直接的な関係を相関(correlation)と呼びます。その相関の強さを測るのが相関係数と呼ばれるものです。相関係数は、マイナス1からプラス1までの範囲をとり、プラスの1に近いほどデータが似通っていることを表し(正の相関と呼びます)、マイナス1に近いほど相異なっていることを表します(負の相関と呼びます)。注意してほしいのは相関係数がゼロになった場合は、データが異なる様子を見せているのではなく、無関係になっていることを教えてくれているということです。また、相関係数がプラスの1になった場合、変数が全く同じものになっていると考えて差し支えありません。相関といった場合、2変数についてのみ考えてしまいそうになりますが、比べるものは3つ以上でも構いません。下の例は、身長と体重と足のサイズの3つについて相関をとっています。
【新規プログラム1】
data soukan;
infile 'z:\SAS\base01FF.prn';
input samno hght wght ft atnd allw ;
keep samno hght wght ft;
proc corr ;
var hght wght ft;
run;
quit;
【プログラム末尾】
相関を調べる場合、何かを何かによって説明させることも可能です。例えば足のサイズによって、身長と体重を説明させたい場合、WITHステートメントを使って次のような指定をしてやります。
【新規プログラム2】
data soukan;
infile 'z:\SAS\base01FF.prn';
input samno hght wght ft atnd allw ;
keep samno hght wght ft;
proc corr ;
var ft;
with hght wght;
run;
quit;
【プログラム末尾】
ここででてくる相関は、足のサイズと身長、足のサイズと体重の2つの組み合わせだけになります。
また、オプションとしてBYステートメントを使うことによって変数の各要素ごとの相関を取ることも可能です。
【新規プログラム3】
data soukan;
infile 'z:\SAS\base01FF.prn';
input samno hght wght ft atnd allw ;
drop allw;
if atnd = '.' then delete;
atnd = round(atnd);
proc sort;
by atnd;
proc corr;
var ft;
with hght wght;
by atnd;
run;
quit;
【プログラム末尾】
ただし、身長データ、足のサイズのデータに欠損値があればそのデータはDeleteステートメントを使ってあらかじめ取り除いておくこと(これもプログラムの中で処理すること)。