以下をご覧ください。
例①
* サンプルデータ ;
data DT1; A=1; output; A=2; output; run;
* TRANSPOSE ;
proc transpose data=DT1 out=OUT1;
var A; run;
|
TRANSPOSEで変数Aを横に転置しています。
では上記のサンプルデータに以下の_NAME_という変数を追加して、再度同じようにTRANSPOSEしてみます。
例②
* サンプルデータ ;
data DT2; A=1; _NAME_="aa"; output; A=2; _NAME_="bb"; output; run;
* TRANSPOSE ;
proc transpose data=DT2 out=OUT2;
var A; run;
|
例①の結果と異なっているのがお分かりいただけますか。
例①では変数名が「COL1」「COL2」だったのが、例②では「aa」「bb」という変数名になりました。
まるで以下のようにIDステートメントを使ったような挙動ですね。
proc transpose data=DT2 out=OUT2;
var A; id _NAME_; run; |
実はTRANSPOSEするデータセットに「_NAME_」という変数があって、IDステートメントも未指定の場合、勝手に上記青文字の処理がされるようになっています。
では次は「_LABEL_」という変数を追加して、同様にTRANSPOSEしてみます。
例③
* サンプルデータ ;
data DT3; length A 8. _NAME_ $2. _LABEL_ $20.; A=1; _NAME_="aa"; _LABEL_="あああ"; output; A=2; _NAME_="bb"; _LABEL_="いいい"; output; run;
* TRANSPOSE ;
proc transpose data=DT3 out=OUT3;
var A; run;
|
結果を見ると変数ラベルがついています。まるで以下のように書いたときの挙動ですね。
proc transpose data=DT3 out=OUT3;
var A; id _NAME_; idlabel _LABEL_; run; |
これも「_LABEL_」という変数があって、IDLABELステートメントも未指定の場合、勝手に上記赤文字の処理がされるようになっています。
これを「勝手なことしやがって!」と思うか、「便利だな」と思うかケースバイケースですね。
以下記事のように2回TRANSPOSEを実行する場合は特に気をつけましょう。
TRANSPOSEの2回実行テクニック。
0 件のコメント:
コメントを投稿