IMLプロシジャで読み込んだSASデータセットの変数名をキープする方法

[OS] ALL
[リリース] ALL
[キーワード] COLNAME=

[質問]

IMLプロシジャで、READステートメントを使用してSASデータセットから数値を読みこみ、変換を行なってから再度データセットへ出力しています。
そのときに、元のデータセットの変数名を新しく作成したデータセットの変数名に反映させたいのですが、どのようにしたらよいでしょうか。

[回答]

READステートメントで「[COLNAME=(行列名)]」の指定を行なってください。
次に、CREATEステートメントでデータセットを作成する際に、これと同じように指定してください。

次のプログラムは、データセットから数値を読み込み、全ての要素を2乗し、データセットへ出力する例です。


  DATA test;
    INPUT x1 x2 a b;
  CARDS;
  3 4 -2 5
  6 -3 4 1
  ;
  RUN;

  PROC IML;
    USE test;
      READ ALL INTO x[COLNAME=varname];

    x=x##2;                   /* 各要素を2乗する */

    CREATE test2 FROM x[COLNAME=varname];
    APPEND FROM x;
  QUIT;

  PROC PRINT DATA=test2;
  RUN;