函数滞后中的动态n<;n>;(可变)SAS
您知道如何在函数LAGn(变量)中使用n,在我的例子中,该函数引用程序->max中的另一个宏变量函数滞后中的动态n<;n>;(可变)SAS,sas,sas-macro,Sas,Sas Macro,您知道如何在函数LAGn(变量)中使用n,在我的例子中,该函数引用程序->max中的另一个宏变量 data example1; input value; datalines; 1.0
data example1;
input value;
datalines;
1.0
3.0
1.0
1.0
4.0
1.0
1.0
2.0
4.0
2.0
;
proc means data=example1 max;
output out=example11 max=max;
run;
data example1;
%let n = max;
lagval=lag&n.(value);
run;
proc print data=example1;
run;
提前谢谢你!
维奥拉这就是你想要做的吗
data example1;
input value;
datalines;
1.0
3.0
1.0
1.0
4.0
1.0
1.0
2.0
4.0
2.0
;
proc sql;
select max(value) format = 1. into :n
from example1;
quit;
data example1;
set example1;
lagval=lag&n(value);
run;
format=1。
位确保由proc sql
生成的宏变量不包含任何前导空格或尾随空格,这些空格会弄乱后续的数据步骤代码。使用宏变量生成LAGn()函数调用的N部分很容易
%let n=4 ;
data want;
set have ;
newvar = lag&n(oldvar);
run;
请记住,宏代码由宏预处理器计算,然后生成的代码由SAS执行。因此,在数据步中间放置
n
您的程序没有名为max
的宏变量。