是否有一个命令或快捷方式,所有的PDV现有变量设置为丢失?

我有它运行一些像这样的代码:

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

一旦第一“输出”语句达到予想的所有PDV变量重置为丢失(例如,VAR2 =“”; VAR3 =“”;),但不必手动声明它们的方式。谁能帮助?

有帮助吗?

解决方案

在呼叫丢失例程和_all_de自动变量列表会很容易地做到这一点

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