我有以下代码
%macro test;
data ttest;
set test;
%do
var14_t_0=lag(var14);
%do i=1 %to 6;
var14_t_&i=lag(var14_t_%eval(&i-1));
%end;
drop var14;
run;
%mend;
%test;
var14
是一个变量名,我正在使用lag
函数。但是,我的表中有很多变量。我正在尝试自动化变量命名,但我确定如何做到这一点。
我想到了以下内容:
使用proc sql创建如下表:
proc sql;
create table label as
select name
from dictionary.columns
where memname = upcase('Afr') and name not in ('date');
创建表后,我只需要从label
表中获取变量名称。但问题是我不知道如何将上面的代码与我的表格链接起来。
我不是说我需要这张桌子而且我可能需要别的东西,但我不确定我是SAS新手的步骤。
提前感谢您提供的任何提示。
答案 0 :(得分:0)
你几乎就在那里。
proc sql;
select name into :namelist separated by ' '
from ... (as you have above)
;
quit;
生成一个宏变量&namelist
,它将一个列表中的所有name
分隔为空格。然后您可以随意使用它。你当然可以改变由字符分隔的,你可以选择复杂的表达式(即代替select name
,你可以说select cats('%mymacro(mvar=',name,')')
或类似。
我建议尝试执行后者 - 构建一个宏,它将执行您想要多次执行的任何操作,然后使用此方法构造对该宏的调用。它通常比名单列表上的宏循环更容易。