/* data eg11_4; input group $ cycles; cards; old 9477 old 13581 new 7651 new 8337 new 6989 new 9568 ; run; */ ***************************************************** MACRO: WILCXEST OUTPUTS SORTED DIFFERENCES FOR COMPUTING MEDIAN ESTIMATE AND CONFIDENCE INTERVAL BASED ON TWO SAMPLE WILCOXON TEST. INPUT: dname, input data set name var, analysis variable vgroup, group variable dataout, output data set name *****************************************************; *options symbolgen mlogic mprint; %macro wilcxest(dname,var,vgroup,dataout); proc sort data=&dname out=zzzdname; by &vgroup; run; proc summary data=zzzdname; var &var; by &vgroup; output out=zzzout n=nobs; run; data _null_; set zzzout; if _n_=1; call symput('nobs1',left(nobs)); run; data zzyzy1; set zzzdname; if _n_<=&nobs1; run; data zzyzy2; set zzzdname; if _n_>&nobs1; run; proc iml; use zzyzy1; read all var {&var} into y1; use zzyzy2; read all var {&var} into y2; n1=nrow(y1); n2=nrow(y2); nobs=n1*n2; d=j(nobs,1,0); index=0; do i=1 to n2; do j=1 to n1; index=index+1; d[index]=y2[i]-y1[j]; end; end; *print d; varnames={d}; create &dataout from d [colname=varnames]; append from d; quit; proc sort data=&dataout; by d; run; title 'Sorted Differences'; proc print data=&dataout;run; title ' '; %mend wilcxest; %wilcxest(eg11_4,cycles,group,eg11_4_out);