【SAS/プログラミング】transpose。転置する。天地ではないよ。


データを転置する方法です。
データを縦で集計されているけど、横にしたい!という場合に
使用するプロシジャです。
転置する際にはこのプロシジャは、メインとなります。


<program code>
proc transpose data=[入力データセット]
out=[出力データセット] <オプション>;
var [変数1] [変数2] ...;
by [変数1] [変数2] ...;
id [変数1] [変数2] ...;
run;

var ・・・転置したい変数
by・・・グループ変数
id・・・変数名にしたい変数。

***サンプルデータセット***

画像1

以下のとおり作成します。
(出力結果はExcelにしております)

<使用例_1>
proc transpose data=TEST_A
out=RESULT_A ;
var VAL;
by STUDENT;
id NUM;
run;

画像2


byステートメントにする変数は、値をソートする必要あり。
オプションには、
prefix・・・転置後の変数名の接頭語を指定できる。デフォルトは"COL"
name・・・転置した変数名を格納する変数名を指定できる。デフォルトは"_NAME_"
<使用例_2>
proc transpose data=TEST_A prefix=ST_ name=COUNT
out=RESULT_B ;
var VAL;
by STUDENT;
id NUM;
run;

画像3


idステートメントは任意ですが、
これがないと、転置する値の中に欠損(ブランク)が存在すると左詰めされてしまいます。
上記の例で"id "の構文を抜くとデータセット:RESULT_Cのようになります。

画像4

ブランクがある場合は要注意ですねー。

また、変数名をつける際に同じ値ができた場合は、変数名は出力されません。長さは値の中で一番長い変数の長さになります。


私の経験談、よくは使わないけどたまに使うという頻度だったので
このtransposeの綴りをよく忘れるんですよねぇ・・笑
あ、これは横にして処理した方がいいなという状況はあるんですが。
そして、もっと極論をいえばこのプロシジャを知らなくても
プログラムコードで書くことも可能ですので、そちらでしてしまったり。。
ただ、便利なプロシジャでこれを使えば一発で転置できますので作業効率は良いので
覚えておく方が良いでしょう!

この記事が気に入ったらサポートをしてみませんか?