当前位置:文档之家› SAS讲义 第十六课用在PROC步中的通用语句

SAS讲义 第十六课用在PROC步中的通用语句

第十六课用在PROC步中的通用语句
当我们用DATA步创建好SAS数据集后,可以用SAS的一些PROC过程步来进一步的分析和处理它们。

在DATA步中用户可以使用SAS的语句来编写自己的程序,以便能通过读入、处理和描述数据,创建符合自己特殊要求的SAS数据集。

而后由一组组PROC步组成的程序进行后续分析和处理。

一.PROC程序的主要作用
●读出已创建好的SAS数据集
●用数据集中的数据计算统计量
●将统计的结果按一定形式输出
在SAS系统中,计算统计量时,对于许多常用的和标准的统计计算方法,并不需要用户自己编写这些复杂的程序,而是通过过程的名字来调用一个已经为用户编写好的程序。

用户通常只要编写调用统计过程前的准备处理程序和输出统计结果后的分析和管理程序。

只有用户自己非常特殊的统计计算方法才需要用户自己编写相应的计算程序。

二.PROC过程语句
PROC语句用在PROC步的开始,并通过过程名来规定我们所要使用的SAS过程,对于更进一步的分析,用户还可以在PROC语句中使用一些任选项,或者附加其它语句及它们的任选项(如BY语句)来对PROC步规定用户所需要分析的更多细节。

PROC语句的格式为:
PROC 过程名<选项>;
过程名规定用户想使用的SAS过程的名字。

例如,我们在前面常使用的打印过程名PRINT,对数值变量计算简单描述统计量的过程名MEANS。

选项规定这个过程的一个或几个选项。

不同的过程规定的选项是不同的,因此,只有知道具体的过程才能确定具体的选项是什么。

但是,在各个不同过程中使用选项时,下面三种选项的使用格式是共同的:
●Keyword
●Keyword=数值
●Keyword=数据集
Keyword是关键字,第一种选项格式是某个具体过程进一步要求某个关键字;第二种选项格式是某个具体过程要求某个关键字的值,值可能是数值或字符串;第三种选项格式是某个具体过程要求输入或输出数据集。

例如:
PROC Print Data=class ;
过程Print,作用为打印输出数据集中的数据。

选项为Data=class,关键字是Data,进一步说明要打印输出的数据集名为class。

如果省略这个选项,将用最近产生的SAS数据集。

PROC Plot Hpct=50 Vpct=33 ;
过程Plot,作用为描绘变量的散布图。

现有两个表示图形大小的选项为Hpct=50 、Vpct=33,关键字Hpct 和Vpct的值分别表示在水平和垂直方向上占一页中的比例。

数值50表示占一页的50%,即全页的一半。

PROC Means Data=class Maxdec=3 CSS ;
过程Means,作用为对数值变量计算简单描述统计量。

现有三个选项为Data=class 、Maxdec=3 、CSS 。

选项Maxdec=3表示该过程输出结果中,小数部分的最大位数为3。

选项CSS,是单个关键字,指出MEANS过程选用的计算统计量的方法,在MEANS过程中共有几十种计算统计量方法,CSS表示计算均值偏差的加权平方和。

三.用在PROC步的通用语句
能够出现在PROC步的SAS语句主要分成:
●过程信息语句、
●变量属性语句
●可用在任何地方的全局语句
下面我们列出语句是PROC过程中最常用的一些通用语句,还有很多其它语句对不同的过程是专用的。

1V AR语句(变量语句)
V AR语句可用在不同的SAS过程中,被用来给出要分析的变量。

该语句的格式为:
V AR变量列表;
变量列表给出过程将要分析的数据集中的一些变量。

变量列表的任意有效形式都是可以使用的。

通常V AR语句是放在过程的开始处。

另外,V AR语句中的变量顺序,也是将来输出结果时的变量顺序。

2MODEL语句(模型语句)
MODEL语句可用在不同的SAS统计过程中,被用来规定分析的模型。

尽管MODEL语句的具体语句形式依赖于使用的具体过程,但MODEL语句的一般使用格式为:
MODEL 因变量列表=自变量列表</选项> ;
MODEL语句在使用时,要说明哪些变量是因变量,哪些变量是自变量。

另外,不要把
“=”号看作是等号或赋值号的作用。

例如:
Model y=x1-x5 ;
自变量x1、x2、x3、x4、x5,因变量y。

Model y1 y2= a b c d
自变量a、b、c、d,因变量有两个y1和y2。

3WEIGHT语句(权数语句)
WEIGHT语句可用在不同的SAS过程中,用来规定一个变量,它的值是这些观测相应的权数。

该语句的格式为:
WEIGHT 变量;
WEIGHT语句常常用在这样一些分析中,比如与每个观测有联系的方差不等时,那么可引入一个权数变量,其值和方差的倒数成比例。

4FREQ语句(频数语句)
FREQ语句可用在不同的SAS过程中,用来规定一个变量,它的值表示这个观测出现的频数。

该语句的格式为:
FREQ 变量;
如果在某个观测中,FREQ变量的值小于1,这个观测在分析中不使用;如果FREQ变量的值不是整数,仅取整数部分使用。

注意FREQ语句和WEIGHT语句的区别。

FREQ变量表示观测出现的次数;WEIGHT变量给出观测相应的权数。

当每个观测的权数都是整数时,WEIGHT语句也可用FREQ语句代替。

5ID语句
ID语句可用在不同的SAS过程中,用来规定一个或几个变量,它们的值在打印输出或这个过程产生的SAS数据集中用来识别观测。

该语句的格式为:
ID 变量列表;
使用了ID语句后,最左边的OBS列被取消了,且ID语句所指定的变量被排列在输出结果报告的最左边。

例如,当一个ID语句同PRINT过程一起使用时,输出的观测用ID变量的值来识别,而观测本来的序号没有被打印输出。

6 CLASS 语句
CLASS 语句可用在不同的SAS 过程中,用来指定一些分类变量,SAS 过程按分类变量的不同值分别进行分析处理。

该语句的格式为:
CLASS 变量列表 ;
例如,我们要按男女分类统计SURVEY 数据集中收入INCOME 的平均值。

程序如下:
Libname Study "d:\sasdata\mydir" ;
Proc Means Data=Study.Survey ;
Class Sex ;
Var Income ;
Title “How to use CLASS statement”
Run ;
程序运行结果见图16-1所示。

7 BY 语句
当用户要求SAS 系统对数据集进行分组处理时,可在PROC 步中使用BY 语句。

但处理过程要求数据集事先已经按BY 变量排序好了。

该语句的一般格式为:
BY <descending> 变量1
<…变量2> <NOTSORTED> ;
图16-1 在PROC 过程中使用CLASS 语句分类计算分析SEX
DESCENDING选项表示它后面的一个变量按降序排列。

要特别注意BY后面的变量排列的先后次序,表示分组的的先后次序。

例如有一个关于通讯录的数据集,我们要按居住的城市(City)降序排列,同一城市中按邮编(Zipcode)的升序排列。

BY语句的使用格式为:BY DESCENDING City Zipcode
NOTSORTED选项并不是说数据不要求排序,而是要求数据按组整理,并且这些组不必按字母顺序或数值的顺序排序。

但如果要处理的数据集事先没有按BY变量的升序排序,可使用如下几种方法先处理一下数据集:
●在SORT过程中用相同的BY语句对观测进行排序。

●用Base SAS软件中DATASETS过程对BY变量生成一个索引。

●在PROC调用过程的BY语句中使用NOTSORTED。

例如,我们有一个没有按任何变量排序过的SURVEY03数据集,现在要想按男女分组显示观测的NAME和INCOME变量的内容。

程序如下:
Libname Study "d:\sasdata\mydir" ;
Proc Sort Data=Study.Survey03 ;
By Sex ;
Proc Print DA TA=Study.Survey03 ;
Proc Print DA TA=Study.Survey03 ;
By Sex ;
Var Name Income ;
Id Sex ;
Run ;
程序运行结果见图16-2所示。

图16-2在PROC过程中使用BY语句分组计算分析SEX
CLASS语句与BY语句是有所区别的。

CLASS语句使用时,不要求数据集事先按CLASS 指定的变量排序,按指定变量的不同值进行分类计算和分析后,输出的分类结果列在一张报表里。

而BY语句在使用时,要求数据集事先按BY指定的变量排序,且输出的结果也按分组列出许多报表。

相关主题