質問

コマンドまたは行方不明にPDVのすべての既存の変数を設定する簡単な方法はありますか?

私はこのように実行されますいくつかのコードを持っています:

Data example2; 
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
Var1='B';
output;
stop;
run;

最初の「出力」ステートメントは、私が行方不明にすべてのPDV変数をリセットしたい達すると(例えばvar2の=「」; VAR3 =「」;)が、手動でそのように宣言することなく。誰が助けることはできますか?

役に立ちましたか?

解決

コール行方不明ルーチンと_all_自動変数のリストが簡単にそれを行います。

call missing(of _all_);

Data example2;
var1='A';
Var2='B';
Var3='C';
output;
call missing(of _all_);
Var1='B';
output;
stop;
run;

proc print data=example2;
run;

生成

                                 The SAS System

                               Obs    var1    Var2    Var3

                                1      A       B       C
                                2      B

他のヒント

あなたは配列でそれを行うことができます。

ここで行方不明PDVのすべてを作るマクロがあります。パラメータtを使用すると、単一のデータ段階からそれを複数回呼び出すことができるようにすることです。


%macro cleanpdv(t);
array __c&t{*} _character_;
array __n&t{*} _numeric_;
do __i&t=1 to dim(__c&t);
  call missing(__c&t{__i&t});
end;
do __i&t=1 to dim(__n&t);
  call missing(__n&t{__i&t});
end;
drop __i&t;
%mend;

あなたはこのようにそれを使用する場合があります:



Data example2;
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
%cleanpdv(1);
Var1='B';
output;
%cleanpdv(2);
output;
stop;
run;

次のデータセットを生成する

  Obs    var1    Var2    Var3

   1      A       B       C
   2      B
   3
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top