縦→横 横→縦 共に転置でtransposeプロシジャの領分だという話

縦持ちのデータを横持ちにかえるのがtransposeプロシジャなら、
逆は何プロシジャですかと直接ご質問をいただきました。
有難うございます。了解をいただいたので、せっかくなのでネタにさせていただきます。

縦から横への構造変化を例として、転置という言葉が用いられることが多いため
つい誤解してしまうところなのですが、転置は両方の意味を持ちます。

つまり、横から縦、つまり変数からオブザベーションへの変化もtransposeプロシジャのお仕事です。

今、下記のデータがあるとします。
2人の検査データを1週おきに3週間とって、横に値を持たせた構造です。

data Q1;
 ID='TEST-001';WEEK_1=5;WEEK_2=6;WEEK_3=7;output;
 ID='TEST-002';WEEK_1=3;WEEK_2=9;WEEK_3=8;output;
run;






こいつを縦にしたければ
proc sort data=Q1;
 by ID;
run;

proc transpose data=Q1 out=A1;
 var WEEK_:;
 by ID;
run;













となり、まあ体裁を整えるなら

data A2;
 set A1;
  WEEK=input(scan(_NAME_,2,'_'),best.);
  VAL=COL1;
 drop _NAME_ COL1;
run;

とでもして、以下の形です。










ちなみに、これを一番最初の横持ちに戻したければ
proc sort data=A2;
 by ID;
run;

proc transpose data=A2 out=Q1(drop=_NAME_) prefix=WEEK_;
 var VAL;
 id WEEK;
 by ID;
run;

です。

0 件のコメント:

コメントを投稿