【发布时间】:2014-08-18 17:45:57
【问题描述】:
我希望根据分类变量的值有条件地执行多重回归。因此,举一个简单的例子,考虑 sashelp.class 数据。我需要对男性和女性进行回归。由于我的数据集有更多的部门并且更大,因此我首先将不同的类型输入到宏变量中:
proc sql;
select count(distinct Sex) into :numsex
from sashelp.class;
%let numsex=&numsex;
select distinct Sex into :sex1 - :sex&numsex
from sashelp.class;
quit;
然后我尝试通过循环遍历每个对象来执行回归。我知道注释掉的代码有效,但不确定为什么我的宏函数不起作用。
/**/
/*data dataF;*/
/* set sashelp.class;*/
/* where Sex='F';*/
/*run;*/
/**/
/*proc reg data=dataF outest=out1;*/
/* model Height=Weight;*/
/*run;*/
%macro regress;
%do i = 1 %to &numsex;
data data&&sex&i;
set sashelp.class;
where Sex='&&sex&i';
run;
proc reg data=data&&sex&i outest=out&i;
model Height=Weight;
run;
%end;
%mend;
%regress;
另外,如果有更好的方法来做到这一点,那么我会全力以赴。当前的方法很痛苦,因为我必须将我所有的估计输出集组合起来以获得一个数据集。此外,我得到了一堆我不想要或不需要的中间数据集。
谢谢。
【问题讨论】: