proc sql,带有 do 循环连接 SAS 中两个表的信息

问题描述 投票:0回答:1

希望更有效地做这样的事情:

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 循环的索引变量的无效宏变量名称。”

sql sas macros do-loops
1个回答
0
投票

您的 %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;

© www.soinside.com 2019 - 2024. All rights reserved.