刷新 PDV 变量

发布于 2024-07-22 22:26:37 字数 267 浏览 3 评论 0原文

是否有命令或快速方法将 PDV 中的所有现有变量设置为缺失?

我有一些代码的运行方式如下:

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

一旦到达第一个“输出”语句,我想将所有 PDV 变量重置为缺失(例如 var2=''; var3='';),但无需手动声明它们像这样。 有人可以帮忙吗?

Is there a command or a quick way to set all the existing variables in the PDV to missing?

I have some code which runs like this:

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

once the first 'output' statement is reached I'd like to reset all the PDV variables to missing (eg var2=''; var3='';) but without having to manually declare them as such. Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

相思碎 2024-07-29 22:26:37

你可以用数组来做到这一点。

这是一个使 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

You can do it with arrays.

Here is a macro that makes everything in the PDV missing. The parameter t is to allow you to call it multiple times from a single data step.


%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;

You might use it like this:



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

which produces the following data set:

  Obs    var1    Var2    Var3

   1      A       B       C
   2      B
   3
我们的影子 2024-07-29 22:26:37

调用缺失例程和 _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

The call missing routine and the _all_ automatic variable list will do it easily

call missing(of _all_);

For example

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

proc print data=example2;
run;

produces

                                 The SAS System

                               Obs    var1    Var2    Var3

                                1      A       B       C
                                2      B
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文