其次是用array+do循环来做,这个categorical variable的值比较好才好,最好是1,2,3,4,5这种;别的值不是这么方便,因为不好放进do循环里面;用macro %qscan可以,但是麻烦;
第三个就是上次贴的一个macro,也是麻烦,而且做interaction不方便。
今天面试的时候被教了一招,用proc glmmod;举例如下:
options formdlim='$';
data name;
input name $ sex$;
x=1;
cards;
zhao f
qian f
sun m
li m
zou m
wu m
zeng f
wang m
zhao f
wang f
sun m
wu f
;
run;
proc glmmod data=name outdesign=design outparm=parm;
class name sex;
model x = name sex name*sex;
run;
quit;
这时SAS产生两个data set,分别是design和parm;design中的变量(列)名都是以col开头的,这样方便于在proc reg或者别的地方调用;那么每个column到底指的什么意思,或者说对应的categorical variable的什么值?parm就是来说明这个问题的。parm指明了design中每个column的含义;
比如下面两表,parm说明:design中1指intercept,2-9指name,10-11是sex,后面的是interaction。这就清晰明了了。
PARM:
Design:
No comments:
Post a Comment