proc report 一二三事:循环输出,分情况输出,加横线、加文本信息、加空白行及宽度设置
输出output的时候,因某些原因,例如不同组别的某些情况不一样,则需要分开输出,有规律的可以使用%do循环,没规律的可以使用%if分情况输出:
对于按照分组来proc report的table,每个组具有不同的N,则应该每个组循环report,用不同的每个组不同的N值放在表头位置。采用循环的方式———>在宏程序中使用do循环,制造宏变量i来引用。
%macro report;
options papersize=letter orientation=landscape nodate nonumber center missing=" " nobyline;
ods escapechar="@";
ods listing close;
%do i=1 %to 4;
proc report data = final (where=(agegr2n=&i.)) missing nowd headline headskip nocenter spacing = 2 split = "~";
column……("Completion/Discontinuation @R/RTF'\fs0\brdrb\brdrs\brdrw10\qc" col4 col5);
note:brdrw10是header那一栏分割线的宽度,qc表示居中显示,ql表示居左显示;col4和col5共同拥有header "Completion/Discontinuation"
define……;
define col2/display "Placebo ->~SD-101-6.0~(N=&&x&i)~n (%)" &line. style(column)=[cellwidth=21.5% just=c asis=on] style(header)=[just=c] ;
define col3/display "SD-101-6.0 ->~SD-101-6.0~(N=&&y&i)~n (%)" &line. style(column)=[cellwidth=21.5% just=c asis=on] style(header)=[just=c] ;
define col4/display "Total~(N=&&z&i)~n (%)" &line. style(column)=[cellwidth=21.5% just=c asis=on] style(header)=[just=c] ;
break after page/page ;
compute after seq;
line '@\fs6'; note:每个小组数之间加空行,包括空行宽度
endcomp;
compute after _page_;
line &line; note: 页后加横线
endcomp;
compute before _page_ /left;
text="Age group: "||strip(col0);
line @1 text $100.; note:页前加横线,页前加分组信息文本内容
line &line.;
endcomp;
%end;
run;
ods rtf close;
ods listing;
%mend report;