data TEST;
call streaminit(1234);
do SUBJID=100 to 199;
if rand('uniform')<0.5 then ARM='A群';else ARM='B群';
if rand('uniform')<0.3 then SEX='男性';else SEX='女性';
if rand('uniform')<0.7 then AGE='非高齢者';else AGE='高齢者';
if SEX='男性' then WEIGHT=round(rand('normal')*15+65,0.1);
if SEX='女性' then WEIGHT=round(rand('normal')*15+45,0.1);
output;
end;
run;
これに対して、以下のようにMEANSあるいはSUMMARYのclassに3水準を指定して
平均値を求めるようにしてデータセット作成を実行するとどうなるでしょうか?
proc means data=TEST noprint;
class ARM SEX AGE;
var WEIGHT;
output out=OUT_1 mean=MEAN;
run;
上記のように27オブザベーションで統計量が算出されます。
0水準の場合(全体)=1
1水準の場合を3変数に対して=2×3=6
2水準の場合を3変数から2変数を選ぶ組み合わせ全てに対して=3C2×4=12
3水準の場合 2×2×2=8
なので1+6+12+8=27となるわけです。
全部の組み合わせについて計算してくれるのは凄いのですが、これらの結果全てを使用したくて
プロシジャを実行することは少なく、だいたいは欲しい部分は決まっていると思います。
今欲しいのが一番高い水準→3水準であった場合nwayオプションを指定すると
_TYPE_の値が一番高い部分のみ抽出してくれます。
proc means data=TEST nway noprint;
class ARM SEX AGE;
var WEIGHT;
output out=OUT_2 mean=MEAN;
run;
また、例えば群×性別×年齢と群×年齢の組み合わせの結果が欲しいといった場合は
TYPESステートメントで欲しい水準の組み合わせを指定します。
proc means data=TEST noprint ;
class ARM SEX AGE;
types ARM*SEX*AGE ARM*AGE;
var WEIGHT;
output out=OUT_3 mean=MEAN;
run;
すると
でめでたしめでたし
0 件のコメント:
コメントを投稿