我想创建包含给定变量的滞后值的变量,以实现大量滞后。我怎么能这样做呢?我尝试以下操作:
data out;
set in;
do i = 1 to 50;
%let j = i;
lag_&j = Lag&j.(x);
end;
run;
如何获取循环变量i
进入宏变量j
或者如何直接使用它来创建适当命名的变量和 Lag 函数?
Chris J 回答了这个问题,但在这里我将提供我首选的方法。
%macro lagvar(var=,num=);
%do _iter = 1 %to &num.;
lag_&_iter. = lag&_iter.(&var.);
%end;
%mend lagvar;
data out;
set in;
%lagvar(var=x,num=50); *semicolon optional here;
run;
这是宏循环的更模块化的用法(并且更具可读性,假设您使用智能名称 - 上面的内容没问题,如果您想非常清楚,您可以使用名称做更多事情,当然还可以添加注释)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)