第四章 排序、打印并描述你的数据
4.1使用SAS过程步
使用过程步就像填写一个如左图的表格,当然每个过程步都有独特的地方,本部分主要讨论各过程步相同的地方:
大部分过程步都有一个必须的语句,也有可选的语句,比如打印语句:proc print,这两个词是必须的,但可选的语句也有很多。
Proc语句所有的语句的必须部分为proc+过程名,比如print、contents等。后面接一些可选项。比如proc print data=banana;
data=banana选项告诉SAS打印哪个文件,如果不加,则SAS默认打印最近使用的数据。前面还可以家l ibname语句,建立一个对本地文件的链接(2.20),比如:
LIBNAME tropi cal 'c:\MySASLi b';
PROC CONTENTS DATA=tropi cal .banana;
或者直接引用(2.21):PROC CONTENTS DATA='c:\MySASLi b\banana';
BY语句BY语句只在过程proc sort中是必须的,它用来对观测值排序。其他过程BY告诉过程对变量进行分别分析,且是可选的。比如要对每个州进行分别分析,则为:BY State
另外,除了proc sort,其他过程都假设了数据已经进行了排序,所以如果数据还没有排序,那么在分析之前要用proc sort排序。
TITLE和FOOTNOTE语句这是为输出加上标题和脚注。最基本的title语句为:title ‘标题’,双引号、单引号皆可,比如:
TITLE'Thi s i s a ti tl e';
如果标题中带有撇号,则需用双引号,或者将撇号换为双撇号:
TITLE”Here’s another ti tl e”;
TITLE’Here’’s another ti tl e’;
可以通过在ti le、footnote后面加上数字来添加多个标题和脚注,
FOOTNOTE3’Thi s i s the thi rd footnote’;
但是小数字的标题会代替大数字的标题,如ti tle2会代替title3。
标题的去处可以用ti tle+空值:TITLE;
Label语句它可以为输出的变量加上标签,一个标签最大256字节,下面的代码为
receivedate和shipdate创建了标签:
LABEL Recei veDate=’Date order was recei ved’
Shi pDate=’Date merchandi se was shi pped’;
注意的是,在数据步中使用label语句,则标签会保存在数据集中;在过程步中使用,标签只在这个过程中有效。
定制输出使用系统选项,可以为输出设置诸如居中、日期、单行长度、页长度等。使用Output Delivery System,还可以改变输出的风格,以不同的格式输出(HTML、RTF),甚至改变输出的任何细节。
输出数据集可以用ODS OUTPUT语句为输出结果创立一个数据集(5.3),一些过程中也可以用out=option。
4.2用where语句在过程中构造子集
也可以用where构造子集,它方便快捷,因为他不创建新的数据集。且能够用在过程步中。
Where语句的基本形式为:
WHERE condi ti on;
只有满足条件的观测值才进行proc过程。一些使用最多的操作符及例子:
输出结果为:
4.3用proc sort为数据排序
基本形式为:
PROC SORT;
BY vari abl e-1...vari abl e-n;
SAS首先会按照第一个变量排序,再对后面的排序。
Data=,out=用来指定输入和输出数据,如果缺失out=,则SAS会将排序后的数据集代替原
来的数据集。下面的代码告诉SAS对数据messy排序,并将排序后的数据存在neat中:
PROC SORT DATA=messy OUT=neat;
选项nodupkey告诉SAS排序时删除重复值,比如:
PROC SORT DATA=messy OUT=neat NODUPKEY;
SAS默认是升序,可以用选项DESCENDING来变成降序,将DESCENDING加在要降序的变量
前面:
BY State DESCENDING Ci ty;
例子下面的数据显示了一些鲸鱼和鲨鱼品种的平均长度: