使用 SASHELP.CARS,我想按原产地制作一个 PROC TABULATE。因此,第一种方法是制作 3 PROC TABULATE,例如:
PROC TABULATE DATA = data out=tabulate;
where Origin="Asia";
CLASS Make DriveTrain ;
TABLE (Make), (DriveTrain) / nocellmerge ;
run;
但是,相反,我想在宏循环中自动执行此操作(这是我制作的一个简单示例。我使用的真实数据库更复杂;这就是我需要制作宏的原因:)。你能帮我为什么下面的代码不起作用吗?这是 « where Origin=reg; » 似乎是问题的部分。谢谢 !所以这是我的代码:
data data; set sashelp.cars;run;
data classes;
input id_reg reg_name $ ;
cards;
1 Asia
2 Europe
3 USA
run;
%macro comp;
%local i reg;
%do i=1 %to 3;
proc sql ;
select reg_name
into
:reg_name
from classes
where id_reg = &i.;
quit;
%let reg=reg_name;
PROC TABULATE DATA = data out=tabulate_&i;
where Origin=reg;
CLASS Make DriveTrain ;
TABLE (Make), (DriveTrain) / nocellmerge ;
run;
%end;
%mend comp;
%comp