我已经IF-statement在一个SAS程序中实现了一个基本上检查年份比较有效性的程序。如果IF-statement是TRUE一些进一步的变量被初始化和计算,如果IF-statement是FALSE什么都没有发生。
但是,我刚刚意识到,无论是IF-statementisTRUE还是FALSE附加变量都将被初始化(尽管MISSING在这种FALSE情况下)并显示在ODS. 这是为什么?有没有直接的方法来解决这个问题?我当然可以使用条件drop-statement,但是总是添加这个似乎很乏味。
data test;
value = 1;
if value > 2019 then a = 1;
/*
if value < 2019 then
do;
drop a;
end;
*/
run;
编辑:我再次意识到,drop-statement无论TRUE/FALSE.
解决方案 ,但不知道为什么有效:
data test;
%let value = 1;
%if &value. > 2019 %then %do; a = 1; %end;
run;
在四处挖掘时,我发现了这个 sas-community post。我的问题似乎基本上源于%IF vs IF. 应用MACRO %IF它的作品。与现在可以MACRO %IF在MACRO.