詰めSAS2回目_複数の変数の値で転置する

SAS9.2からtransposeプロシジャのidステートメントに2個以上の変数を指定可能になりました。
あまり取り上げられるところを見たことがないのですが、これはかなり革命的なことだと思っています。いずれ取り上げたいですが、meansプロシジャのclassdataステートメントと合わせれば、医薬系で臨床試験の有害事象を群別Grade集計するのなどが、かなり楽でスマートにできるようになりました。

ほとんど答えを先に言ってしまいましたが、詰めSAS_2問目です。


data Q1;
input X Y Z;
cards;
1 4 3
2 9 8
7 6 5
;
run;







このデータセットについてX、Yの値によってZの値を転置して以下のデータセットを作ります。

目的局面図は以下です。






【解法1】
proc transpose data=Q2 out=A1(drop=_NAME_);
 var Z;
 id X Y;
run;

これだけで詰んでます。idステートメントの複数変数指定はもっと注目されるべきSASのバージョンアップポイントだと思います。

【解法2】
data A2;
 set Q1(where=(X=1 and Y=4) rename=(Z=_14));
 set Q1(where=(X=2 and Y=9) rename=(Z=_29));
 set Q1(where=(X=7 and Y=6) rename=(Z=_76));
 drop X Y;
run;

Setの連続掛けは個人的に、とてもとても好きな方法です。指定したデータセットの中で最小のobs数に統一されることと、同名の変数が上書きされる性質は扱いにくい一方で、mergeステートメントとは違った魅力があると思います。


0 件のコメント:

コメントを投稿