希望更有效地做这样的事情:
proc sql;
create table newtable as
select names,
a.category1-b.category1 as category1,
a.category2-b.category2 as category2,
a.category3-b.category3 as category3,
...
a.category100-b.category100 as category100
from a.tablea as a left join b.tableb as b
on a.names=b.names;
quit;
我正在尝试仅创建一个表并减少我在代码中占用的行数。认为宏 do 循环可能有帮助,但不确定如何。请帮忙!谢谢!!
%macro doloop;
%do from i=1 %to 100;
proc sql;
create table newtable as
select names,
a.category&i.-b.category&i. as category&i
from tablea as a left join tableb as b
on a.names=b.names;
quit;
%end;
%mend;
%doloop;
我收到此错误:“错误:FROMI 是 %do 循环的索引变量的无效宏变量名称。”
您的 %DO 循环语法无效。 您的 %DO 循环放置不正确。
%macro doloop;
%local i;
proc sql;
create table newtable as
select names
%do i=1 %to 100;
, a.category&i.-b.category&i. as category&i
%end;
from tablea as a left join tableb as b
on a.names=b.names;
quit;
%mend;
%doloop;