TRANSPOSEプロシジャ

行列変換を行い、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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。