まずは例を見ていきましょう、
*** Sample Data ; data DT1; input NO:$1. MONTH:$3. YEN; cards; A JAN 5000 A FEB 500 A MAR 1000 B JAN 2000 B MAR 1500 ;
|
サンプルは、各預金者(NO)に対する、月別(MONTH)の預金額(YEN)だとします。
ここで、以下のイメージで各預金者(NO)ごとに預金額を転置して「ついでに変数ラベルも付与したい」とします。
変数ラベル | January | February | March | |
変数名 | NO | JAN | FEB | MAR |
A | 5000 | 500 | 1000 | |
B | 2000 | 1500 |
この場合、TRANSPOSEで、ID, IDLABELステートメントを組み合わせれば、一発解決です。
補足として、IDLABELを使う場合は、以下2点に気を付けましょう。
*** ラベル用の変数を用意 ***************; data DT2; length LAB $20.; set DT1; if MONTH = "JAN" then LAB="January"; if MONTH = "FEB" then LAB="February"; if MONTH = "MAR" then LAB="March"; run;
*** 転置 *****************************; proc transpose data=DT2 out=OUT1 (drop=_NAME_); *** 預金者毎に、預金額を転置 ; var YEN; by NO; id MONTH; format MONTH; *** 変数LABの値を、転置後の変数ラベルに使う ; idlabel LAB; run;
|
補足として、IDLABELを使う場合は、以下2点に気を付けましょう。
- IDステートメントも同時に指定する必要がある。
- IDステートメントとIDLABELステートメントの変数の値は、1対1になってる方が望ましい。
LAB | NO | MONTH | YEN |
January | A | JAN | 5000 |
February | A | FEB | 500 |
March | A | MAR | 1000 |
JAN | B | JAN | 2000 |
March | B | MAR | 1500 |
0 件のコメント:
コメントを投稿