私はSAS DIでカスタム変換を構築しようとしています。この変換は、入力データセットの列に対して「作用」し、所望の出力を生成する。簡略化のために、を使用して,input_col2
を計算してoutput_col2
を計算し、指定された数の列を処理するとします(2としましょう)。SASでインデックス付き割り当て変数を動的に選択する方法は?
カスタム変換ユーザーのセクションでは、操作する列の名前を(プロンプトを介して)指定できます。たとえば、input_col1
が入力データセットの "order_datetime"という名前の列を参照するように指定し、input_col2
の同様の指定を行うか、空白のままにします。ここで
は、私はカスタム変換のための出力を生成するために使用していたコードです:
data cust_trans;
set &_INPUT0;
i=1;
do while(i<3);
call symputx('index',i);
result = myfunc("&&input_col&index");
output_col&index = result; /*what is proper syntax here?*/
i = i+1;
end;
run;
ここmyfunc
は、私が正常に動作のproc FCMPを使用して作られたカスタム関数を指します。私が上で動作するように考慮に入力列の可変数を取るしようとしていない場合
カスタム変換が正常に動作します(つまり私の代わりに"&&input_col&index"
の"&&input_col&i"
を使用して、ちょうど出力テーブルの列result
を使用している場合)。
しかし、私はよりダイナミックなアプローチをしようとして二つの問題を抱えている:
- I入手含む行の次の警告
result = myfunc("&&input_col&index")
:警告:シンボリック見かけ参照INDEXは解決されません。
- 希望する出力列への割り当てを動的に行う方法がわかりません。つまり、doループの反復に応じて、出力値を対応する出力列に割り当てたいと思います。
これに対する解決策は専門家の間ではよく知られているはずですが、私はこれを行う方法を説明するものは何も見つかりません。
すべてのヘルプは大歓迎です!
非常に迅速で徹底的な答えに感謝@ジョー。これは私の問題を修正しました。プロシージャに名前を渡すことについてのあなたの質問に関しては、これは部分的に質問のための最小限の実例を作ることの成果であり、部分的にはプロシージャが実際にテーブル名とカラム名を要求するという事実によるものです。重要じゃない。再び、非常に感謝! – Rookatu