行列変換を行い、SASデータセットに書き出すプロシジャである。
構文
PROC TRANSPOSE DATA = SASデータセット名
OUT = SASデータセット名 オプション;
VAR 変数1 変数2 … ;
BY 変数1 変数2 … ;
ID 変数 ;
IDLABEL 変数 ;
COPY 変数1 変数2 … ;
run;
VAR : 変換したい変数名を指定。(文字変数 or 数値変数・・・OK)省略すると、入力データセットの変数のうち、
他のステートメントで指定されていない数値変数が全て転置される。
→文字変数を転置するには必ずここで指定する。
BY : BY変数で定義されるグループごとに転置する。(予め、SORTが必要)
ID : ID変数のフォーマット化された値が転置後の新しい変数名になる。各ID変数の値は入力データセット内、
BYグループ内でユニークでなければならない。
※LETオプションが指定されている場合は処理が続行される。
ID変数値が欠損値のオブザベーションは出力データセットから省かれる。
IDLBEL : IDステートメントでラベルが付いている変数を指定した場合、IDLABELステートメントで
その変数を指定すると出力データセットの転置後の変数がラベルで表示できる。
IDステートメントと共に指定する。
COPY : 指定した変数を転置せずに出力データセットへコピーする。
必要に応じて、欠損値が埋め込まれる。
・オプション
DATA = SASデータセット名
転置するSASデータセットを指定。
OUT = SASデータセット名
出力するSASデータセットを指定。
PREFIX = name
転置後の変数名に付ける接頭語を指定。デフォルトではCOLnと表示される。
NAME = name
元の変数名を変数値として格納する転置後の変数の名前を指定。デフォルトは_NAME_と表示。
LABEL = name
元の変数ラベルを値として格納する変数の名前を指定。デフォルトは_LABEL_と表示。
LET
BYグループ内でID変数を重複して使用できるようにする。この場合、重複するオブザベーションのうち
最後のオブザベーションが転置される。
【出力データセットの詳細(注意点)】
- NAME = またはLABEL = オプションで指定した名前がCOPYまたはBYステートメントで指定した変数名と同じ
場合は変数の重複をさける目的で入力データセットの変数名や変数ラベルは出力されない。
- 転置したすべての変数のタイプおよび長さは同じになる。
- 入力変数がすべて数値タイプであれば、転置した変数は数値タイプになる。
- 入力変数のいずれかが文字タイプであれば、転置した変数はすべて文字タイプになる。
- 転置された変数の長さは入力変数のうちでもっとも長い変数の長さになる。
1.IDステートメントを指定する。
2.PREFIX = オプションを指定する。(IDステートメントとの併用も可能)
3.入力データセットに変数_NAME_を作成しておく。
最終更新:2008年10月12日 20:30