あなたのコメントを理解する限り、結果は4列、ID、名前の出入りを想定しており、常に出入りするだけの値があります。
しかし、すべての行に対してマクロを5回呼び出すとします。すべての行に対して1回だけ呼び出す必要があります。次に、期待される結果が得られます。あなたはここで、変数ではなく、コメントで作業しているので、私は、私のコメントで述べた「時」& VAR」(私のコードを修正)datastep内部
変数を削除する必要があり、その場合には
これで、前に行ったやり方でマクロを呼び出したすべての名前に対して、inとoutvariableを作成しました。これを避けるには、マクロif-elseの場合、真である節のみがデータストアに表示されるため、eG:
%if "&var" = "pippo"n %then in0_&var = name;
%else out0_&var = name;
しかし、変数 "name"の値がマクロコンパイラに認識されていないため、varを変数として使用する必要があります。これは、nameの変数値の代わりにin0_nameを取得するためです。
macrovariableの使い方を慎重にする必要があります。データストア内で文字列として使用する必要がある場合は、 "& var"を使用する必要があります。それ以外の場合は変数として解釈されます。
マクロはすべてmacrovalueで&の値を解決します。この後、datastepsはステップを解釈します。 したがって、この場合には、あなたは、マクロを必要としない、あなただけ例えば、代わりにあなたのmacrocallのdatastepでのif-elseを使用することができます。
:
data want;
set ds;
if name = "pippo"n then in0 = name;
else out0 = name;
run;
彼らは道あなたがそれをしたい、あなたはこれを使用する必要があります
%macro test(var)/mindelimiter=',';
if &var = "pippo"n then in0 = name;
else out0 = name;
%mend test;
data want;
set ds;
%test(name); /*This is called for every row in your dataset, so if you have 5 macrocalls,
they will be called 5 times for every row in your dataset*/
run;
"&var" = "pippo" n then ...ここで文字列を比較したいからです。これは少なくとも空の名前列を削除します...今はpippo、arj、...と呼ばれる変数を探し、文字列 "pippo"と比較しますn – kl78
アウトを理解することはできません。出力は入力とまったく同じです。どのような場合でも、メソッドや関数を呼び出すpythonプログラムのように私は "out_&var"だけを期待しています。列名はありますが、もっと多くの列がありますが、実際にはどこから来たのかはわかりません。 – arj
私はあなたが何をしようとしているのか分かりません。それらの瞬間、あなたのデータセットのすべての行に対して、異なる名前のマクロを5回呼び出します。出力は私が期待する通りです。あなたは何が結果を期待しましたか? – kl78