PROC REPORT
制表输出统计量
输出具体观测
一般格式;
proc report data=数据集 <option>;
column 变量;
define 变量/options;
break after|before 变量/<option>;
compute after|before 变量;
line "描述";
endcomp;
run;
proc report语句常用选项
nowd:将结果显示到结果查看器窗口,不输出到新的报表窗口;
headline:在表头下方显示一条分割线,使表头与下方数值分开
column语句
作用:指定输出的一个或多个变量。当指定的变量均是字符型时,输出所指定变量的每一条观测;当指定的变量均是数值型时,仅输出指定数值变量的总和;当指定的变量既有数值型变量又有字符型变量时,输出所指定变量的每一条观测;只有在analysis中指定了的变量才能在该语句中定义展示方式,即逗号、空格或星号。
define语句
常用选项:
format= 指定数值变量的显示格式;
width= 指定列的宽度;
统计量 输出各种统计量,如n、mean、std等;
表格中显示的位置 center居中显示、right居右显示、left居左显示,默认情况下数值靠右显示、字符靠左显示;
变量显示方式 group分组变量、across交叉显示、order排序显示、display显示每一条观测、analysis指定分析变量并制定相应的统计量、computed作为公式新计算产生的变量(值得注意的:一个变量group显示,其他变量不能是display显示;analysis只能指定一个统计量,想要指定多个,需要在column列出,以逗号表示交叉显示);
break语句
可在指定变量上方(before)或变量下方(after)插入一条分割线,只能指定和order或group展示的变量,常用选项:
ol:在指定变量上方显示一条单横线作为分割线;
ul:在指定变量下方显示一条单横线作为分割线;
dol:在指定变量上方显示一条双横线作为分割线;
dul:在指定变量下方显示一条双横线作为分割线
compute语句
在指定变量的上方或下方插入一行由line语句指定的描述性文字,compute和endcomp必须同时出现,compute语句只能指定和order或group展示方式的变量前添加文字或空格。
where语句
显示符合条件的观测
proc format;
value bdfmt
0="偏瘦"
1="正常"
2="偏胖"
3="肥胖"
4="重度肥胖";
run;
data bd;
set fbg;
bmi=weight/(height/100)**2;
if bmi<18.5 then bd=0;
else if bmi<24 then bd=1;
else if bmi<27 then bd=2;
else if bmi<30 then bd=3;
else bd=4;
format bd bdfmt. bmi 5.2;
run;
/*指定字符型变量*/
proc report data=bd headline;
column gender age ;/*输出所有字符型变量值*/
run;
/*指定数值型变量*/
proc report data=bd nowd headline;
column height weight fbj bd;/*默认输出数值型变量的总和*/
run;
/*同时指定字符型和数值型*/
proc report data=bd nowd headline;
column gender age bd height weight fbj;/*输出所有字符型变量和数值型变量*/
run;
/*用define语句对变量进行设置*/
proc report data=bd headline nowd;
column gender age fbj bmi;
define gender/ display width=10 ;
define age/ display width=10 ;
define fbj/ display format=4.1 center;
define bmi/ display format=4.1;
run;
/*order 排序*/
proc report data=bd headline nowd;
column gender age fbj bmi;
define gender/ order width=10 ;
define age/ display width=10 ;
define fbj/ display format=4.1 center;
define bmi/ display format=4.1;
run;
/*group 分组*/
proc report data=bd headline nowd;
column gender age fbj bmi;
define gender/ group width=10 ;
define age/ across width=10 ;
define fbj/ analysis mean format=4.1 center;
define bmi/ analysis mean format=4.1;
run;
/*analysis分组*/
proc report data=bd headline nowd;
column gender age,(fbj bmi),(mean sum);
define gender/ group width=10 ;
define age/ across width=10 ;
define fbj/ analysis mean format=4.1 center;
define bmi/ analysis mean format=4.1;
run;
/* break语句*/
proc report data=bd headline nowd;
column gender age fbj bmi;
define gender/ group width=10 ;
define age/ group width=10 ;
define fbj/ analysis mean format=4.1 center;
define bmi/ analysis mean format=4.1;
break after gender/ dul summarize;
run;
/*compute语句*/
proc report data=bd headline nowd;
column gender age fbj bmi;
define gender/ order width=10 "性别";
define age/ display width=10 "年龄";
define fbj/ display format=4.1 center;
define bmi/ display format=4.1;
compute before ;
line "基本信息";
endcomp;
run;
/*where语句*/
proc report data=bmi nowd hedline;/*nowd表示结果不显示在报表窗口,而显示在输出窗口;headline表示在表头下方显示一条分割线*/
column gender age fbg bmi;/*指定高输出显示的4个变量*/
define gender/width=10;/*指定gender列的宽度为10*/
define age/width=10;/*指定age列的宽度为10*/
define fbg/format=6.1;/*指定fbg的输出格式为6.1*/
define bmi/format=6.2;/*指定bmi的输出根式为6.2*/
where bmi>=27;/*利用where语句仅输出bmi>=27的观测*/
run;