proc report 的基本格式:
proc report nowindows; (如果不设置nowindows options,SAS会默认打开html结果窗口)
column variable list;(告诉SAS 哪些变量需要输出,没有该语句SAS默认输出所有变量)
run;
基于上述格式,如果输出的变量含有字符类型变量,则一个观测值输出一行,结果与proc print 结果近似,但是没有obs列;如果输出的变量全为数值型,则会输出变量数值之和。
define 语句可对待输出且需要特别调整的变量进行option指定,格式如下:
define variable /option "column header";
常用的options 选项有:
across 对于变量内的每个值都创建一列;
analysis 对变量计算统计量,sas默认对数值变量求和处理;
computed 创建一个新变量,其值是在compute 块中得到的;
display 变量中一个观测输出一行;SAS 对字符变量的默认处理方式;
group 对于变量相同观测值仅输出一行
order 变量按照顺序排序后相同观测值输出一行
column header options 给输出列加上标题,如:
define age/order "age at/admission",标题中的/表示标题在此分行;
在group,across,order 选项中不会输出变量的缺失值,如需要输出缺失值需在proc report 语句后加入missing ,如下:proc report nowindows missing;
proc report data=natparks nowindows missing;
column region name museums camping;
define region/order;
define camping/analysis "campgrouds"
title "national parks and monuments arranged by region";
run;
结果如下:
可以根据group 和across 选项 使用proc report 创建汇总报表,使用group创建横向汇总行:
proc report data=employees nowindows
column department salary bonus;
define department/group;
run;
结果如下:
使用across 创建纵向汇总行,使用across 选项SAS 默认计算个数,across 是展示纵向分类汇总的分类值,anlysis 是分析数值变量统计量,因此用于across变量和用于anlysis变量之间需要用“,”隔开,多个analysis 变量用括号括起来:
proc report data=employees nowindows;
column department, (salary bonus)
define department/across;
run;
结果如下:
使用group 汇总举例:
proc report data=natparks nowindows ;
column region type museums camping;
define region/group;
define type/group;
title "summary report with two group variables";
run;
使用across 汇总举例
proc report data=natparks nowindows;
column region type,(museums,camping);
define region/group;
define type/across;
title "summary report with a group and an across variable";
run;
如果 选项中有display 或者order 则会展示详细报表而不会将数据汇总。
在报表中插入分段可使用break 或者rbreak语句。
break location variable /options;(location 有after 或者before两个选项,表示在变量相同的值创建行前面或者后面插入分段,variable必须提前在define中定义group 或者 order选项告知SAS。);
rbreak location/options;(location 有after或者before两个选项,在报表后面或者前面插入分段,或者在BY group 前面或者后面插入分段);
此处常用options有:
page: 开始新的一页
summarize :数值变量计算统计量,默认求和
proc report data=natparks nowindows;
column name region museums camping;
define region/group;
break after group/summarize;
rbreak after/summarize;
title "detail report with summary breaks";
run;