SAS编程基础讲义教程

上传人:cl****1 文档编号:568763726 上传时间:2024-07-26 格式:PPT 页数:132 大小:2.18MB
返回 下载 相关 举报
SAS编程基础讲义教程_第1页
第1页 / 共132页
SAS编程基础讲义教程_第2页
第2页 / 共132页
SAS编程基础讲义教程_第3页
第3页 / 共132页
SAS编程基础讲义教程_第4页
第4页 / 共132页
SAS编程基础讲义教程_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《SAS编程基础讲义教程》由会员分享,可在线阅读,更多相关《SAS编程基础讲义教程(132页珍藏版)》请在金锄头文库上搜索。

1、第第3章章 SAS编程基程基础本章内容提要本章内容提要3.1SAS语法基础3.2DATA步3.3PROC步3.4SAS语句编程练习例:Datasasuser.da1;inputname$X1X2X3;Y=X1+X2+X3;cards;M31.30.5M22.40.9F53.20.8M84.11.1F73.30.6;Procprintdata=sasuser.da1;run;SAS语言的基本单位是SAS语句,构成一个SAS语句由下面两种方式:一种是由关键词开始:每个SAS语句一般由一个关键字(如DATA、PROC、INPUT、CARDS、BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束

2、;关键词:用于句首,说明语句的类型和功能;SAS名:SAS语句中出现的SAS名有很多种类,如SAS数据集库名、数据集名、变量名等。一种是SAS的表达式:SAS数据步程序中的计算用表达式完成,可以对变量作变换和赋值,创建新变量,计算新数值以及控制条件语句的运行等。表达式是把常量、变量用运算符、函数、括号连接起来得到一个计算结果的算式。3.1.1 SAS常数常数SAS常数是SAS系统可以识别的一些固定值。包括数值常数、字符常数和日期时间常数。1.数值常数数值常数数值常数包括小数点、负号及科学计数法中的E记号等。例:1,5,1.23,1.2E232.字符常数字符常数字符常数是由引号括起来的1-200

3、个字符组成,如果字符常数本身带有引号,此时应再次用引号括起来。 例: name=TOM”S; name=”TOMS”; /*例中,两语句等价。*/3.1 SAS语法基础语法基础3.日期时间常数日期时间常数 表示日期(时间)的字符串(用单引号括起来)后跟一个表示日期的字母D/d或表示时间的字母T/t或表示日期时间的字母DT/dt,中间没有空格。例:1jan2000d;9:25t;18jan00:9:27:25dt。3.1.2 SAS变量变量1.数值型变量数值型变量日期、时间等变量存为数值型,数值型变量在数据集中的存储一般使用8个字符。2.字符型变量字符型变量字符型变量缺省的长度为8个字符,其后加

4、符号$,变量名与$之间可以相连也可以有一个空格。SAS中用一个小数点来表示缺失值。SAS操作符是一些符号,主要有算术操作符、比较操作符、逻辑操作符。1算术操作符(执行一种算术运算)+、-、*、/、*、|(字符串并接)2比较操作符(建立量变量之间的关系)LT、GT、EQ、LE、GE、NE、=、=、=3逻辑操作符(连接一系列比较式,常与if语句结合使用)AND、OR、NOT&、|、3.1.3 SAS操作符操作符3.1.4 SAS函数函数1.SAS函数定义和表示函数定义和表示SAS函数是SAS系统中编好的子程序,它对若干个变量进行计算后返回一个结果值。SAS提供了比一般程序设计语言多的标准函数,有数

5、学函数、字符串函数、分布函数、分位数函数、随机数函数、日期时间函数、财政金融函数等。SAS函数的形式:l函数名(X1,X2,):SUM(X1,X2,Y1,Y2)l函数名(OF变量1变量N):SUM(OFX1X2Y1Y2)l函数名(OF变量1变量N):SUM(OFX1-X20)注意:两种写法不能混写,如SUM(OFX1,X2,X3)和SUM(X1-X3)都是错误的。用函数可以简化程序用函数可以简化程序不使用SAS函数:total=xl+x2+x3+x4+x5+x6+x7+x8+x9+x10;iftotalythenleast=total;elseleast=y;使用SAS函数:leastmin(

6、sum(ofx1-x10),y).函数分类常用函数功能数学运算函数ABS()取绝对值SQRT()求平方根INT()取整数部分EXP()计数e的次幂LOG()求e为底的自然对数SIN()计算正弦LAGn()求给定变量滞后为n的值统计计算函数MAX()求最大值MIN()求最小值MEAN()求平均值SUM()求和DIFn()求给定变量X的第n阶差STD()求标准差PROBNORM()标准正态分布函数一些常见的一些常见的SAS函数:函数: 日期时间处理函数DATE()/TODAY()取当日的日期值DAY()计算某月的那一日HOUR()计算小时TIME()取当日的时间YEAR()取年值字符函数INDEX

7、()搜寻字符串的位置LEFT()字符串表达式左对齐SUBSTR()抽取子字符串TRIM()移走尾部空格LENGTH()给出字符变量的长度UPCASE()转换为大写财政金融函数COMPOUND()计算复利IRR()计算内部赢利率NPV()计算净现值概率函数:概率函数:lPROBNORM(X):标准正态分布函数,该函数计算服从标准正态分布的随机变量U小于给定X的概率;lPROBCHI(x,df,nc):卡方分布函数。该函数计算服从自由度为df,非中心参数为nc的分布的随机变量小于给定X的概率。如果nc没有规定或取为0,那么被计算的就是中心分布。注意,自由度df允许是非整数.lPROBF(x,ndf

8、,ddf,nc):F分布的分布函数,该函数计算服从分子自由度为ndf,分母自由度为ddf,非中心参数为nc的F分布的随机变量小于给定值X的概率。如果nc没有规定或取为0,那么被计算的就是中心F分布。注意:自由度允许是非整数。lPROBT(x,df,nc):该函数计算服从自由度为df,非中心参数为nc的T分布的随机变量小于给定X的概率。如果nc没有规定或取为0,那么被计算的就是中心T分布。注意:自由度df允许是非整数。lPROBBNML(p,n,m):其中0=p=1,0=m,这个函数给出参数为p和n的二项分布随机变量X=240thenn+1;elsedelete;Cards;8278699078

9、89798698765680727681697891927185;procprint;run;3.2.3 OUTPUT语句和语句和DELETE语句语句 、DROP、KEEP1.OUTPUT语句语句OUTPUT语句制定SAS系统输出当前的观测观测到指定的SAS数据集中。其一般格式是:output ;output后的括号中的数据集名是可选项。当没有该选项时,SAS系统把当前这个观测输出到DATA语句命名的所有数据集上,并返回到DATA步开始处理此后的语句。当有该选项时,SAS系统把当前这个观测输出到output语句规定的所有数据集上,并返回到DATA步开始接着处理此后的语句。这里数据集名可以多于一

10、个,但必须在DATA语句中已被命名。dataclass1class2;inputname$chinesemathsenglish;total=chinese+maths+english;iftotal=240thenoutputclass1;elseoutputclass2;cards;a827869b907889c798698;procprintdata=class1;title数据集class1;procprintdata=class2;title数据集class2;run;2.DELETE语句语句DELETE语句把符合条件的观测从正在创建的数据集中删去,并返回到DATA步开始处理其他观测

11、。如:Dataclass3;inputsex$chinesemathsenglish;Ifsex=“m”thendelete;cards;m827869f907889m798698;procprint;run; 3.DROP和和KEEP语句语句可以根据数据集的需要,选用和删除一些变量变量,此时可以使用这两个语句,格式为:DROPVARIABLES;KEEPVARIABLES;DROP=VARIABLES;KEEP=VARIABLES;由于DROP和KEEP语句的作用正好相反,使用DROP语句时也可以使用KEEP语句。实际中为了书写方便,在保留变量较少时,常用KEEP语句,而在删除变量较少时,使

12、用DROP语句。语句选项 注意:注意:n在KEEP语句和DROP语句中,不加“=”,而在数据集后使用KEEP选项或DROP选项是需加“=”;n变量之间用空格隔开;nKEEP语句和DROP语句对当前正在创建的所有数据及均起作用,而在数据集后使用KEEP选项或DROP选项仅对在他前面的数据集有效,对其他数据集不起作用。例:dataclass4;inputname$chinesemathsenglish;keepnametotal;total=chinese+maths+english;cards;a827869b907889c798698;与dataclass4(keep=nametotal或dr

13、op=chinesemathsenglish);inputname$chinesemathsenglish;total=chinese+maths+english;cards;a827869b907889c798698;结果是一样的3.2.4 WHERE语句语句lWHERE语句是一个条件语句,它可以从已存在已存在的SAS数据集中把满足条件的观测观测输出到新的SAS数据集中,它不能用在由CARDS语句构成的DATA步中,也不能从包含原始数据的外部文件中选择记录。l其一般格式是:WHERE where-expression;WHERE语句中的表达式where-expression是由一些列算符合操

14、作数组成的一个算术或逻辑表达式,如:wheretotal240;wherex;wheresex=“m”;wheretotalin(257263)l在执行WHERE表达式时,SAS系统首先对第一个观测计算,根据其取值决定是否执行WHERE后的其它SAS语句:如果表达式计算的结果为真则执行,如果为假,则不执行而返回到DATA开始继续处理第二个观测,直到所有观测都被处理完为止。l数值型变量的名字如“X”可以单独出现在WHERE表达式中,如果该变量值为0或缺省,则该表达式运算结果为假,否则为真。例:dataclass;inputsex$chinesemathsenglish;total=chinese

15、+maths+english;cards;m82.69f90089m798698;data class1;set class;where maths;run;procprintdata=class1;run;Between-And算符:算符:该算符选择变量值落在某个范围内的观测,范围的界限可以是常数或表达式,其一般格式为:WHERE VARIABLE BETWEEN VAULE AND VAULE;如wherescorebetween60and100Same And算符:算符:除满足已选的条件外,还满足and后的条件的观测。例3.9dataclass;inputsex$chinesemaths

16、english;total=chinese+maths+english;cards;m827869f907889m798698M808080;data class1; set class;wheretotal180;wheresameandtotal240;run;procprintdata=class1;run; SET语句:调用一个语句:调用一个SAS系统已存在的数据集系统已存在的数据集利用SET语句可以从一个已经存在的SAS数据集创建新的数据集,一般格式为:DATA new data-set-name;SET old data-set-name ;如:dataclass1;setclas

17、s;lSAS数据步的输出一般是数据集,除此之外,SAS也提供了一个PUT语句,该语句可以将输出结果显示在LOG窗口中。lPUT语句在关键字后面列出要输出的各项,每一项可以是变量名或字符串,各项之间用空格隔开。3.2.5 PUT语句语句例:data;X=0.5;Y=sin(x);PutSinefunctionvalueofxisy;run;Sinefunctionvalueof0.5is0.4794255386;l在PUT语句中使用“变量名=”来指定输出项可以显示带有变量名的输出结果,如可以把上面程序中的PUT语句改为:Putx=y=;X=0.5y=0.4794255386lPUT语句的输出结果

18、默认情况下被输出到日志窗口,但在PUT语句之前用FILE语句可以改变PUT语句的输出目的地。如在PUT语句之前用fileprint;可以把PUT语句输出到输出窗口;在file语句中指定一个包含文件名的字符串可以把PUT语句的输出转向到此文件中。3.2.6用在用在DATA步中的控制语句步中的控制语句 控制语句用来改变语句的运行顺序或对某些确定的观测跳过一些语句。1. IF语句语句(1)条件IF语句条件IF语句含有一个THEN子句,用来执行满足IF条件的那些观测。如果某个观测不满足IF条件,则THEN子句不被执行,此时可以使用ELSE语句来执行有关的运算。如果没有规定ELSE语句,则SAS系统执行

19、紧跟在IF后面的下一个语句。其一般格式是:IF condition THEN statement ;例3.5:dataclass1class2;inputname$chinesemathsenglish;total=chinese+maths+english;iftotal=240thenoutputclass1;elseoutputclass2;cards;a827869b907889c798698;procprintdata=class1;title数据集class1;procprintdata=class2;title数据集class2;run;例3.10:dataclass;input

20、sex$chinesemathsenglish;total=chinese+maths+english;ifsex=mtheniftotal=240thenoutput;elseputtotal2;run;procprintdata=whereab;run;dataa;inputxy;cards;115378590;datab;inputxz;cards;169289498;dataifab;mergeab;ifx2;run;procprintdata=whereab1;run;例3.11:使用WHERE语句的运行结果:Obsxyz1478982590.3Where语句先对数据使用where4

21、语句,然后再进行其他语句的5执行:6xyxz3784984590使用IF语句的运行结果:Obsxyz149098if语句先对数据进行合并,再执行if语句:xyz1156927889490982. SELECT语句语句SELECT语句可提供灵活的多分支语句,SELECT语句有两种基本的结构:(1)SELECT(选择表达式);(选择表达式); WHEN(值列表)(值列表) 语句;语句; WHEN(值列表)(值列表) 语句;语句; OTHERWISE 语句;语句; END;其中:l“选择表达式”是一个变量或者表达式;l“值列表”是一个与选择表达式相同取值类型的表达式或具体取值,可以有一项,也可以有多

22、项,多项之间用逗号隔开;l执行SELECT结构时,先计算出选择表达式和值列表中的所有值,然后把选择表达式值由前向后与值列表中的值相比,如相等则执行对应的语句,然后退出SELECT结构(不再查看后面的值列表)。如果选择表达式的值不等于任何值列表中的值则执行OTHERWISE对应的语句。 例:SELECT(month);WHEN(Feb,Mar,Apr)put春天;WHEN(May,Jun,Jul)put夏天;OTHERWISEput秋天或冬天;END;(2)SELECT; WHEN(条件)(条件) 语句;语句; WHEN(条件)(条件) 语句;语句; OTHERWISE 语句;语句; END;这

23、种SELECT语句没有“选择表达式”,而是在每一个WHEN语句指定一个条件(逻辑表达式),执行第一个满足条件的WHEN语句后的语句,如果所有的条件都不满足则执行OTHERWISE后的语句。 例:SELECT;WHEN(age7)put婴幼儿;WHEN(age18)put少年儿童;WHEN(age60)put中青年;OTHERWISEput老年;END;3. DO语句语句DO语句是一种循环语句,即在DO与END语句之间的这些语句被作为一个单元处理,称为DO组。常见DO语句有以下四种形式:简单DO语句、循环DO语句(计数)、DOWHILE语句(当型)、DOUNTIL语句(直到型)。(1)简单DO语

24、句(自身没有控制变量)简单DO语句常常用在IF-THEN-ELSE语句里,用来执行当IF条件成立时的一组语句,在IF条件不成立时,跳出这组语句去执行其它SAS语句。其一般格式是:DO; 其它其它SAS语句;语句; END;例3.12:dataclass;inputsex$chinesemathsenglish;ifsex=mthendo;total=chinese+maths+english;n+1;end;ave=sum(chinese,maths,english)/3;cards;m827869f907889m798698m765680f727681f697891m927185;procp

25、rint;run;(2)循环DO语句循环DO语句是指DO与END之间的语句被重复执行的语句,其一般格式为:DO index-variable = start ; 其它其它sas语句语句; end;其中:lindex-variable:控制(计数)变量,它的值控制着执行情况及执行次数;lStart为控制变量的初始值,当同to stop(结束值)或BYincrement(步长)一起使用时,程序先把控制变量赋值为初始值,如果此值小于等于结束值则执行循环体语句,然后把控制变量加上步长继续执行循环体,直到控制变量的值大于结束值为止。省略步长时默认为1。 例:data;doi=1to20by2;j=i*3

26、;fileprint;putij;end;run;1 1 3 27 5 125 7 343 9 729 11 1331 13 2197 15 3375 17 4913 19 6859 (3)DOWHILE语句该语句规定当WHILE后的表达式(其值是在每次循环开始前被计算)运行的结果为真时,重复地执行DO组中的语句。其一般格式为:DO WHILE(expression)。(4)DOUNTIL语句该语句规定直到UNTIL后的表达式运行的结果(其值是在每次循环结束后被计算)为真时,循环结束。其一般格式为:DO UNTIL(expression);); 例3.14:dataclass;inputsex

27、$chinesemathsenglish;doi=1to10by2while(nlt2);total=chinese+maths+english;n+1;end;ave=(chinese+maths+english)/3;cards;m827869f907889m798698m765680f727681f697891m927185;procprint;run; 例3.14:dataclass;inputsex$chinesemathsenglish;doi=1to10by2until(nlt2);total=chinese+maths+english;n+1;end;ave=(chinese+

28、maths+english)/3;cards;m827869f907889m798698m765680f727681f697891m927185;procprint;run;3.2.7 SET语句语句SET语句的用法:n调用一个已存在的SAS数据集(复制数据集); n对已存在的SAS数据集进行修改;n把几个已存在的SAS数据集连接成一个新的数据集。 1.调用一个调用一个SAS系统已存在的数据集系统已存在的数据集利用SET语句可以调用一个已经存在的SAS数据集,以便对数据进行其他处理。一般格式为:DATA new data-set-name;SET old data-set-name ;如:da

29、taclass1;setclass; 2.对已存在的对已存在的SAS数据集进行修改数据集进行修改利用SET语句可以从一个已经存在的SAS数据集创建新的数据集,一般格式为:DATA new data-set-name;SET old data-set-name ;SET后的选择项有两种情况:一是利用KEEP、DROP选项或语句生成部分变量的子集;二是利用WHERE、IF、SELECT语句生成部分观测子集。Data class1;Setsasuser.class(drop=namesex);run;Data class1;Setsasuser.class;Total=chinese+maths+e

30、nglish;Iftotal=270thenoutput;run;Data class1 class2;Setsasuser.class;Select(sex);when(男)outputclass1;when(女)outputclass2;End;Dropsex;run; 3.数据集的纵向合并数据集的纵向合并(1)相同变量顺序连接此种方式下,各SAS数据集含有相同的变量,SET语句将各数据集按照顺序把所有观测连接在一起,即使两个观测完全相同也应按顺序连接起来,新数据集的观测数目是所有这些数据集观测数目之和。dataclasses;setclass1class2class3class4;run

31、;例3.15:dataA;inputname$sex$;cards;rosefdavidmjohnmmayersf;dataB;inputname$computerphysicalmathsenglish;cards;rose89657687david78867898john90657687mayers89(2)不同变量顺序连接。连接的几个数据集含有不同的变量,将具有相同变量的观测连接起来,而没有变量取值的观测为缺失值。连接后的变量个数为所有数据集变量数之和。677880;dataC;inputsex$totalave;cards;f31779.25m34085m31879.5f31478.5

32、;dataABC;setABC;run;procprint;run;(3)按同一变量顺序连接。首先按共同变量排序,连接后所形成的新数据集,首先读入第一个数据集中第一个BY组中的观测,然后读入第二个数据集中相同BY组中的观测,以此类推,知道读完所有BY组中的观测。 dataA;inputname$sex$;cards;rosefdavidmjohnmmayersf;dataB;inputname$computerphysicalmathsenglish;cards;rose89657687david78867898john90657687mayers89677880;dataC;inputsex

33、$totalave;cards;f31779.25m34085m31879.5f31478.5;dataABC;setABC;run;procprint;run;dataA;setA;run;procsort;bysex;run;dataC;setC;run;procsort;bysex;run;dataAC;setAC;bysex;run;procprint;run;3.2.8MERGE语句(数据集的横向合并)语句(数据集的横向合并)MERGE语句把两个或两个以上的SAS数据集的变量合并为一个新的SAS数据集的变量。其一般格式为:MERGE data-set-name-1 data-set-

34、name-2 data-set-name-n;1.一对一合并。其合并过程为:按MERGE语句后面数据集的排列顺序,把第一个数据集中的第一个观测与第二个数据集中的第一个观测,,第N个数据集中的第一个观测合并成新数据集中的第一个观测以此类推,直到所有观测被合并为止。合并时,以下几点需要注意:合并时,以下几点需要注意:l合并后新数据集的观测总数为参加合并的数据集中观测的最大值。l在合并时,如果某数据集没有某一个或几个观测,则其对应的变量值以缺失值代替。l在合并时,如果某几个数据集有共同变量,则合并后的新数据集仅含有一个该变量,其对应的值为列在MERGE语句最后一个含有该变量的数据集中的该变量观测值。

35、dataA;inputname$sex$;cards;rosefdavidmjohnmmayersf;dataB;inputname$computerphysicalmathsenglish;cards;rose89657687david78867898john90657687mayers89677880;dataC;inputsex$totalave;cards;f31779.25m34085m31879.5f31478.5;dataABC;MERGEABC;run;procprint;run;2.匹配合并。每一个数据集至少有一个共同变量,且首先按共同变量进行排序,此共同变量称为匹配变量,通

36、过BY组排序后形成的每一个组称为BY组,匹配合并实际上就是BY组之间的一对一合并。合并时,以下几点需要注意:合并时,以下几点需要注意:l对每一个BY组,新数据集中的BY组的观测个数是各合并数据集中相应BY组观测数的最大值;l对不同的BY组,SAS系统首先处理那些BY值较小的观测,然后再处理BY值较大的观测;l在同一BY组中,按MERGE语句后面数据集的排列顺序,把各数据集对应BY组的第一个观测进行合并,形成新数据集中的第一个观测,以此类推没直到所有观测被合并为止。如果某一数据集在某一BY组中没有观测,则按缺省值处理。例3.16:dataA;inputname$sex$;cards;benjim

37、mrosefdavidmjohnmmayersfmayersm;procsort;byname;run;dataB;inputname$compphysmateng;cards;rose89657687david78867898david87697790john90657687mayers89677880star66817594;procsort;byname;run;dataAB;mergeAB;byname;run;procprint;run;排序的结果排序的结果NAMECOMPPHYSMATENGdavid78867898david87697790john90657687mayers89

38、677880rose89657687star66817594NAMESEXbenjimmdavidmjohnmmayersfmayersmrosef内容回顾内容回顾DATA步PROC步DATAscore;inputname$sex$mathchineseenglish;total=chinese+maths+english;cards;王华F929886金一M899693赵磊M869088.;PROCprintdada=score;run;DATA步PROC步n从原始数据创建SAS数据集:DATA、INPUT、CARDS、“;”;n定义变量属性:LABEL、FORMAT;n调用已有的数据集:S

39、ET;n选择一部分观测创建新的SAS数据集:IFOUTPUT、IFDELETE、WHERE;n选择一部分变量创建新的SAS数据集:KEEP、DROP;n控制语句:IFTHEN、SELECT、DO;n数据集的纵向合并:SET;n数据集的横向合并:MERGE;n赋值语句与累加语句:表达式。pPROC步是用PROC开始的SAS语句,是SAS系统进行处理和分析数据的语句。pPROC步的一般格式为: PROC proc-name ; 过程语句过程语句 ; 过程语句过程语句 ; RUN;3.3 PROC步步3.3.1 SAS过程步中的常用语句过程步中的常用语句1.PROC语句语句p该语句指定要进行的分析方

40、法。p其一般格式为:PROC proc-name ;其中:nproc-name表示用户要调用的SAS过程名:对数据集做某种变换的过程名,如SORT过程等;所要进行的统计分析方法,如MEANS过程、REG过程等。noptions规定此过程的一个或几个选项,多个选项用空格隔开。例:Procmeansdata=myclass.score18maxdec=3summeanrange;表示系统调用均值过程,并计算数据集score18中各数值变量的和、均值和极差,并保留3位有效小数。2. 其它过程语句其它过程语句在PROC语句之后、结束语句之前可以有若干个可选的过程语句,用来对PROC语句进行具体设置,主

41、要有:nVAR语句:指定分析变量;nWHERE语句:指定待分析的观测子集;nBY语句和CLASS语句:指定分组变量;nID语句:指定标识变量;nWEIGHT语句和FREQ语句:指定权重变量和频数变量;nMODEL语句:指定模型形式;nLABEL语句和FORMAT语句:指定变量标签和输出格式;nOUTPUT语句:指定输出结果存放的数据集及输出结果形式。(1) VAR语句语句p该语句用来指定分析变量,在VAR后面给出变量列表,各变量名之间用空格隔开。p其一般格式为:VAR variable-name-1 variable-name-n ;例:Varweightheight;Varx1-x5y;(2

42、) WHERE语句语句p该语句可以选择数据集的一个观测子集来进行分析。p一般格式为:WHERE expression;例:wheremath=60andchinese=60;(3) BY语句和语句和CLASS语句语句pBY语句用来指定一个或几个分组变量,根据这些分组变量值的不同将观测分组,然后对每一组观测分别进行本过程进行的分析。!SAS系统要求首先应按分组变量进行排序。p其一般格式为:BY variable-name-1 variable-name-n;例:假定数据集myclass.score18已按变量sex排序,则程序Procprintdata=myclass.score18;bysex

43、;run;将产生男、女生分开输出的两个数据集列表。pClass语句同样表示按指定的变量进行分类。与BY语句不同,使用CLASS语句进行分类分析,分类变量不需要事先进行排序。p其一般格式为:CLASS variable-name-1 variable-name-n ;p当BY语句和CLASS语句同时使用时,系统首先按BY变量进行分组,然后再在每一组中按CLASS变量进行分组。pBY语句和CLASS语句输出结果有差异。例:Procprintdata=myclass.score18;classsex;run;(4) ID语句语句p该语句表示用指定的变量来标识观测。在输出窗口中,系统默认用观测的序号来

44、区分观测,当使用ID语句时,输出的观测用ID变量的值来识别,而观测的序号则不输出。!ID变量值与观测应一一对应。p其一般格式为:ID variable-name;(5) WEIGHT语句和语句和FREQ语句语句pWEIGHT语句用来指定权数变量,可以用权数变量对其它变量进行加权,通常用在每个观测的重要性不同的情形下。该变量值应大于0,小于0或缺省时,则取值为0。p其一般格式为:WEIGHT variable-name;pFREQ语句用来指定各观测出现的频数或次数。若变量的值1或缺省,相应的观测不参加计算统计量;若取值不是正整数,则取整数部分。p其一般格式为:FREQ variable-name

45、;pWEIGHT语句与FREQ语句之间的区别:n两者表示的观测次数不同;n两者计算结果可能不同。(6) MODEL语句语句p该语句在统计建模过程中指定模型的形式,等号左边的变量为因变量,等号右边的变量为自变量。p其一般格式为:MODEL dependent-variables-name=independent-variables-name ;例:modely=x1-x5;y1y2=x1x2x3x4x5;(7) LABEL语句和语句和FORMATpLABEL语句为变量指定一个临时标签,FORMAT语句为变量输出规定一个输出格式。p过程步中规定标签和输出格式只用于此过程的本次运行,而数据步中的标签

46、和输出格式是附属于数据集本身的,是永久的。procprintdata=myclass.score18label;idname;varmathchinese;labelname=姓名math=数学成绩chinese=语文成绩;formatmath5.1chinese5.1;run;(8) OUTPUT语句语句p该语句用来指定输出结果存放的数据集名以及输出内容在新数据集中的名称。p其一般格式为:OUTPUT out=data-set-name keywords= variable-name;其中:n“out=”给出输出结果数据集的名字;n“keyword=variable-name”指定输出哪些结

47、果及其在输出数据集中的名字。procmeansdata=myclass.score18;varmath;outputout=resultn=nmean=meanmathvar=varmath;run;procprintdata=result;run;3.3.2. 几个常用的几个常用的SAS过程过程1. SORT(排序)过程(排序)过程pSORT过程将SAS数据集按一个或几个变量的次序进行排序。p其一般格式为: PROC SORT ; BY variable-1 variable-n;其中,n指定进行排序的数据集和输出的数据集的名字:DATA=data-set-name;OUT=data-set

48、-name。nBY语句指定排序变量:可同时指定多个排序变量;关键词descending。例:对数据集myclass.score18中的数据,先按性别升序排序,再按级降序排序。Procsortdata=myclass.score18out=paixu;Bysexdescendinggrade;Run;Procprint;Run;是否可替换为class?2. PRINT(打印)过程(打印)过程p该过程用于输出SAS数据集中的内容,以便于检查数据输入是否正确。p其一般格式为: PROC PRINT ; VAR语句语句; WHERE语句;语句; ID语句语句; LABEL语句和语句和FORMAT语句;

49、语句; BY语句语句/CLASS语句语句; PAGEBY语句语句; SUM语句语句 ; TITLE语句和语句和FOOTNOTE语句;语句; (1) PROC PRINT ;p该语句是PRINT过程唯一必需的,options选项有:nDATA=data-set-name:指定所要打印的数据集,如省略则打印最新生成的SAS数据集;nN:要求在输出这个数据集的数据列表之后同时输出观测的个数。如果使用BY语句,在每个BY组的数据输出之后同时输出该BY组的观测个数;nNOOBS:不输出观测数据的序号。(2) VAR语句:语句:指定输出列表中的变量及其顺序;(3) WHERE语句:语句:只输出满足条件的观

50、测;(3) ID语句:语句:指定输出列表中的标识变量;(4) LABEL语句和语句和FORMAT语句:语句:指定输出变量的标签和格式;(5) BY语语句句/CLASS语语句句:指定分类变量,打印输出时按分类变量的取值不同分组显示。procsortdata=myclass.score18;bysex;run;procprintnnoobs;bysex;run;(6) PAGEBY语句语句:PAGEBY variable;p该语句指定分页变量,打印输出时如果分页变量的取值发生变化则在新的一页上输出。!使用pageby变量必须同时使用sort过程,并且pageby变量与sort过程中的by变量和pr

51、int过程中的by变量一致。datasample;inputxyz;Cards;111123178954342455667143562;procsort;byx;run;procprint;byx;pagebyx;run;(7) SUM语句:语句:SUM variables; p该语句用来指定一个或多个求和变量。当同时使用BY语句时,求和过程同时计算每组合计和总和。datasample;inputxyz;Cards;111123178954342455667143562;procsort;byx;run;procprint;byx;sumyz;run;(8) TITLE语句和语句和FOOTNO

52、TE语句:语句:TITLE 标题内容标题内容或或FOOTNOTE 脚注内容脚注内容 p该语句用来指定输出结果的标题和脚注,它们均为全程语句:n可以用在DATA步和PROC步内,也可以单独使用;n具有持续性,用没有内容的空title/footnote语句取消指定的标题或脚注;procprintdata=myclass.score18;title10级1班学生期末成绩表;footnote2012年3月29日;run;(9) 对输出结果的管理对输出结果的管理 pRESULT(结果管理窗口):可调用“view-result”打开;pHTML格式输出:调用“tools-opitions-preferen

53、ces”菜单。3.TRANSPOSE(转置)过程(转置)过程pTRANSPOSE过程把原SAS数据集行列互换,转置为一个新的SAS数据集。p其一般格式为: PROC TRANSPOSE ; VAR 语句语句; ID 语句语句; BY语句语句; COPY 语句语句; p PROC语句中语句中的内容:nDATA=data-set-name;nOUT=data-set-name;nPREFIX=name;nNAME=name。p VAR语句语句指定转置变量。pID语句语句指定输入数据集中的一个变量为输出数据集中观测的标识变量。p BY语句语句指定转置的分组变量,分组变量取不同值的数据作为一组进行转置

54、,但BY变量本身并不参加转置。pCOPY语句语句中列出的所有变量直接输出,不被转置。 DataA;Inputname$20.state$goods$employsaleprofit;cards;ThomsonFranceElectron100119172441FarmlandIndustriesU.S.Food1147233255ChryslerU.S.Mobiles128436002551VolkswagenGermanyMobiles252463121232NissanMotorJapanMobiles14353760805BordenU.S.Food3967006310MazdaMoto

55、rJapanMobiles33202794541WestinghouseU.S.Electron102115643260AmeradaHessU.S.Oil1058522680PeugeotFranceMobiles14425670258;Procsortout=sortA;bystate;run;Proctransposeout=transA;Varstategoodsemploysaleprofit;Idname;Bystate;run;Procprint;Run;4. MEANS(均值)过程(均值)过程 pMEANS过程用于计算变量的基本描述统计量,可对均值进行假设检验,也可建立包含若干

56、统计量的SAS数据集。p其一般格式为:PROC MEANS ; VAR语句语句; BY语句语句/CLASS语句语句; FREQ语句语句/ WEIGHT语句语句; ID语句语句; OUTPUT语句;语句;PROC MEANS语句语句PROC MEANS ; pOptions包括的内容:nDATA=data-set-name;nNOPRINT或PRINT;nMAXDEC=number;nALPHA=VALUE;数据分布的特征数据分布的特征集中趋势集中趋势 (位置位置)偏态和峰态偏态和峰态(形状)(形状)离中趋势离中趋势 (分散程度分散程度)pstatistic-keywords包括的描述统计量:N

57、:观测数;NMISS:缺失观测数;SUM:变量值和;USS:未修正平方和;CSS:修正平方和;SUMWGT:变量值加权和;MEAN:均值;STD:标准差;MIN:最小值;MAX:最大值;RANGE:全距;VAR:方差;CV:变异系数;SKEWNESS:偏态系数;KURTOSIS:峰度系数;T:t统计量值;PRT:P值;CLM:均值的置信区间,其中LCLM为置信下限、UCLM为置信上限。集中趋势分布形态离中趋势T检验例:为了了解某地区居民家庭收入状况,现从这一地区家庭中随机抽查了100户居民,调查其家庭人均收入,调查结果如下(单位:百元):2713962873994662692953304253

58、2422811322617632023040448712774234523164336343330436141388293464200392265403259426262221355324374347261287113135291176342443239302483231292373346293236223371287400314468337308359352273267277184286214351270330238248419330319440427314414299265318415372238323412493286313412试根据以上数据计算:(1)这100户家庭的平均人均收入,并

59、据此推断该地区人均收入水平的置信区间;(2)这100户家庭的人均收入的离散程度;(3)这100户家庭人均收入的分布形状。dataincomes;inputincome;cards;271396287399466269295330425324228113226176320230404487127742345231643363433304361413882934642003922654032594262622213553243743472612871131352911763424432393024832312923733462932362233712874003144683373083593522

60、73267277184286214351270330238248419330319440427314414299265318415372238323412493286313412;procmeansdata=incomesmeanclmvarstdcvskewnesskurtosisalpha=0.1maxdec=2;varincome;run;DATA步PROC步n指定分析变量:VAR;n选择观测子集;WHERE;n指定分组变量:BY、CLASS;n指定标识变量:ID;n指定权数或频数;WEIGHT、FREQ;n指定模型的形式:MODEL;n指定变量标签和输出格式:LABEL、FORMAT;

61、n指定输出结果数据集及其变量名:OUTPUT;n指定标题和脚注内容:TITLE、FOOTNOTE;nPROC语句:SORT、PRINT、TRANSPOSE、MEANS总总 结结练练 习习根据下列来自某房地产公司的数据,共有房屋类型、建筑面积、卧室个数、浴室个数和房屋售价等5个变量,要求按房屋类型和每一房屋类型下卧室个数的多少计算其平均售价。RANCH 1250 2 1.0 64000 SPLIT 1190 1 1.0 65850 CONDO 1400 2 1.5 80050TWOSTORY 1810 4 3.0 107250RANCH 1500 3 3.0 86650SPLIT 1615 4

62、3.0 94450SPLIT 1305 3 1.5 73650CONDO 1390 3 2.5 79350TWOSTORY 1040 2 1.0 55850CONDO 2105 4 2.5 127150RANCH 1535 3 3.0 89100TWOSTORY 1240 2 1.0 69250RANCH 720 1 1.0 34550 TWOSTORY 1745 4 2.5 102950CONDO 1860 2 2.0 110700data house;input STYLE$ SQFEET BEDROOMS BATHS PRICE;cards;RANCH 1250 2 1.0 64000

63、SPLIT 1190 1 1.0 65850 CONDO 1400 2 1.5 80050TWOSTORY 1810 4 3.0 107250RANCH 1500 3 3.0 86650SPLIT 1615 4 3.0 94450SPLIT 1305 3 1.5 73650CONDO 1390 3 2.5 79350TWOSTORY 1040 2 1.0 55850CONDO 2105 4 2.5 127150RANCH 1535 3 3.0 89100TWOSTORY 1240 2 1.0 69250 RANCH 720 1 1.0 34550 TWOSTORY 1745 4 2.5 102

64、950CONDO 1860 2 2.0 110700;proc sort;by proc sort;by stylestyle;run;run;proc means proc means meanmean; ;var var priceprice; ;class class stylestyle;run;run;proc sort;proc sort;by by style bedrooms;style bedrooms; run; run;proc means proc means mean;mean;var var priceprice; class ; class style bedrooms;style bedrooms;run;练习练习1、P31例2.1;2、P34例2.2;3、P56例3.5;4、P59例3.7;5、P62例3.9;6、P63例3.10;7、P66例3.12;8、P69例3.14;9、P73例3.15;10、P77例3.16;11、P86例3.20。作业作业1、P43实验2.1;2、P46习题2.2、2.3;3、P92实验3.1.2、3.2.2;4、P92实验3.1.3;5、P94习题3.1、3.3、3.6、3.7。结结 束束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号