我正在试图细化一个宏,以查看一个变量是否仍然存在,并将其赋值为空值。
%macro VarExist(ds, var);
%local rc dsid result;
%let dsid =%sysfunc(open(&ds));
%if %sysfunc(varnum(&dsid,&var)) > 0 %then %do;
%let result =1;
%put NOTE: Var &var exists in &ds;
%end;
%else %do;
%let result= 0;
%put NOTE: Variable &var was dropped at SDTM level per CDISC Compliance.
Null value will be assigned.;
data AE2;
set work.&ds;
&VAR=.;
RUN;
%END;
%let rc=%sysfunc(close(&dsid));
%MEND VarExist;
%VarExist(ae1,AESDTH);是否有一种方法可以自动分配变量的实际字符/数字来源?可能是vtype还是vvalue?同样对于AE2,我可以做一些类似于&ds.n的事情,甚至可以在原始&ds数据集中自动分配它。我只做了另一个数据集的现实测试,它是有效的。有什么想法吗?与相关文件的链接?
发布于 2022-05-17 13:45:31
似乎不需要测试变量是否存在。
data ae2;
set ae1;
length AESDTH 8;
run;https://stackoverflow.com/questions/72272728
复制相似问题