第04章 SAS过程步与过程步语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章SAS过程步与过程步语句
摘要:本章讲授过程步一般形式,SAS过程步的常用语句,程序设计中通用的SAS语句,学习过程步常用有关语句功能及其用法。
为后面统计分析过程的调用作好准备。
SAS过程步用来调用系统提供的标准常用过程或统计分析过程,对指定的SAS 数据集进行处理,并将分析结果显示输出到OUTPUT窗口。
一个过程步是一个功能程序模块,调用不同的过程可实现用不同方法对数据进行分析。
§4.1 SAS过程步的一般形式
通常,SAS过程步的一般形式为:
PROC 过程名选择项;
[其他相关过程步语句;]
RUN;
说明:
1.PROC表示一个过程的开始;“过程名”可以是后面各章节将要介绍的常用过程名或统计过程名。
不同的过程有不同的专用SAS名,而且各有一些可供选择的选择项(参数),对于同一过程,给定不同的参数,输出不同的计算结果和不同表格形式。
2.选项:选择项一般以关键字为核心构成,常用下面三种形式:
①关键字在过程中,一个关键字代表该过程的某一特性,若关键字作为选项出现,则过程处理数据或输出结果时,这一特性予以考虑。
否则,忽略这一特性。
②关键字=值过程的某一特性可取不同的值,则指定该特性的书写格式为:
特性关键字=特性值(数字或字符串)。
③关键字=SAS数据集有些过程需要特定的输入数据集,有些过程可以建立一些特殊的数据集。
过程指定特别输入输出数据集的选项书写格式为:
关键字=数据集名
该形式规定输入或输出的数据集,最常用的是DATA=数据集,指出本过程要处理的数据集名称,若缺省,则使用最新建立的数据集。
如“PROC PRINT DATA=new;”。
3.其他相关过程步语句:有VAR、ID、BY、CLASS、WEIGHT等过程步语句,将在下一节中讲述。
4.RUN的作用是通知系统开始执行本过程程序段,当一个程序文件中有几个过程时,它们可共用一个RUN语句。
5.常用的过程步名称及功能:
SAS程序中涉及的过程多达数百种,实现统计功能时常用的过程也有数十种之多,现将最为常用的过程名称及其所能实现的功能列入下表(表4.1),以便各位提前热热身。
表4.1 常用的过程名称及其功能
§4.2 常用过程步语句
本节介绍的语句是为某些过程进一步提供数据处理信息的,对一个特定的语句,可能有些过程需要它,而有些过程中不能出现,在有关的过程章节中予以说明。
一、VAR语句
1.功能:用于列出将参与运算处理的分析变量,各变量名间以空格分隔。
若省略VAR语句,则所有的数值型变量都参与处理。
2.格式:VAR 变量表;
其中,变量是一个数据集变量,变量表是是用空格分隔的输入数据集中的一些变量名,出现在变量表中的数据集变量参与过程的数据分析处理,而未出现的变量
将不参与运算。
例如:
DATA new;
INPUT x y@@;
CARDS;
10 20 11 12 PROC MEANS;
VAR y; RUN; 输出结果:
Analysis Variable : y
N Mean Std Dev Minimum Maximum 2 16.000000 5.6568542 12.00000 20.0000000
二、ID语句
1.功能:指定用于区分不同观测的变量。
2.格式:ID 变量;
其中,变量是一个数据集变量,通常称为“标识变量”,不同的观测中该变量的值不同,某些过程的输出结果与观测有关,ID语句指定的变量值用于区分不同观测;如果ID语句省略,则用观测的序号来区分不同的观测。
例如:data;
input name$ sex$ age;
cards;
aa f 34
ab f 25
ba m 56
bb m 21
proc print;
id name;
run;
三、BY语句
1.功能:过程步将数据集数据按指定的变量以升序进行分组处理。
2.格式:BY 变量表;
例如:将学生的成绩输入,作为一个数据集,再用班级进行分组。
data student;
input bj$ xm$ yy gs;
p=yy+gs;
cards;
1 aaa 89 91
2 bbb 70 88
1 ccc 90 92
2 ddd 70 87
2 eee 85 83
proc print;
proc sort;
by bj gs;
proc print;
run;
四、CLASS语句
1.功能:指定分类变量。
在一些分组统计过程中,要对数据进行分类处理,用该语句给出分类的依据变量名,进行各种组合处理。
2.格式:CLASS 变量表;
CLASS语句的作用类似于BY语句,但BY语句要求先排序,另外二者之间的输出格式也不同。
五、FREQ语句
1.功能:指定一个数值变量,它的值表示工作数据集中观察值重复出现的频数。
若此变量不是一个整数,SAS会截去小数部分,只取其整数部分。
该变量通常称作频数变量,该语句也叫频数变量标识语句。
2.格式:FREQ 变量;
在某些试验中,同一观测值多次出现,这样在数据集中增加1个变量,用来记录每一观测出现的次数。
用FREQ语句可减少数据输入,加快计算。
例如:
DATA height;
INPUT height number@@;
CARDS;
75 20 76 23 77 28 78 38 79 52
80 40 81 32 83 28 84 23 85 16
PROC MEANS;
VAR height;
FREQ number;
RUN;
六、WEIGHT语句
1.功能:在有些试验中的某一变量(列)的值表示所在观测(行)的相关权重,该变量必须用WEIGHT语句来说明。
2.格式:WEIGHT 变量;
在此语句中只能定义一个加权变量,并以它的值作为观察值的权值。
本语句也
叫作权重变量标识语句。
如:对7个学生的4门课程成绩进行综合评估,不同课程权重不同,可用下列程序段实现:
DATA student;
INPUT curr$ x1-x7 wgt;
CARDS;
English 75 60 76 73 77 68 78 0.15 Chinese 80 70 81 82 83 78 84 0.35 Math 66 88 67 77 59 57 92 0.30 Agronomy 87 85 97 68 68 75 81 0.20 PROC MEANS MEAN STD;
VAR x1-x7;
WEIGHT wgt;
RUN; 输出结果:
Variable Mean Std Dev X1 76.4500000 4.4627159 X2 76.9000000 6.0440053 X3 79.2500000 6.0741940 X4 76.3500000 2.9959695 X5 71.9000000 5.7732140 X6 69.6000000 5.1166395 X7 84.9000000 2.9206164
七、MODE语句
1.功能:为一些统计分析过程指定所要进行分析的模型形式,及给出模型包含的自变量和因变量的个数以及变量名。
由于各种统计模型的差别,将在有关的章节进行。
2.格式:MODE 因变量表=自变量表选项;
其中因变量表中的变量个数等于要进行分析的模型个数。
自变量表给出模型包含的自变量名及其自变量的运算组合。
例如:
语句MODEL Y=X X*X;指出模型将包含自变量X的一次项和二次项。
语句MODEL Y=A B A*B;指出模型中将考滤因素A,因素B,以及A与B的交互作用。
八、OUTPUT语句
1.功能:用来将所在过程的结果输出到一个新的SAS数据集中。
输出数据集可作为下步处理的输入。
2.格式:OUTPUT OUT=数据集名 [统计关键字=变量名];
统计关键字指明在新的数据集中包含的统计量,变量名是给这些统计量所起的名字。
对多个变量进行分析时(VAR语句中有多个变量名),OUTPUT语句中统计关键字后所跟变量名需要根据VAR语句内所列变量的顺序,对应的一一列举,未列举者不予输出。
例如:
PROC UNIVARIATE;
VAR x y;
OUTPUT OUT=mydata MEAN=mx meany STD=stdx;
这里,mydata是指定的输出数据集,mx和meany分别为变量x和y的平均数,stdx是变量x的标准差。
不将y的标准差输出到mydata数据集中。
除上述介绍的过程步语句外,在过程步中还经常用到的语句有LABEL、QUIT 、LENGTH、FORMA T、INFORMA T、ATTRIB、WHERE等。
其基本语法格式、用法与数据步中的相应语句基本相同。
读者可以参考第3章的有关内容。
§4.3 通用的SAS语句
一、ENDSAS语句
1.功能:ENDSAS既可以作为命令在命令行输入,又可以作为一个语句写在SAS 程序里。
其功能是终止SAS程序执行且退出系统。
2.格式:ENDSAS;
二、RUN语句
1.功能:可使前面的过程被执行。
一般一个过程步的最后是一个RUN语句,也可几个过程步合用一个RUN语句。
2.格式:RUN;
三、OPTIONS语句
功能:用于改变SAS系统环境设置,环境设置的参数由语句中的选项给出。
可以用以下任一方法改变这些系统选项。
1.OPTIONS语句(SAS提供了20多个OPTION的选项。
)
一般形式为: OPTIONS 选项;
例如:options pagesize=20 linesize=76;
options number pageno=1;
OPTIONS语句可以出现在SAS程序的任意地方,从语句被执行的地方开始,设定的系统选项起作用,一直到你改变它的设置。
例如:options nonumber nodate;
proc print data=newa;
proc print data=newb;
options date;
run;
则在显示newa的时候页码和日期时间均不显示,而在显示newb的时候页码不显示但日期时间显示。
注意,SAS系统要遇到DATA、PROC或RUN等关键词的时候才执行会执行前面一个程序步,因此,OPTIONS语句要遇到其后的这些关键词时才会被执行,但它会在其所属的程序步中优先执行。
2.OPTIONS窗口
另一个改变系统选项的简单方法是进入OPTIONS窗口:
选择:Globals → Options → Global Options
找到想要设定的选项,作相应的改变即可。
四、TITLES语句(显示题注):
在SAS报表中,可以出现题注和尾注,题注出现在每一页的顶部,尾注出现在每一页的底部,如果没有定义,缺省的题注是“The SAS System”,尾注不定义就不出现。
可以改变输出报表中的题注,方法有:
1.TITLES窗口
选择 Globals → Options → Titles
进入TITLES窗口,在相应位置输入你希望作为题注的文字,
选择 Edit → End 退出即可。
SAS系统允许有10个题注。
2.TITLE语句
在产生报表的过程步中或之前用TITLE语句设定题注,其一般形式为:
TITLEn 题注;
例如:title1 '玉米杂交种的系统聚类分析';
title3 'group 1';
用TITLE语句同样可以设定10个题注。
五、FOOTNOTE语句(显示尾注)
还可以改变输出报表中的尾注,方法与改变题注的方法相似:1.FOOTNOTES窗口
选择 Globals → Options → Footnotes
进入FOOTNOTES窗口,在相应位置输入你希望作为尾注的文字,
选择 Edit → End
退出即可。
SAS系统允许有10个尾注。
2.FOOTNOOT语句
在产生报表的过程步中或之前用FOOTNOTE语句设定尾注,其一般形式为:
FOOTNOTEn 'footnote text';
例如:footnote1 '西北农林科技大学育种组';
footnote2 '二○○三年三月十八日';
用FOOTNOTE语句同样可以设定10个尾注。
3.变题注和尾注的设定
题注和尾注的设定都是全局性的,设定以后,它们的作用一直延续到你重新设定或退出SAS系统。
在设定了题注和尾注之后,你如果希望改变或取消这些设定的话,可用以下方法:
A.用TITLES 或FOOTNOTES窗口
进入TITLES 或FOOTNOTES窗口,改变或取消其中的设置。
B.用TITLE 或FOOTNOTE语句
用新的TITLE 或FOOTNOTE语句重新设定题注或尾注,新的设定会取代老的设定。
注意,新的TITLE 或FOOTNOTE语句被执行是,除了取代原先同样号码的题注或尾注之外,还会取消更大号码的题注或尾注。
用下列不加号码或不加文字的语句可取消所有的题注或尾注:
title1;
footnote;
六、FILENAME语句(P16)
1.功能:为外部文件定义一个逻辑名。
2.格式:FILENAME 逻辑名“文件名”;
例如:filename myfile “c:\01\student.sd2”
七、LIBNAME语句(P15)
3.功能:定义文件路径的逻辑名。
4.格式:LIBNAME 逻辑名文件路径;
例如:LIBNAME my “c:\01”
八、DM语句(P16)。