我有一个包含2个变量的表-X和Y。我希望根据月份有条件地选择X或Y,例如:
DATA test ;
SET work.Final_union ;
IF 1 <= MONTH(TODAY()) <= 5
THEN output ;
IF 6 <= MONTH(TODAY()) <= 12
THEN output ;
RUN ;
如何将所选变量放在哪里?
因此,您需要根据运行日期在输出中使用不同的变量。您可以使用诸如drop x;
或的语句keep y;
,但问题是使它们与时间相关。为此,我将它们放在宏变量中。
proc sql;
select distinct case
when 1 <= MONTH(TODAY()) <= 5 THEN 'y';
when 6 <= MONTH(TODAY()) <= 12 THEN 'x';
end
into :drop
from SASHELP.CLASS;
quit;
我可以使用任何数据集代替SASHELP.CLASS
,但这只是一个很小的数据集,一直存在。
data _null_;
select ;
when (1 <= MONTH(TODAY()) <= 5) call symput('drop', 'y');
when (6 <= MONTH(TODAY()) <= 12) call symput('drop', 'x');
end;
run;
quit;
宏变量在编译时使用,而不是在运行时使用,但是SAS编译一个茎,然后运行它,然后再编译下一个茎。因此,可以在下一步骤中使用在一个步骤中创建的宏变量。
DATA test ;
SET work.Final_union ;
drop &drop;
RUN ;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句