是否有命令或快速方法将 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;
生成以下数据集:
观测值 var1 Var2 Var3 1个ABC 2乙 3