




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十六课第十六课 用在用在 PROC 步中的通用语句步中的通用语句 当我们用 DATA 步创建好 SAS 数据集后,可以用 SAS 的一些 PROC 过程步来进一步的 分析和处理它们。在 DATA 步中用户可以使用 SAS 的语句来编写自己的程序,以便能通过 读入、处理和描述数据,创建符合自己特殊要求的 SAS 数据集。而后由一组组 PROC 步组 成的程序进行后续分析和处理。 一一、 PROC 程程序序的的主主要要作作用用 读出已创建好的读出已创建好的 SAS 数据集数据集 用数据集中的数据计算统计量用数据集中的数据计算统计量 将统计的结果按一定形式输出将统计的结果按一定形式输出 在 SAS
2、 系统中,计算统计量时,对于许多常用的和标准的统计计算方法,并不需要用 户自己编写这些复杂的程序,而是通过过程的名字来调用一个已经为用户编写好的程序。用 户通常只要编写调用统计过程前的准备处理程序和输出统计结果后的分析和管理程序。只有 用户自己非常特殊的统计计算方法才需要用户自己编写相应的计算程序。 二二、 PROC 过过程程语语句句 PROC 语句用在 PROC 步的开始,并通过过程名来规定我们所要使用的 SAS 过程,对 于更进一步的分析,用户还可以在 PROC 语句中使用一些任选项,或者附加其他语句及它们 的任选项(如 BY 语句)来对 PROC 步规定用户所需要分析的更多细节。PROC
3、 语句的格式 为: PROC 过程名 ; 过程名规定用户想使用的 SAS 过程的名字。例如,我们在前面常使用的打印过程名 PRINT,对数值变量计算简单描述统计量的过程名 MEANS。 选项规定这个过程的一个或几个选项。不同的过程规定的选项是不同的,因此,只有知 道具体的过程才能确定具体的选项是什么。但是,在各个不同过程中使用选项时,下面三种 选项的使用格式是共同的: Keyword Keyword=数值数值 Keyword=数据集数据集 Keyword 是关键字,第一种选项格式是某个具体过程进一步要求某个关键字;第二种选 项格式是某个具体过程要求某个关键字的值,值可能是数值或字符串;第三种选
4、项格式是某 个具体过程要求输入或输出数据集。例如: 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 Me
5、ans Data=class Maxdec=3 CSS ; 过程 Means,作用为对数值变量计算简单描述统计量。现有三个选项为 Data=class 、 Maxdec=3 、CSS 。选项 Maxdec=3 表示该过程输出结果中,小数部分的最大位数为 3。选 项 CSS,是单个关键字,指出 MEANS 过程选用的计算统计量的方法,在 MEANS 过程中共 有几十种计算统计量方法,CSS 表示计算均值偏差的加权平方和。 三三、 用用在在 PROC 步步的的通通用用语语句句 能够出现在 PROC 步的 SAS 语句主要分成: 过程信息语句、过程信息语句、 变量属性语句变量属性语句 可用在任何地方
6、的全局语句可用在任何地方的全局语句 下面我们列出语句是 PROC 过程中最常用的一些通用语句,还有很多其他语句对不同的 过程是专用的。 1. VAR 语句(变量语句)语句(变量语句) VAR 语句可用在不同的 SAS 过程中,被用来给出要分析的变量。该语句的格式为: VAR 变量列表 ; 变量列表给出过程将要分析的数据集中的一些变量。变量列表的任意有效形式都是可以 使用的。通常 VAR 语句是放在过程的开始处。另外,VAR 语句中的变量顺序,也是将来输 出结果时的变量顺序。 2. MODEL 语句(模型语句)语句(模型语句) MODEL 语句可用在不同的 SAS 统计过程中,被用来规定分析的模
7、型。尽管 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 过程中,用来规定一个变量,它的值是这些观测相应 的
8、权数。该语句的格式为: WEIGHT 变量 ; WEIGHT 语句常常用在这样一些分析中,比如与每个观测有联系的方差不等时,那么可 引入一个权数变量,其值和方差的倒数成比例。 4. FREQ 语句(频数语句)语句(频数语句) FREQ 语句可用在不同的 SAS 过程中,用来规定一个变量,它的值表示这个观测出现的 频数。该语句的格式为: FREQ 变量 ; 如果在某个观测中,FREQ 变量的值小于 1,这个观测在分析中不使用;如果 FREQ 变 量的值不是整数,仅取整数部分使用。注意 FREQ 语句和 WEIGHT 语句的区别。FREQ 变 量表示观测出现的次数;WEIGHT 变量给出观测相应的
9、权数。当每个观测的权数都是整数时, WEIGHT 语句也可用 FREQ 语句代替。 5. ID 语句语句 ID 语句可用在不同的 SAS 过程中,用来规定一个或几个变量,它们的值在打印输出或 这个过程产生的 SAS 数据集中用来识别观测。该语句的格式为: ID 变量列表 ; 使用了 ID 语句后,最左边的 OBS 列被取消了,且 ID 语句所指定的变量被排列在输出 结果报告的最左边。例如,当一个 ID 语句同 PRINT 过程一起使用时,输出的观测用 ID 变 量的值来识别,而观测本来的序号没有被打印输出。 6. CLASS 语句语句 CLASS 语句可用在不同的 SAS 过程中,用来指定一些
10、分类变量,SAS 过程按分类变量 的不同值分别进行分析处理。该语句的格式为: CLASS 变量列表 ; 例如,我们要按男女分类统计 SURVEY 数据集中收入 INCOME 的平均值。程序如下: Libname Study d:sasdatamydir ; Proc Means Data=Study.Survey ; Class Sex ; Var Income ; Title “How to use CLASS statement” Run ; 程序运行结果如图 16.1 所示。 7. BY 语句语句 当用户要求 SAS 系统对数据集进行分组处理时,可在 PROC 步中使用 BY 语句。但处
11、 理过程要求数据集事先已经按 BY 变量排序好了。该语句的一般格式为: BY 变量 1 ; 图 16.1 在 PROC 过程中使用 CLASS 语句分类计算分析 SEX DESCENDING 选项表示它后面的一个变量按降序排列。要特别注意 BY 后面的变量排 列的先后次序,表示分组的的先后次序。例如,有一个关于通讯录的数据集,我们要按居住 的城市(City)降序排列,同一城市中按邮编(Zipcode)的升序排列。BY 语句的使用格式 为: BY DESCENDING City Zipcode NOTSORTED 选项并不是说数据不要求排序,而是要求数据按组整理,并且这些组不必 按字母顺序或数值
12、的顺序排序。 但如果要处理的数据集事先没有按 BY 变量的升序排序,可使用如下几种方法先处理一 下数据集: 在在 SORT 过程中用相同的过程中用相同的 BY 语句对观测进行排序语句对观测进行排序 用用 Base SAS 软件中软件中 DATASETS 过程对过程对 BY 变量生成一个索引变量生成一个索引 在在 PROC 调用过程的调用过程的 BY 语句中使用语句中使用 NOTSORTED 例如,我们有一个没有按任何变量排序过的 SURVEY03 数据集,现在要想按男女分组 显示观测的 NAME 和 INCOME 变量的内容。程序如下: Libname Study d:sasdatamydir
13、 ; Proc Sort Data=Study.Survey03 ; By Sex ; Proc Print DATA=Study.Survey03 ; Proc Print DATA=Study.Survey03 ; By Sex ; Var Name Income ; Id Sex ; Run ; 程序运行结果如图 16.2 所示。 图 16.2 在 PROC 过程中使用 BY 语句分组计算分析 SEX 第十七课第十七课 CLASS 语句与 BY 语句是有所 区别的。CLASS 语句使用时,不要求数 据集事先按 CLASS 指定的变量排序,按 指定变量的不同值进行分类计算和分析 后,输出的
14、分类结果列在一张报表里。 而 BY 语句在使用时,要求数据集事先按 BY 指定的变量排序,且输出的结果也按 分组列出许多报表。使用列表报告使用列表报告 PROC PRINT 和汇总报告和汇总报告 PROC TABULATE 利用 SAS 系统提供的各种过程可以制作各种风格的报表。一份好的输出报表可以使用 户更直观、更清楚和更容易地了解和明白统计计算的结果,因此如何制作一个能充分揭示运 算结果信息和满足要求的报告,也是非常重要的。SAS 系统提供的各种制作报表的过程中, 最常用的是以下两种: 列表报告列表报告 PROC PRINT 过程过程 汇总报告汇总报告 PROC TABULATE 过程过程
15、 一一、 列列表表报报告告 PROC PRINT 过过程程 所谓列表报告 PROC PRINT 过程,将输出 SAS 数据集中的数值,输出时把数据集中的 每一个变量形成输出报表的列,而每一个观测形成输出报表的一行。 1. PROC PRINT 过程的主要功能过程的主要功能 PROC PRINT 过程输出的数据列表具体地说主要能够做到以下几点: 变量的输出格式用户可以选择(变量的输出格式用户可以选择(Format 语句)语句) 可在输出报表中加上标题(可在输出报表中加上标题(Title)和脚注()和脚注(Footnotes 语句)语句) 可输出数据集中变量的任何子集(可输出数据集中变量的任何子集
16、(Where 语句)语句) 可以控制变量是否出现以及出现的顺序(可以控制变量是否出现以及出现的顺序(Var 语句)语句) 用户可以自己订制列表头(用户可以自己订制列表头(Label 语句)语句) 可分组输出观测数据(可分组输出观测数据(By 语句)语句) 可计算所有观测值或分组观测值的总和(可计算所有观测值或分组观测值的总和(Sum/Sumby 语句)及其他统计量语句)及其他统计量 每页报表的宽度和长度以及每列的宽度都可控制(选项每页报表的宽度和长度以及每列的宽度都可控制(选项 Width=) 当数据集中变量太多时,可分成几部分输出(选项当数据集中变量太多时,可分成几部分输出(选项 Rows=
17、) 2. PROC PRINT 过程语句格式过程语句格式 在 PROC PRINT 过程中,常常配合使用了许多其他 SAS 语句以达到所要求的输出报表 格式,我们把在 PROC PRINT 过程中常用的一些语句的基本使用格式列出,具体使用时根 据需要可能使用其中的几条语句。如下所示: PROC PRINT ; VAR 变量列表 ; ID 变量列表 ; BY 变量列表 ; PAGEBY 变量; SUMBY 变量; SUM 变量列表 ; TITLEn “标题内容”; FOOTNOTEn “标题内容”; LABEL 变量 1=“标签*内容” 变量 2=“标签*内容” ; FORMAT 变量输出格式
18、; WHERE 条件表达式 ; Run ; 3. PROC PRINT 的选项的选项 PROC PRINT 的选项列表包含许多选项,选项之间以空格分隔,选项没有先后次序。我 们下面列出一些主要选项: DATA=数据集名数据集名给出要打印输出的给出要打印输出的 SAS 数据集。如果省略,则为最近建立数据集。如果省略,则为最近建立 的的 SAS 数据集。数据集。 N要求在输出这个数据集的数据列表之后,同时输出观测的总输出条数。如要求在输出这个数据集的数据列表之后,同时输出观测的总输出条数。如 果使用了果使用了 BY 分组语句,在每一个分组后输出各个分组输出观测的条数。分组语句,在每一个分组后输出各
19、个分组输出观测的条数。 LABEL 或或 L使用变量的标签作为输出数据列表中每列的抬头。如果变量没使用变量的标签作为输出数据列表中每列的抬头。如果变量没 有定义标签,则用变量名作为列抬头。有定义标签,则用变量名作为列抬头。 SPLIT 或或 S=分隔符分隔符规定一个字符(如规定一个字符(如*号或号或#号)用于将较长的标签分隔号)用于将较长的标签分隔 成几行。在这个选项里定义了某个分隔符以后,过程中的成几行。在这个选项里定义了某个分隔符以后,过程中的 LABEL 语句里就可以语句里就可以 使用这个分隔符了。另外,选项使用这个分隔符了。另外,选项 SPLIT=和和 LABEL 不必同时使用。不必同
20、时使用。 NOOBS不输出观测数据的序号。当不用不输出观测数据的序号。当不用 ID 语句且又不要输出观测的序号时,语句且又不要输出观测的序号时, 可使用该选项。可使用该选项。 DOUBLE 或或 D要求输出隔行打印。要求输出隔行打印。 ROUND 或或 R对用对用 FORMAT 语句规定变量的输出格式中的小数点位进行四语句规定变量的输出格式中的小数点位进行四 舍五入。舍五入。 HEADING=H 或或 V规定打印列抬头的方向。规定打印列抬头的方向。H 或或 HORIZONTAL 表示所有表示所有 列抬头水平打印,列抬头水平打印,V 或或 VERTICAL 表示所有列抬头垂直打印。表示所有列抬头
21、垂直打印。 WIDTH=FULL 或或 MIN 或或 U 或或 UBY规定使用什么作为列宽。规定使用什么作为列宽。FULL 表示使表示使 用变量格式化宽度,用变量格式化宽度,MIN 或或 MINIMUM 表示使用可能的最小列宽,表示使用可能的最小列宽,U 或或 UNIFORM 表示对所有页一致地使用变量格式化宽度,表示对所有页一致地使用变量格式化宽度,UBY 或或 UNIFORMBY 表表 示在示在 BY 组内对所有页一致地使用变量格式化宽度。组内对所有页一致地使用变量格式化宽度。 ROWS=PAGE当数据集包含很多变量和观测时,使用此选项将在每一页中打当数据集包含很多变量和观测时,使用此选项
22、将在每一页中打 印尽可能多的观测,能减少输出页数。印尽可能多的观测,能减少输出页数。 VAR 语句、语句、ID 语句和语句和 BY 语句我们前面已经说明过了,这里不再重复。语句我们前面已经说明过了,这里不再重复。 PAGEBY 语句要求和 BY 语句一起使用,当 PAGEBY 变量的值改变或者在 BY 语句中 列在 PAGEBY 变量前的 BY 变量值改变时,PRINT 过程将从新的一页开始输出。 SUM 语句规定计算总和的变量,SUM 语句中规定的变量可以没有列在 VAR 语句中, PRINT 过程将自动把 SUM 语句中规定的变量加到 VAR 变量列表中。 SUMBY 语句必须和 BY 语
23、句连用,用来对一部分 BY 组中指定的变量求和。每当 SUMBY 变量的值变化或者 BY 语句中列在 SUMBY 变量前的变量值改变时,PRINT 将把对 应 BY 组中的 SUM 语句中的变量求和。如果没有规定 SUM 语句,则将对数据集中 BY 变量 以外的所有数值变量求和。SUMBY 语句的本质是通过指定 BY 变量列表中变量位置而限制 BY 组中 SUM 变量求和。 4. 举例举例 例如,我们要输出 SURVEY 数据集的报表。报表之一的要求是:选择输出身高小于 1.75 米的观测,同时给出满足条件的总输出条数,自定义要显示的变量和顺序,不显示观测 的序号,求和 INCOME 变量的值
24、,修改 BDATE 变量和 INCOME 变量输出格式,且修改它 们的列标题并分两行显示,加两个标题和一个脚注。程序如下: LIBNAME STUDY “D:SASDATAMYDIR”; PROC PRINT data=study.survey noobs n split=* round width=min ; VAR name sex income bdate heigh weight ; SUM income ; TITLE1 “PROCEDURE PRINT”; TITLE2 “Dept.of Information System”; FOOTNOTE1 “SHANGHAI UNIVER
25、SITY OF FINANCE AND ECONOMICS”; LABEL Bdate=Date of*Brithday Income=Total*Income ; FORMAT Bdate DATE7. Income dollar12.2 ; WHERE heigh=1.75 ; Run ; 程序运行结果如图 17.3 所示。 脚注显示在一页的最下方,通常一页的长度要大于窗口的长度,所以有时正文和脚注的 内容并不一定能同时显示在 OUTPUT 窗口中。我们可以用 Globals/Options/Global options 命 令,调出 Options 对话单,修改页尺寸 PAGESIZE
26、参数为 17 行,然后选择 Options/Save settings now 命令保存当前的设置。 报表之二的要求是:修改报表一,按 SEX 变量中的值 M 和 F 进行分组求和(用 BY 语 句) ,同时将分组值 M 和 F 列在分组报告的最左边(用 ID 语句) 。要分组求和,指定数据集 中的分组变量值必须事先已经按升序排序好了,如果没有排序过,常常先用 SORT 过程对分 组变量进行排序。去掉脚注。程序如下: LIBNAME STUDY “D:SASDATAMYDIR”; PROC SORT Data=study.survey out=study.bysex ; By sex ; PR
27、OC PRINT data=study.bysex noobs n split=* round width=min ; VAR name income bdate heigh weight ; ID sex ; BY sex ; SUM income ; TITLE1 “PROCEDURE PRINT”; TITLE2 “Dept.of Information System”; FOOTNOTE1 ; LABEL Bdate=Date of*Brithday Income=Total*Income ; 图 17.3 用 PROC PRINT 过程输出的 SURVEY 数据集报表之一 FORMA
28、T Bdate DATE7. Income dollar12.2 ; WHERE heigh=1.75 ; Run ; 程序运行结果如图 17.4 所示。 在使用了 TITLE 和 FOOTNOTE 语句后,所定义的标题和脚注将一直保持有效,直到另 一个 TITILE 或 FOOTNOTE 语句被执行。我们在程序中用不带任何内容的 FOOTNOTE1 语 句替代原先同样号码的脚注,实际上它能取消拥有更大号码的脚注。 二二、 汇汇总总报报告告 PROC TABULATE 过过程程 当一个 SAS 数据集包含不太多的数据时,列表报告可以很好地描述数据,但是当数据 集包含大量信息时,就需要使用汇总报
29、告了。PROC TABULATE 用分类报表的形式输出满 足用户要求的描述性统计量。每一个表单元属于用交叉变量名组成的特殊观测类。与每一个 单元有关的统计量是由该类所有观测值计算得到的。在通常情况下,产生汇总报表要先将数 据根据需要进行分类,然后在分类的基础上计算一些统计量。 图 17.4 用 PROC PRINT 过程输出的分组求和报表之二 1. PROC TABULATE 过程的三要素过程的三要素 一个最简单的 PROC TABULATE 过程必须定义下列三要素: 类变量类变量可以是数值型变量或字符型变量。分类的目的是为了在每一个类上进可以是数值型变量或字符型变量。分类的目的是为了在每一个
30、类上进 行计算和分析。行计算和分析。 分析变量分析变量一定是数值型变量。可以计算的一些统计量如:频数(一定是数值型变量。可以计算的一些统计量如:频数(frequency) 、 均值(均值(mean) 、标准差(、标准差(standard deviation) 、最小值(、最小值(minimum) 、最大值、最大值 (maximum) 、极差(、极差(range) 、总和(、总和(sum) 、百分数(、百分数(percentages)等。)等。 表的结构和格式表的结构和格式最多可以定义三个维度:第一维定义列,第二维定义行,第最多可以定义三个维度:第一维定义列,第二维定义行,第 三维定义页。并且可
31、以通过三维定义页。并且可以通过 TABLE 语句中的表达式计算统计量,用操作符,如:语句中的表达式计算统计量,用操作符,如: 逗号、空格、星号、圆括号等,来组织单元集合。另外,还能格式化单元中的数逗号、空格、星号、圆括号等,来组织单元集合。另外,还能格式化单元中的数 据值和产生用户化的行标题和列标题。据值和产生用户化的行标题和列标题。 2. PROC TABULATE 语句格式语句格式 在 PROC TABULATE 过程中,常常使用一些控制汇总报表产生的语句,一般过程形式 如下: PROC TABULATE ; CLASS 分类变量列表 ; VAR 分析变量列表 ; TABLE 行表达式,列
32、表达式 ; LABEL 变量 1=“标签*内容” 变量 2=“标签*内容” ; KEYLABEL 统计量名字 1=“标记 1” 统计量名字 2=“标记 2” ; FORMAT 变量输出格式 ; WHERE 条件表达式 ; Run ; PROC TABULATE 语句总是伴随着至少一个至少一个 TABLE 语句语句来规定如何制表。用在 TABLE 语句的分类变量必须用 CLASS 语句说明。用在 TABLE 语句的分析变量必须用 VAR 语句说明。同时出现在 CLASS 语句和 VAR 语句中的变量,只能作为分类变量使用。 CLASS、VAR 和 TABLE 语句是构成 PROC TABULAT
33、E 过程最基本的三条语句。 3. PROC TABULATE 的选项的选项 PROC TABULATE 的选项列表包含许多选项,选项之间以空格分隔,几个主要的选项 说明如下: DATA=数据集名数据集名给出要制表输出的给出要制表输出的 SAS 数据集。如果省略,则为最近建立数据集。如果省略,则为最近建立 的的 SAS 数据集。数据集。 NOSEPS要求在表体中不出现水平分隔线。要求在表体中不出现水平分隔线。 FORMCHAR=字符串字符串规定用来构造报表轮廓和分隔线的字符。规定用来构造报表轮廓和分隔线的字符。 字符串为字符串为 11 个制表字符,用来定义画垂直和水平线的个制表字符,用来定义画垂
34、直和水平线的 2 个字符,及画个字符,及画 9 个角字符:个角字符: 左上、中上、右上、左中、中中(交叉)左上、中上、右上、左中、中中(交叉) 、右中、左下、中下、右下。缺省值是、右中、左下、中下、右下。缺省值是 FORMCHAR=|-|+|-。如果要改变边角线,例如想把。如果要改变边角线,例如想把 4 个角换成个角换成*,则可使用,则可使用 FORMCHAR(3 5 9 11)=* * * *,如果,如果 FORMCHAR=选项赋了选项赋了 11 个空格,则生个空格,则生 成没有边框和分隔线的报表。成没有边框和分隔线的报表。 MISSING要求把丢失值作为分类变量的有效水平。即汇总时包含分类
35、变量中要求把丢失值作为分类变量的有效水平。即汇总时包含分类变量中 有丢失值的观测。有丢失值的观测。 4. TABLE 语句的使用和输出表格结构语句的使用和输出表格结构 如何正确地理解和使用 TABLE 语句是掌握 PROC TABULATE 过程的关键所在。汇总 报表输出的表格形状和所计算的统计量都是由 TABLE 语句中的表达式决定的,这个表达式 中包含元素和操作符。元素指分类变量、分析变量和统计量,当表达式包含多个元素时,需 要用操作符把它们连接起来。使用不同的操作符连接会产生不同的表格形状。下面列出一些 主要的操作符及其作用: TABLE 表达式中的操作符作用 逗号 ,转另一维 空格 表
36、格并排连接 星号 *交叉组合分组 圆括号 ( )分组或规定次序 为了便于理解 TABLE 表达式中操作符的作用,我们举一个假设的例子来说明。有 SAS 数据集 ABCX,其中有四个变量 A、B、C 和 X,变量 A、B、C 我们将在 PROX TABULATE 过程中用 CLASS 语句定义为分类变量,我们可以理解为它是一个产品的大类 A、中类 B 和小类 C。而 X 变量是一个数值型变量,用 VAR 定义为分析变量,我们可以理 解为它是一个产品的销售数量或收入金额或价格等。假设的数据集 ABCX 可能的数据值如 下表所示: 变量名TABLE 中的变量类型可能的数据值 A分类变量A1,A2 B
37、分类变量B1,B2 C分类变量C1,C2,C3 X分析变量111223 ABCX 数据集中的具体观测值见下表所示: OBSABCX 1A1B1C1111 2A1B1C2112 3A1B1C3113 4A1B2C1121 5A1B2C2122 6A1B2C3123 7A2B1C1211 8A2B1C2212 9A2B1C3213 10A2B2C1221 11A2B2C2222 12A2B2C3223 下面我们给出分析变量 X 和分类变量 A、B、C 组成的有效表达式的输出报表格式。 例 1:TABLE 表达式中只有一个分类变量 A,既没有规定分析变量,也没有指明统计量, 则缺省的统计量为频数 N
38、,即分类变量值的交叉频数。程序和输出汇总报表形式如下所示: Proc tabulate Data=ABCX ; Class A ; Var X ; Table A ; Run ; A A1A2 NN 66 例 2:使用逗号操作符隔开 TABLE 语句的两个表达式将产生一个两维表格,第一个表 达式定义行,第二个表达式定义列。程序和输出汇总报表形式如下所示: Proc tabulate Data=ABCX ; Class A B; Var X ; Table A , B ; Run ; B B1B2 NN A A1 33 A233 例 3:使用两个逗号操作符隔开 TABLE 语句的三个表达式将产生
39、一个三维表格,第一 个表达式定义页,第二个表达式定义行,第三个表达式定义列。程序和输出汇总报表形式如 下所示: Proc tabulate Data=ABCX ; Class A B C; Var X ; Table A , B , C ; Run ; 第一页 A A1 C C1C2C3 NNN B B1 111 B2111 第二页 A A2 C C1C2C3 NNN B B1 111 B2111 例 4:使用空格操作符隔开 TABLE 语句的两个表达式将产生一个连排表格。程序和输 出汇总报表形式如下所示: Proc tabulate Data=ABCX ; Class A B ; Var X
40、 ; Table A B ; Run ; AB A1A2B1B2 NNNN 6666 例 5:使用星号操作符隔开 TABLE 语句的两个表达式将产生一个交叉等级表格。程序 和输出汇总报表形式如下所示: Proc tabulate Data=ABCX ; Class A B ; Var X ; Table A *B ; Run ; A A1A2 BB B1B2B1B2 NNNN 3333 例 6:使用含有圆括号、空格和星号操作符的复合表达式。在复合表达式中,交叉操作 符星号优于连接操作符空格,但可以使用圆括号操作符来改变它们的次序,如(A B)*C 表 达式相当于 A*C B*C。程序和输出汇总
41、报表形式如下所示: Proc tabulate Data=ABCX ; Class A B C ; Var X ; Table (A B)*C ; Run ; AB A1A2B1B2 CCCC C1C2C3C1C2C3C1C2C3C1C2C3 NNNNNNNNNNNN 222222222222 5. 汇总报告中计算统计量汇总报告中计算统计量 在 TABLE 语句中使用星号操作符连接分析变量和统计量,如 TABLE A*X*MEAN, 其中 A 是分类变量,X 是分析变量,MEAN 是统计量,则可以对指定的分析变量 X 计算指 定 MEAN 统计量。在 TABLE 语句中如果没有规定分析变量,则
42、 N 或 PCTN(频数 N 的百 分数)可作为统计量使用,如 TABLE A*N 或 TABLE A*PCTN。如果 TABLE 语句中规 定了分析变量,但没有指定统计量时,如 TABLE A*X,则 SUM 作为统计量。如果 TABLE 语句中既没有出现分析变量如 X,又没有出现统计量如 MEAN,例如上面的例 16 中的 TABLE 语句都没有规定分析变量和统计量,如 TABLE A 语句只规定了分类变量 A,则每个表单元将给出分类变量的交叉频数。 在 TABLE 语句中如果规定了分析变量,则可以要求计算下表所示的一个或几个统计量。 统计量作用 N确定的子组中含有有效数据的观测数 NMI
43、SS确定的子组中含有缺失值的观测数 MEAN算术平均 STD标准误差 MIN最小值 MAX最大值 RANGE极差(取值范围) SUM总和 USS未修正的平方和 CSS关于均值修正的平方和(也称偏差平方和) STDERR均值的标准误差 CV变异系数 T检验总体均值为 0 假设时,t 统计量的值 PRT显著性概率(大于 t 统计量绝对值的概率) VAR方差 SUMWGT权数变量的和 PCTN某一类中某一小类观测所占的百分比 PCTSUM某一类观测在全部观测中所占的百分比 多个分析变量和多个统计量能够出现在同一维中,也可以出现在不同的维中。但是所有 的分析变量必须出现在某一维中,所有的统计量也一样必
44、须出现在同一维中。不能用一个分 析变量同另一个分析变量交叉,统计量之间也不能交叉。例如,下面两条语句都是合法的: TABLE A*(X*MEAN X*MAX) ,B TABLE A*X,B*MEAN C*MAX 另外,统计量操作元素除了可以是统计量关键字,如 MEAN 或 MAX,也可以是以下形 式的百分数表达式: TABLE A*B*PCTN TABLE A*B*PCTN 其中和是求频数百分数时设定的分母,两条语句所求出来的百分数显然是不 同的。分母为的语句比分母为的语句求出的百分数要大。 我们已经知道,在 TABLE 语句中分类变量都要事先在 CLASS 语句中定义过,但是有 一个特殊的分
45、类变量叫 ALL,也称全类变量。全类变量 ALL 可以直接用在 TABLE 语句中, 它仅有一个值,表示所有的子集和及总和,这是一个非常有用的类,常放在表格的最后一行 和最后一列计算总和的统计量。例如下面的语句: TABLE A*X*MEAN ALL*X*MEAN 6. 定义汇总报表的输出格式定义汇总报表的输出格式 汇总报表的输出除了要构造汇总报表结构和正确地进行描述统计计算外,还应满足用户 对输出报表的有关数据和标题的格式要求。有以下几种定义报表输出格式的方法: 当一个分类变量、分析变量或统计量用作操作元素时,可以跟随着等号和标签。例如, 假设原来的 TABLE 语句为: TABLE A*X
46、*MEAN 现在为了修改列标题改为: TABLE A=CLASS*X=QUANTITY*MEAN=AVERAGE 这样,输出的汇总报表中的列标题从原来的“A”变成“CLASS” , “X”变成 “QUANTITY” , “MEAN”变成“AVERAGE” 。 操作元素还可以进行格式说明,通过*号连接 FORMAT 或 F=输出格式名。例如: TABLE A=CLASS*f=12.2*X=QUANTITY*f=10.2*MEAN=AVERAGE*f=8. 要注意分类变量 A 这个元素后的输出格式是数字格式 f=12.2,而不是字符格式,因为它 说明的是交叉单元中 MEAN 计算的数字结果。实际上
47、起作用的是最后一个 f=8.的格式说明。 使用 KEYLABLE 和 LABEL 语句。KEYLABLE 语句用于对出现在页、行或列上的统 计量名字和 ALL 分类变量名字重新标记。LABEL 语句用于对出现在页、行或列上的分类变 量或分析变量规定标签。例如: KEYLABEL MEAN=AVERAGE ALL=TOTAL LABEL A=SEX X=AMOUNT 要注意 KEYLABLE 和 LABEL 语句中定义的标签,比在 TABLE 语句中变量后跟随着 等号和标签的定义方法优先级低。 使用 PROC FORMAT 过程和 FORMAT 语句。PROC FORMAT 过程用来对字符变量
48、或数值变量定义用户自己的输入输出格式。FORMAT 语句用于规定分类变量的输出格式。 两者的配合使用可以使分类变量按用户自定义格式输出。例如: PROC FORMAT; VALUE $SEXFMT A1=Female A2=Male; PROC TABULATE DATA=ABCX; FORMAT A $SEXFMT ; RUN ; $SEXFMT 是用户自定义的输出格式名,注意在使用时要在输出格式名后加一个小圆点。 当分类变量 A 定义为输出格式$SEXFMT.后,在输出的汇总报表中,分类变量 A 原先在行或 列标题上输出的是两个分类值 A1 和 A2,现在改为输出 Female 和 Mal
49、e。 使用 TABLE 语句中选项列表。如果规定任选项,第一项前必须加斜杆/。能够在 TABLE 语句中出现很多选项,下面我们列出一些常用的选项: MISSTEXT=文本字符文本字符报表输出时如果有缺失值,则用报表输出时如果有缺失值,则用文本字符文本字符替代。替代。 PRINTMISS要求输出所有可能的行和列,即使某个特殊的行和列交叉单元要求输出所有可能的行和列,即使某个特殊的行和列交叉单元 中数据不存在。中数据不存在。 FUZZ=数字数字提供一个数字,让分析变量的值和表单元中的计算结果与这个数提供一个数字,让分析变量的值和表单元中的计算结果与这个数 字比较,如果绝对值小于这个数字,看作字比较
50、,如果绝对值小于这个数字,看作 0 处理。处理。 RTS=数字数字提供一个整数,用来规定行标题输出时的左和右边界值。提供一个整数,用来规定行标题输出时的左和右边界值。 使用 PROC TABULATE 语句中的 FORMAT=输出格式名选项。对每一个报表单元规 定缺省的输出格式,如果没有规定此选项,缺省值是 BEST12.2。此选项主要用于减少报表 中输出数值的域宽。但是如果遇到在 TABLE 语句中规定有任何输出格式,它将被取代。 7. 汇总报表综合举例汇总报表综合举例 假设我们要输出一个数据集 SURVEY 的汇总报表。按性别 SEX 和全类 ALL 进行分类, 求平均年龄 AGE、最大的
51、身高 HEIGH、最小的重量 WEIGHT、平均收入 INCOME 和男女 人数的百分比 PCTN。修改大标题和增加一个小标题,并格式化输出表格的行列标记和单元 内容。程序如下: libname study d:sasdatamydir; proc format ; value $sexfmt F=female M=male ; picture pct low-0=000.00% (prefix=-) 0-high=000.00% ; proc tabulate data=study.survey formchar=|-|+|- format=8.2 ; class sex ; var age
52、 heigh weight income ; table (SEX ALL), (AGE*mean*f=7. heigh*MAX weight*MIN income*MEAN pctn*f=pct.) /rts=8 ; format sex $sexfmt. ; Keylabel MEAN=Average ALL=Total ; Label income=Salary ; Title1 How to use tabulate statement ; Title2 SUFE 2001 ; Run ; 程序运行结果如图 17.5 所示。 在调用汇总报表过程 PROC TABULATE 输出报表之前
53、,首先使用 PROC FORMAT 过程 定义了一个格式值$SEXFMT 和一个图示格式 PCT。定义的 PCT 是一种较常用的百分比格式, 其中 low-0 表示从最小值 LOW 到不包含 0 的值域,0-high 表示从 0 到最大值的值域,圆括 号中的选项 prefix=-表示放在该值第一个有效数位前面的一个字符词头(前缀)。其他还有 像 fill=*填充字符选项也较常用。 汇总报表过程 PROC TABULATE 中,规定分类变量为 SEX,分析变量为 age、heigh、weight 和 income。在 TABLE 语句中有二维,为清楚起见,一条语句按维定义 分二行书写,注意只有一
54、个分号(;) 。行维的表达式和列维表达式之间用逗号(, )分隔。 第十八课第十八课 调整分析变量 age、heigh、weight 和 income 的列宽, 既可以在 PROC TABULATE 语句的选项 中设置 format=8.2 进行统一调整,也可 以在 TABLE 语句中针对 AGE 变量用 f=7.进行调整。formchar=|-|+|-选项规 定输出表格的垂直和水平分隔线及 9 个 角的字符,/rts=8选项规定左右边界的距 图 17.5 数据集 SURVEY 的汇总报表 离,实际上调整了分类变量 SEX 列的宽 度,rts=8的值越大,SEX 列的宽度越小。 或者选择 Glo
55、balsOptionsGlobal options 命令,在 OPTIONS 对话框中修改 LINESIZE 参数的值。建立建立 SAS 系统的系统的 数据集数据集 (DATA STEP) 用户用 SAS 数据步(DATA STEP)创建一个数据集的方法,与前两种 SAS/ASSIST 和 SAS/FSP 创建一个数据集的方法相比,DATA STEP 是一种非交互式的全部编程实现的方法。 这种方法能把多样的、复杂的外部文件数据格式通过程序语句的控制转换为我们所需的 SAS 数据集。 一一、 DATA 程程序序步步的的三三个个主主要要步步骤骤 为了从外部原始数据文件得到 SAS 数据集,DATA
56、 程序步的三个主要步骤为: 启动一个数据步,命名将要创建的数据集(使用启动一个数据步,命名将要创建的数据集(使用 DATA 语句)语句) 确定要读入的外部文件(使用确定要读入的外部文件(使用 INFILE 语句)语句) 描述如何读入每一条记录(使用描述如何读入每一条记录(使用 INPUT 语句)语句) 如果需要在程序中直接嵌入数据,第二步用 CARDS 语句代替 INFILE 语句。所对应的 一般程序结构如下: Data 所要创建的数据集名 ; Infile 读取的外部文件名 ; Input 变量 1 读入模式 变量 2 读入模式; Run ; 此程序结构很容易被错误理解为顺序结构,其实它的内
57、部执行结构是一种循环结构。如 图 8.6 所示是它执行过程的程序流程图。 PDV(Program Data Vector)称为程序数据向量,它是根据 DATA 步中的 INPUT 语句 所确定的变量和变量的读入模式来创建的,假设 INPUT 语句中各变量的长度为 name $1-8 、sex $1-2 、bdate 1-8 、age 1-3 、height 1-6、 weight 1-6 、income 1-8、 sdate 1-6 ,所创 建的一个 PDV 如下表: namesexbdateageheightweightincomesdate 82836686 整个 DATA 步程序执行过程
58、中,涉及到: 一个存放外部文件记录的输入缓冲区一个存放外部文件记录的输入缓冲区 一个存放当前观测的一个存放当前观测的 PDV 向量向量 一个外部文件记录指针一个外部文件记录指针 一个程序指针一个程序指针 一个一个 SAS 数据集观测指针数据集观测指针 如图 8.7 所示。 Y N 程序返回DATA步的顶部 退出DATA步循环,形成SAS数据集 开始下一个DATA步或PROC步 DATA开始,并确定创建数据集名 INPUT语句将文件下一条记录读入PDV 其它语句可以修改PDV中的内容 PDV中值在DATA步底部被写入数据集 INFILE语句确定外部原始文件 用INFILE所涉及到变量建立 PDV
59、,并初始化 外部文件下一条记录 是否为空? 图 8.6 执行 DATA 步时的内部循环过程 二二、 读读入入模模式式 确定变量的读入模式共有四种: column 模式模式 formatted 模式模式 list 模式模式 named 模式模式 我们在这里将介绍三种主要的 column 模式、formatted 模式和 list 模式。 1. Column 模式模式 Column 模式适用于读入数据固定在某些列中或数据中只包含标准的字符和数字。在 INPUT 语句中的一般使用形式如下: Input 变量 1 开始列 变量 2 ; 变量后不带$符号表示此变量读取数字。 例如,我们在 NOTEPAD
60、 记事本程序中输入如图 8.8 所示的内容,操作如下: 在在 Windows 桌面上的开始菜单中选择桌面上的开始菜单中选择 程序程序/附件附件/记事本记事本打开打开 NOTEPAD 程序方法程序方法 并以并以 Testdata.dat 文件名存入到文件名存入到 D:sasdatamydir 目录下,作为一个我们用来实目录下,作为一个我们用来实 验的外部文件验的外部文件 数据步 DATA 输入缓冲区 INFILE输出缓冲区 INPUT 外部数据文件 SAS数据集 123 234 RUN +111 PDV 123+111=234 图 8.7 文件记录指针、程序指针、观测指针 相应地,在 SAS 系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场销售总监合作协议6篇
- 12 做个小温室 教学设计-2023-2024学年科学二年级下册苏教版
- 2024-2025学年高中物理 第三章 相互作用 2 弹力教学设计 教科版必修第一册
- 课程汇报:汇报人
- 财务经理晋升述职报告
- 腹部增强CT的护理
- 薛建改生产运营管理
- 《减法》(教学设计)-2024-2025学年三年级上册数学人教版
- 七年级美术(浙美版)上册教学设计7.鸟语花香
- 4梅花魂 教学设计-2024-2025学年语文五年级下册统编版
- 锦屏二级水电站厂区枢纽工程测量方案
- 简约复古风夏洛蒂勃朗特《简爱》作品简介名著读后感PPT课件
- 新人教版七年级初一数学下册第一二单元测试卷
- 白内障手术操作规范及质量控制标准(2017版)
- 中国银行履约保函(中英文)
- 不锈钢储罐施工方案(2024043554)
- 《电子商务法律法规》课程标准
- 中国联通科技创新奖励办法
- 中药饮片储存与养护
- 【《项链》莫泊桑】《项链》课本剧剧本
- 唐长安城高官住宅分布变迁之初步研究
评论
0/150
提交评论