《系统和数据分析PROC步中的通用语句》由会员分享,可在线阅读,更多相关《系统和数据分析PROC步中的通用语句(27页珍藏版)》请在金锄头文库上搜索。
1、第十六课用在PROC步中的通用语句当我们用DATA步创建好SAS数据集后,可以用 SAS的一些PROC过程步来进一步的 分析和处理它们。在 DATA步中用户可以使用 SAS的语句来编写自己的程序,以便能通过读 入、处理和描述数据,创建符合自己特殊要求的SAS数据集。而后由一组组 PROC步组成的程序进行后续分析和处理。一、PROC程序的主要作用读出已创建好的SAS数据集 用数据集中的数据计算统计量 将统计的结果按一定形式输出在SAS系统中,计算统计量时,对于许多常用的和标准的统计计算方法,并不需要用户 自己编写这些复杂的程序,而是通过过程的名字来调用一个已经为用户编写好的程序。用户 通常只要编
2、写调用统计过程前的准备处理程序和输出统计结果后的分析和管理程序。只有用 户自己非常特殊的统计计算方法才需要用户自己编写相应的计算程序。二、PROC过程语句PROC语句用在PROC步的开始,并通过过程名来规定我们所要使用的SAS过程,对于更进一步的分析,用户还可以在PROC语句中使用一些任选项,或者附加其他语句及它们的任选项(如 BY语句)来对 PROC步规定用户所需要分析的更多细节。PROC语句的格式为:PROC 过程名 ;过程名程名PRINT,对数值变量计算简单描述统计量的过程名MEANS。选项规定这个过程的一个或几个选项。不同的过程规定的选项是不同的,因此,只有知 道具体的过程才能确定具体
3、的选项是什么。但是,在各个不同过程中使用选项时,下面三种 选项的使用格式是共同的:KeywordKeyword=数值 Keyword=数据集Keyword是关键字,第一种选项格式是某个具体过程进一步要求某个关键字;第二种选 项格式是某个具体过程要求某个关键字的值,值可能是数值或字符串;第三种选项格式是某 个具体过程要求输入或输出数据集。例如:PROC Print Data=class ;过程Print,作用为打印输出数据集中的数据。选项为Data=class,关键字是 Data,进一步说明要打印输出的数据集名为class。如果省略这个选项,将用最近产生的SAS数据集。PROC Plot Hpc
4、t=50 Vpct=33 ;过程Plot,作用为描绘变量的散布图。现有两个表示图形大小的选项为Hpct=50、Vpct=33,关键字Hpct和Vpct的值分别表示在水平和垂直方向上占一页中的比例。数值50表示占一页白PROC Means Data=class Maxdec=3 CSS ;过程Means,作用为对数值变量计算简单描述统计量。现有三个选项为Data=class、Maxdec=3、CSS。选项Maxdec=3表示该过程输出结果中,小数部分的最大位数为3。选项CSS,是单个关键字,指出 MEANS过程选用的计算统计量的方法,在MEANS过程中共有几十种计算统计量方法,CSS表示计算均值
5、偏差的加权平方和。三、用在PROC步的通用语句能够出现在PROC步的SAS语句主要分成:过程信息语句、变量属性语句 可用在任何地方的全局语句下面我们列出语句是 PROC过程中最常用的一些通用语句,还有很多其他语句对不同的 过程是专用的。1. VAR语句(变量语句)VAR语句可用在不同的 SAS过程中,被用来给出要分析的变量。该语句的格式为:VAR变量列表;变量列表给出过程将要分析的数据集中的一些变量。变量列表的任意有效形式都是可以 使用的。通常 VAR语句是放在过程的开始处。另外, VAR语句中的变量顺序,也是将来输 出结果时的变量顺序。2. MODEL语句(模型语句)MODEL语句可用在不同
6、的 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。3. WEIGHT 语句(权数语句)WEIGHT语句可用在不同的 SAS过程中,用来规定一个变量,它的值是这些观测相应的 权数。该语WEIGH
7、T变量;WEIGHT语句常常用在这样一些分析中,比如与每个观测有联系的方差不等时,那么可 引入一个权数变量,其值和方差的倒数成比例。4. FREQ语句(频数语句)FREQ语句可用在不同的 SAS过程中,用来规定一个变量,它的值表示这个观测出现的 频数。该语句的格式为:FREQ变量;如果在FREQ变量的值小于1 ,这个观测在分析中不使用; 如果FREQ变量的值不是整数,仅取整数部分使用。注意 FREQ语句和 WEIGHT语句的区别。FREQ变量表 示观测出现的次数; WEIGHT变量给出观测相应的权数。当每个观测的权数都是整数时,WEIGHT语句也可用FREQ语句代替。5. ID语句ID语句可用
8、在不同的 SAS过程中,用来规定一个或几个变量,它们的值在打印输出或这个过程产生白ID变量列表;使用了 ID语句后,最左边的OBS列被取消了,且ID语句所指定的变量被排列在输出结 果报告的最左边。例如,当一个ID语句同PRINT过程一起使用时,输出的观测用 ID变量的值来识别,而观测本来的序号没有被打印输出。6. CLASS 语句CLASS语句可用在不同的 SAS过程中,用来指定一些分类变量,SAS过程按分类变量的不同值分别CLASS变量列表;例如,我们要按男女分类统计SURVEY数据集中收入INCOME的平均值。程序如下:Libname Study d:sasdatamydir;Proc M
9、eans Data=Study.Survey ;Class Sex ;VarIn come ;Title “ How to use CLASS statement”Run ;程序运行结果如图16.1所示。图16.1 在PROC过程中使用CLASS语句分类计算分析 SEX7. BY语句当用户要求SAS系统对数据集进行分组处理时,可在PROC步中使用BY语句。但处理过程要求数BY 变量 1 ;DESCENDING选项表示它后面的一个变量按降序排列。要特别注意BY后面的变量排列的先后次序,表示分组的的先后次序。例如,有一个关于通讯录的数据集,我们要按居住的 城市(City )降序排列,同一城市中按邮
10、编( Zipcode)的升序排列。BY语句的使用格式为:BY DESCENDING City ZipcodeNOTSORTED选项并不是说数据不要求排序,而是要求数据按组整理,并且这些组不必 按字母顺序或数值的顺序排序。但如果要处理的数据集事先没有按BY变量的升序排序,可使用如下几种方法先处理一下数据集:在SORT过程中用相同的 BY语句对观测进行排序用Base SAS软件中DATASETS过程对 BY变量生成一个索引在PROC调用过程的BY语句中使用NOTSORTED例如,我们有一个没有按任何变量排序过的SURVEY03数据集,现在要想按男女分组显示观测的NLibname Study d:s
11、asdatamydir ;Proc Sort Data=Study.SurveyO3 ;By Sex ;Proc Print DATA=Study.SurveyO3 ;Proc Print DATA=Study.SurveyO3 ;By Sex ;Var Name In come ;Id Sex ;Run ;程序运行结果如图16.2所示。图16.2 在PROC过程中使用BY语句分组计算分析 SEX第十七课 CLASS语句与BY语句是有所区 别的。CLASS语句使用时,不要求数据集 事先按CLASS指定的变量排序,按指定 变量的不同值进行分类计算和分析后,输 出的分类结果列在一张报表里。而 BY
12、语 句在使用时,要求数据集事先按 BY指定 的变量排序,且输出的结果也按分组列出 许多报表。使用列表报告PROC PRINT和汇总报告PROC TABULATE利用SAS系统提供的各种过程可以制作各种风格的报表。一份好的输出报表可以使用户更直观、更清楚和更容易地了解和明白统计计算的结果,因此如何制作一个能充分揭示运算 结果信息和满足要求的报告,也是非常重要的。SAS系统提供的各种制作报表的过程中,最常用的是以下两种:列表报告PROC PRINT过程汇总报告PROC TABULATE 过程一、列表报告PROC PRINT 过程所谓列表报告PROC PRINT过程,将输出SAS数据集中的数值,输出
13、时把数据集中的每 一个变量形成输出报表的列,而每一个观测形成输出报表的一行。1. PROC PRINT过程的主要功能PROC PRINT过程输出的数据列表具体地说主要能够做到以下几点:变量的输出格式用户可以选择(Format语句)可在输出报表中加上标题(Title)和脚注(Foot notes语句)可输出数据集中变量的任何子集(Where语句)可以控制变量是否出现以及出现的顺序(Var语句)用户可以自己订制列表头(Label语句)可分组输出观测数据(By语句)可计算所有观测值或分组观测值的总和(Sum/Sumby语句)及其他统计量每页报表的宽度和长度以及每列的宽度都可控制(选项Width=)当
14、数据集中变量太多时,可分成几部分输出(选项Rows=)2. PROC PRINT过程语句格式在PROC PRINT过程中,常常配合使用了许多其他 SAS语句以达到所要求的输出报表格式,我们把在PROC PRINT过程中常用的一些语句的基本使用格式列出,具体使用时根据需要可能使PROC PRINT ;VAR变量列表;ID变量列表;BY变量列表;PAGEBY 变量;SUMBY变量;SUM变量列表;TITLE n标题内容”FOOTNOTE n标题内容 ”LABEL变量 仁 标签*内容”变量2=标签*内容” ;FORMAT变量输出格式;WHERE条件表达式;Run ;3. PROC PRINT 的选项
15、PROC PRINT的选项列表包含许多选项,选项之间以空格分隔,选项没有先后次序。我 们下面列出一些主要选项:DATA=数据集名一一给出要打印输出的 SAS数据集。如果省略,则为最近建立的 SAS数据集。N要求在输出这个数据集的数据列表之后,同时输出观测的总输出条数。如果使用了 BY分组语句,在每一个分组后输出各个分组输出观测的条数。LABEL或L使用变量的标签作为输出数据列表中每列的抬头。如果变量没有 定义标签,则用变量名作为列抬头。SPLIT或S=分隔符一一规定一个字符(如*号或#号)用于将较长的标签分隔 成几行。在这个选项里定义了某个分隔符以后,过程中的LABEL语句里就可以使用这个分隔符了。另外,选项 SPLIT=和LABEL不必同时使用。NOOBS 不输出观测数据的序号。当不用