我运行了下面这段macro,没有生成任何文件,请教一下,是哪个环节出错了?用的数据v23在附件里。非常感谢提点!
另:怎么定义第一部分里的varlist=, 使其能够实现下面两种情况:(1)比如我有100个var,不需要逐一列出就可引用全部的var ; (2) 我只想引用其中的98个,剩下的两个var2和var99我希望剔除出去。
关于var的引用,我了解这两种方式:var _all_; 或者mean=mean(of _all_);
*1;
%macro median(mydata =work.v23, varlist=read write math science socst, medname = median);
*2;
data _null_;
if 0 then set &mydata nobs = nobs;
call symput('nobs', nobs);
run;
*3;
proc transpose data = &mydata out = aaa;
var &varlist;
run;
*4;
proc univariate data = aaa noprint;
var col1 - col&nobs;
output out = bbb median = col1 - col&nobs;
run;
*5;
proc transpose data = bbb out = ccc;
var _all_;
run;
*6;
data v25;
merge &mydata ccc(keep = col1 rename = (col1 = &medname));
run;
%mend median;