被迫用SAS不能用R。。。
问题背景如下:
需要做多个linear reg,区别仅仅在于response不一样。response的命名无规律(如不能是v1-v10这样的,也不希望改成这样的),但independent变量相同。写了个宏执行单个reg并抽取需要的output如下(其中的hormone是response,有12个不同的hormone需要单独分析):
%macro glm_model(hormone, target_var, mylibname, mydata);
ods output LSMeanCL = &mylibname..lsmeans;
proc glm data = &mylibname..&mydata;
class &target_var;
model &hormone = &target_var AGE;
lsmeans &target_var / CL STDERR;
run;
PROC EXPORT DATA= &mylibname..lsmeans
OUTFILE= ".\result\&target_var\lsmeans\lsmeans_(&hormone)_adj4_(&target_var).csv"
DBMS=CSV REPLACE;
PUTNAMES=YES;
RUN;
ods output ParameterEstimates = &mylibname..pvalues;
proc glm data = &mylibname..&mydata;
model &hormone = &target_var AGE;
run;
PROC EXPORT DATA= &mylibname..pvalues
OUTFILE= ".\result\&target_var\pvalues\pvalues_(&hormone)_adj4_(&target_var).csv"
DBMS=CSV REPLACE;
PUTNAMES=YES;
RUN;
quit;
%mend glm_model;
现在只能手动调用12次:
%glm_model(DHEA, smoke, mylib, mydata)
... ...
%glm_model(TESTO, smoke, mylib, mydata)
有没有办法用类似于do over之类的statement完成调用过程(把hormone存成包含12个值的array)
看过很多文档,在data step造出array后用do over调用%glm_model(...),总是得到类似这样的错误:
There was one unclosed DO block
据说是在data step里面调用某些proc step造成的,例如proc glm需要调用quit才会结束。有谁碰到过这类问题并且有解决方案么?感激不尽!