data parks;
infile cards;
input name $1-21 type $ Region $ Museums Camping;
cards;
Dinosaur NM West 2 6
Ellis Island NM East 1 0
Everglades NP East 5 2
Grand Canyon NP West 5 3
Great Smoky Mountains NP East 3 10
Hawaii Volcanoes NP West 2 2
Lava Beds NM West 1 1
Status of Liberty NM East 1 0
Theodore Roosevelt NP . 2 2
Yellowstone NP West 9 11
Yosemite NP West 2 13
;
/* 按照region排序
proc sort data=parks;
by type region;
*/
proc print data=parks;
run;
代码语言:javascript复制proc tabulate data=parks missing;
* class语句列出分类变量,而VAR语句告诉SAS那些变量装的是连续数据;
class type region;
var Museums Camping;
table type all, sum*(museums*format=6.0 camping*format=6.0)*(region all)/
box='tips' MISSTEXT='none';
run;
proc report 得到的报告类型,部分依据于使用的数值类型。 只要报告中起码有一个字符串变量,默认的报告就是每个观测值一行。但如果报告全是数值 变量,默认 proc report 将会加总这些变量,即使是日期变量也会被加总。;
代码语言:javascript复制* 同print输出;
proc report data=parks nowindows headline;
title 'Report with Character and Numberic variable';
run;
全部数值型变量 默认加总;
代码语言:javascript复制proc report data=parks nowindows headline;
column museums camping;
Title 'Report with only Numeric Variables';
run;
输出同上;不同就是label修改顶部标语
代码语言:javascript复制proc tabulate data=parks;
var museums camping;
table sum=''*(museums camping)*format=6.2;
label museums = 'mus' camping='cam';
Title 'Report with only Numeric Variables';
run;
define
Define 用来为单个变量指定一些选项,基本形式为: DEFINE variable/options’column-header’; Usage 选项 这个选项告诉 SAS 如何使用这个变量,可能的 usage 选项包括: Across:为变量的每一个变量值都创建一个列 Analysis:为变量创建统计量,数值变量默认有这个 usage 选项,且统计量默认为 sum。 Display:为数据集中的每一个观测值都创建一行,对于字符串变量,这个选项是默认的。 Group:为每个变量的变量值都创建一行。 Order:为每个观测值都创建一行,且行值的排列是是按照指定的变量来顺序。
代码语言:javascript复制* define xxxx / order 'YYYY',修改顶部;
proc report data=parks missing;
column region name museums camping;
define region / order 'reg';
* define museums / order;
define camping / analysis 'Camp/Groups' format=6.2;
Title 'National Parks and Monuments Arranged by region';
run;
代码语言:javascript复制proc report data=parks missing;
column type region museums camping;
define type / group;
define region / group;
title 'yyyyyyyy';
run;
代码语言:javascript复制proc report data=parks missing;
column type, (region, (museums camping));
define region /across;
define type / across;
run;
注意下面两种写法
代码语言:javascript复制proc report data=parks missing;
column region type, (museums camping);
* group 行;
define region /group;
* across 列;
define type / across;
run;
使用tabulate
代码语言:javascript复制proc tabulate data=parks missing;
class region type;
var museums camping;
table region,type*(sum=''*(museums camping))/
box='tip';
Break 语句 可以为报告增加停顿,为每个指定的变量的变量值增加停顿。基本形式如下: BREAK location variable/options; RBREAK location/options; Location 有两种可能值——before 和 after,决定是之前停顿还是之后停顿。斜杠之后的选项告诉 SAS 插入哪种停顿,主要类型有: OL 停顿的地方加入横线 Page 开始一个新的页面 Skip 插入一个空行 Summarize 插入数值变量之和 UL 需要注意的是, break 要求指定一个变量,而 rbreak 不需要。因为 rbreak 只产生一个停顿(开 始或结尾),而 break 语句为指定的变量的每一个变量值都产生停顿。这个变量必须是 group 变量或 order 变量,并且要在 define 语句中定义过。可以在任何报告中使用 rbreak 语句,但 只能在有最起码一个 group 或者 order 变量的报告中使用 break 语句。
代码语言:javascript复制proc report data=parks nowindows headline;
column name region museums camping;
define region / order;
break after region / summarize ol skip;
rbreak after /summarize ol skip;
title 'National parks';
run;
使用tabulate不能画出类似的图,很难办到
加入统计量
简单的方法是在 column 语句中加入统计量的关键字,常用的有: Max、 min、 mean、 median、 n、 nmiss、 p90、 pctn、 pctsum、 std、 sum 给变量应用统计量 给变量应用统计量,在变量和统计量之间插入逗号即可,统计量 N 不 需要逗号。如: COLUMN Age,MEDIAN N; 为多个变量应用多个统计量,需要括号,如下面代码要求一个变量 age 应用两个统计量 min 和 max;两个变量 height 和 weight 应用一个统计量 mean: COLUMN Age,(MIN MAX)(Height Weight),MEAN;
代码语言:javascript复制proc report data=parks nowindows headline;
column type region N (museums camping), mean;
define region / group;
define type / group;
title 'Statistics with two Group Variables';
run;
代码语言:javascript复制proc report data=parks nowindows headline;
column region N type, (museums camping), mean;
define region / group;
define type / across;
title 'Statistics with a Group and Across Variable';
run;
比较异同
代码语言:javascript复制proc report data=parks nowindows headline;
column type N (museums camping),mean;
define type / group;
title 'test';
run;
代码语言:javascript复制proc report data=parks nowindows headline;
column type N (museums camping),mean;
define type / across;
title 'test';
run;