SAS编程技术全局通用语句课件(PPT 60页)_第1页
SAS编程技术全局通用语句课件(PPT 60页)_第2页
SAS编程技术全局通用语句课件(PPT 60页)_第3页
SAS编程技术全局通用语句课件(PPT 60页)_第4页
SAS编程技术全局通用语句课件(PPT 60页)_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章 全局通用语句清华大学经管学院 朱世武ZhushwResdat样本数据:SAS论坛: 第1页,共60页。 全局通用语句是可以用在任何地方的SAS语句。这些语句既可以用在数据步(DATA步),也可以用在过程步(PROC步),甚至还可以单独使用。 第2页,共60页。注释语句 注释语句可以放在SAS程序的任何地方作为程序的说明,或者介绍整个程序的步骤或算法等。第3页,共60页。语句格式格式一:* message;信息的长度可任意,但不能包含分号(;),最后的分号表示信息结束。 格式二:/*message*/中间的信息可以包含分号,但这种形式的注释不能嵌套。第4页,共60页。应用举例 例11.

2、1 注释语句应用。proc print data=ResDat.stk000002 (obs=10) noobs; /*输出前10个观测,不输出观测序号*/var oppr hipr lopr clpr;title股票行情;run;proc means data=ResDat.stk000002 ; *对数据集ResDat.stk000002使用means过程;var oppr hipr lopr clpr; /*输出变量oppr hipr lopr clpr的均值*/run;第5页,共60页。例11.2 标准SAS程序开头,记录SAS程序信息的注释形式。/*/ /* Begin Estima

3、tion for Grunfelds Investment Models */ /* See SAS/ETS Users Guide, Version 5 Edition, */ /* pages */ /*/ 第6页,共60页。X语句 运行SAS系统时,发布主机操作系统命令。语句格式:X ;其中:command规定主机操作系统的命令。例11.8 应用举例。x mkdir d:ResDat1;libname ResDat1 d:ResDat1;data ResDat1.class;set ResDat.class;run;例中,在SAS会话期间用主机操作系统命令创建一个目录D:ResDat_3

4、.注意:键入EXIT命令退出操作系统返回到SAS会话。第7页,共60页。TITLE语句 TITLE语句规定SAS输出文件和其它SAS输出标题。每一个TITLE语规定一级标题,最多可规定10级标题。语句格式:TITLE;其中: n紧跟在词TIILE后面(不能有空格)的数字,用来规定标题的级别; text规定标题的内容。规定标题的内容一直有效,但可以重新规定或取消。第8页,共60页。例11.9 只规定第1和第5级标题的内容时,中间标题为空白。title this is the 1th title line;title5 this is the 5th title line;例11.10 取消所有标

5、题内容。title; 例11.11 取消第3级及以后的所有标题内容。title3;第9页,共60页。FOOTNOTE语句 FOOTNOTE语句在每一页的底部输出一些脚注行。最多可产生10个脚注行。语句格式:FOOTNOTE;其中: n紧跟在词FOOTNOTE后面(不能有空格)的数字,用来规定脚注的行号; text规定脚注行的内容。规定的脚注行内容将输出在所有过程的输出页上,但可以重新规定或取消。第10页,共60页。例11.12 规定脚注。footnote 清华大学金融系;例11.13 取消所有已规定的脚注行。footnote;例11.14 取消第3个及以后的所有脚注行。footnote3; 第

6、11页,共60页。RUN语句 RUN语句使SAS程序被执行。语句格式:RUN ;其中:CANCEL让SAS系统结束当前步的执行。SAS将输出一个信息说明这一步没有执行。但CANECL选项不能阻止包含CARDS或CARDS4语句的DATA步执行。第12页,共60页。例11.15 不能省略RUN语句的情况。title using proc means;proc means data=ResDat.class min max;var age height weight;run; /*此RUN语不能省略省略RUN语句 */title using proc plot;proc plot data=Res

7、Dat.class;plot age*height;run;例中,第一个RUN语句在读第二个TITLE语之前执行PROC MEANS步。如果省略第一个RUN语,SAS系统在它读PROC PLOT语句之后执行PROC MEANS步。这时第二个TITLE语覆盖第一个TITLE语,也就是两个过程的输出都包含了标题USING PROC PLOT。所以,这种情况下,第一个RUN语不能省略。第13页,共60页。 using proc plot 17 MEANS 过程 变量 最小值 最大值 Age 11.0000000 16.0000000 Height 51.3000000 72.0000000 Weig

8、ht 50.5000000 150.0000000 using proc means 16 MEANS 过程 变量 最小值 最大值 Age 11.0000000 16.0000000 Height 51.3000000 72.0000000 Weight 50.5000000 150.0000000 不省略run省略run第14页,共60页。例11.16 使用选项CANCEL。proc means data=ResDat.idx000001;var clpr X; /*注意数据集中没有变量X */run cancel;例中,当发现SAS程序有错误不能运行这一段序时,使用选项CANCEL结束当前

9、步的执行。第15页,共60页。LIBNAME语句 LIBNAME语句定义SAS逻辑库。 LIBNAME语句把一个libref(库标记名)和一个目录名联系起来,使用户可在SAS语句中使用库标记来指示这个目录。第16页,共60页。语句格式 LIBNAME libref ;LIBNAME libref Clear;LIBNAME libref |_ All_ List;三种格式反映了LIBNAME语句的三种用法。选项说明 第17页,共60页。应用举例 例11.18 LIBNAME规定不同引擎的逻辑库。libname SASDB1 tape SAS- data-library; /*规定一个TAPE引

10、擎*/libname SASDB2 V6 SAS- data-library; /*规定版本为V6引擎*/libname SASDB3 ODBC SAS- data-library; /*规定版本为ODBC引擎*/例11.19 不同引擎的逻辑库数据集的转换。libname ResDatv6 v6 D:ResDat;data ResDatv6.class;set ResDat.class;run;例11.20 对已经存在的逻辑库使用LIBNAME语句联系一个SAS引擎。libname SASDB3 ODBC;第18页,共60页。例11.21 一个物理地址联系两个库标记。libname ResDa

11、t1 D:ResDat;libname ResDat2 D:ResDat;run;例11.23 脱离与库标记的联系。LIBNAME libref CLEAR;例11.24 列出逻辑库的属性。libname ResDat list; /*列出逻辑库ResDat的属性 */libname _all_ list; /*列出所有逻辑库的属性 */run;第19页,共60页。例11.25 多个物理地址指定一个逻辑库。libname new (d: resdat d:resstk);例11.26 多个不同的逻辑库组成一个逻辑库。libname new (resdat resstk);第20页,共60页。F

12、ILENAME语句 FILENAME语句把SAS的文件标记与外部文件的全名或输出设备联系起来。 用INFILE,FILE,或%INCLUDE语句中调用SAS文件前,要先使用FILENAME语句来定义文件。 用户可以把一个文件标记同单个外部文件建立联系,也可以很多外部文件建立联系。 文件标记和文件名字之间的联系只保持在SAS会话期间,或下一个FILENAME语句再定义前。第21页,共60页。语句格式 建立文件标记与外部文件的联系:FILENAME fileref external-file;清除文件标记与外部文件的联系:FILENAME fileref|_ALL_CLEAR;建立文件标记与某个输

13、出设备的联系:FILENAME fileref device-type;列出外部文件的属性:FILENAME fileref|_ALL_LIST;其它格式:FILENAME fileref CATALOG catalog;FILENAME fileref FTPexternal-file;FILENAME fileref SOCKET external- file;FILENAME fileref SOCKET: portno SERVER ;第22页,共60页。选项说明 部分选项说明: 设备类型(DEVICE-TYPE)第23页,共60页。应用举例 例11.29 读入外部文件创建SAS数据集

14、。filename delinfo d:resdatdelinfo.txt;data delinfo(label=退市信息|delist information);format stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. exchflg $1.stktype $1. ;informat stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. 第24页,共60页。exchflg $1.stktype $1. ;labelstkcd=股票代码|stock codelstk

15、nm=最新股票名称|latest stock namelstdt=股票上市日|list datedelistdt=退市日期|delist dateexchflg=交易所标识|exchange flagstktype=股票类型|stock type;infile delinfo delimiter=09x missover dsd firstobs=2;input stkcd $6. lstknm $12. lstdt yymmdd10. delistdt yymmdd10. exchflg stktype 1. ;run;例中,用文件标记delinfo识别外部文件(d:resdatdelinf

16、o.txt),读取其中的数据行,创建一个临时数据集delinfo.第25页,共60页。 例11.34 将逻辑库的所有文件传送到一个压缩文件。filename ResDat d:ResDatResDat;proc cport library=ResDat file=ResDat memtype=data;run;例中,将SAS逻辑库ResDat下的所有数据集传送到压缩文件ResDat中。例11.35 恢复将传送压缩为一个逻辑库。libname ResDat_0 d:ResDat_0;proc cimport library=ResDat_0 infile=ResDat;run;例中,恢复由CPO

17、RT过程生成的传送压缩文件ResDat为原来的形式。第26页,共60页。MISSING语句 MISSING语句规定数值数据缺失值的代表字符。它通常出现在DATA步,但其使用范围是全局性的。语句格式MISSING character-1,其中:character缺失值代表字符。第27页,共60页。应用举例 例11.42 读入有缺失值数据时必须用MISSING语句。data fitness;missing n r;input name$ age weight;cards;Wang 23 78Hu R 60Tian R N;例中,N表示被调查人不知道,R表示被调查人拒绝回答问题。MISSING语句指

18、示在输入数据行里N和R的值是缺失值而不是无效的数据值。nameageweightWang2378Hu R60Tian R N第28页,共60页。OPTIONS语句 OPTIONS语句临时改变SAS系统的选项设置。 改变后的选项设置在以后的SAS会话或作业中保持有效,直到再次改变它们。 改变SAS系统选项可以用OPTIONS语句,或用显示管理命令OPTIONS菜单。语句格式:OPTIONS option-1 ;其中:option规定要改变的SAS系统选项。例11.43 运行调试好程序时常用的系统选项。OPTIONS NODATE NONOTES NOSOURCE; 例中,运行调试好的大型程序时,

19、为了抑制LOG和OUTPUT窗口的输出,用上面的系统选项就可以解决问题。第29页,共60页。第18章 IML编程技术清华大学经管学院 朱世武ZhushwResdat样本数据:SAS论坛: 第30页,共60页。本章内容包括: 概述; 理解IML语言; 线型回归IML模块。 矩阵操作; IML编程语句; SAS 数据集操作; 访问外部文件。第31页,共60页。概述 SAS/IML(Interactive Matrix Language)是在一种在动态和交互式环境下实现的强大而灵活的过程语言(交互式矩阵语言)。IML最基本的数据对象是矩阵。在SAS/IML模式下,可以立刻看到语句运行的结果,也可以把

20、语句贮存在一个模块中为以后使用。第32页,共60页。SAS/IML软件特点 利用SAS/IML软件可以轻易地进行高效编程和使用一系列子程序。因为SAS/IML软件是SAS系统的一个模块,所以,可以使用SAS数据集和外部文件,也可以对一个已有的SAS数据集进行编辑或者创建一个新的SAS数据集。 SAS/IML软件是一种编程语言; SAS/IML软件对矩阵作运算; SAS/IML软件有强大的算符功能,有许多函数和CALL子程序; SAS/IML软件将算符应用到整个矩阵; SAS/IML软件是交互式的; SAS/IML软件是动态的; SAS/IML软件可以处理数据; SAS/IML软件可以作图。第3

21、3页,共60页。一个简单IML交互程序 例18.1 求平方根IML程序。proc iml; /* 激活IML */reset deflib=ResDat; /*指定ResDat为缺省的SAS逻辑库*/start approx(x); /* 定义模块开始 */ y=1; /* 初始化y */ do until(w1e-3); /* 循环开始, le-3=0.001 */ z=y; y=.5#(z+x/z); /* 估计开方根,牛顿迭代 */ w=abs(y-z); /* 计算估计值之间的差异 */ end; /* 循环结束 */ return(y); /* 返回近似值 */finish appr

22、ox; /* 模块结束 */t=approx(3,5,7,9); /* 调用函数APPROX */print t; /* 打印矩阵 */quit;run; T 1.7320508 2.236068 2.6457513 3OUTPUT窗口结果第34页,共60页。牛顿迭代法求f(z)=0一个实根的方法牛顿迭代法公式:上例中函数为:第35页,共60页。理解IML语言 定义矩阵SAS/IM软件对矩阵作运算,这里矩阵的定义同矩阵代数中矩阵的定义一样,是一个两维的(行列)数组。SAS/IM软件可以定义数值矩阵也可以定义字符矩阵。特殊矩阵定义:1N矩阵称作行向量;M1矩阵称作列向量;11矩阵称作标量.第36

23、页,共60页。矩阵名字与标识 矩阵名字是一个合法的SAS名字,不能超过8字节。矩阵标识是由它的值表示的矩阵。例18.2 矩阵名举例。A, XX, MATRIX1. 例18.3矩阵标识举例。100, ., HI, 1 2 2 8 8 , 3, 3, 6,6.第37页,共60页。由矩阵标识创建矩阵 创建标量矩阵例18.4创建标量矩阵。proc iml;reset deflib=ResDat; a=100;b=. ;c=IML;第38页,共60页。创建数值矩阵含有多个元素的矩阵标识要用括号把元素括起来。用逗号将矩阵的行分开。例18.5 由矩阵标识创建的数值阵。X=1 2 3 4 5 6; /*定义一

24、个行向量X*/Y=1,2,3,4,5; /*定义一个列向量Y*/Z=1 2, 3 4, 5 6; /*定义一个32矩阵Z*/W=3#Z; /*创建一个新矩阵W,它的每个元素是矩阵Z相应元素的3倍*/第39页,共60页。创建字符矩阵例18.6创建字符矩阵时,字符长度取最长字符的长度。a=IML Modual; /*字符长度以较长的字符为准,这里为6*/B=abc DEFG;第40页,共60页。重复因子重复因子用括弧括起来放在要重复的元素前面。例18.7 用与不用重复因子的等价语句。ANS=2 Yes, 2 No; ANS=Yes Yes, No No;第41页,共60页。赋值语句结果表达式:w=

25、3#z;函数作为表达式:a=sqrt(b); y=inv(x);r=rank(x);第42页,共60页。表达式中的三种运算符表达式中的算符 第43页,共60页。语句类型 SAS/IML软件语句大致分为三类: 控制语句; 函数和CALL语句; 命令语句。第44页,共60页。函数的一般形式:Result = Function (arguments);其中:Argument可以是矩阵名,矩阵本身或表达式。SAS/IML软件中的函数类型: 矩阵查询函数; 标量函数; 概括函数; 矩阵变形函数; 矩阵算术函数; 线性代数和统计函数。函数第45页,共60页。例18.8 IML随机数函数应用举例。Rv=Un

26、iform(Repeat(0, 10, 1); Rv =Ranuni(Repeat(0,10,1);Rv =Normal(Repeat(0,10,1);Rv =Rannor(Repeat(0,10,1);Rv =Ranbin(Repeat(0,10,1),20,0.5); Rv =Rancau(Repeat(0,10,1);Rv =Ranexp(Repeat(0,10,1);Rv =Rangam(Repeat(0,10,1),1); Rv =Ranpoi(Repeat(0,10,1),2); Rv =Rantri(Repeat(0,10,1),3);例中,形式REPEAT(X, Y, Z)中,

27、X是随机数种子,Y是产生的随机数个数,Z是产生的随机数列数。第46页,共60页。例18.9 DATA步下随机数产生SAS程序例子。data RV;retain _seed_ 0; /*retain 赋初值0给_seed_*/mu=0;sigma=1; do _i_ = 1 to 1000; Normal1 = mu + sigma * rannor(_seed_); /*均值为mu,标准差为sigma*/ output; end; drop _seed_ _i_ mu sigma;run;第47页,共60页。SAS/IML不支持OF语句:A=mean(of x1-x10);在SAS/IML中x

28、1-x10被当成x1减x10,而不是x1到x10.第48页,共60页。CALL语句与子程序CALL SUBROUTINE arguments ;例18.10 使用CALL子程序。call eigen(val,vec,t);call delete(DAT);第一个例句,用CALL语句创建矩阵, 得到矩阵t的特征值和特征向量。第二句,删除数据集DAT。第49页,共60页。例18.11 自建子程序。start mymod(a,b,c); a=sqrt(c); b=log(c);finish;run mymod(a, b, 10); /*运行模型MYMOD*/run mymod(x, y, 10);例

29、中,建立一个模块MYMOD,分别得到输入矩阵的平方根和自然对数值。CALL的其它一用法:call gstart; /*激活graphics模块 */call gopen; /*打开一个新的graphics片段*/call gpoint(x,y); /*作散点图*/call gshow; /*显示散点图*/第50页,共60页。命令 利用SAS/IML命令用于实现一些具体的系统功能,例如,存贮和加载矩阵、或进行特定的数据处理等。第51页,共60页。例18.12 SAS/IML命令用法举例。proc iml; A=1 2 3, 4 5 6, 7 8 9; B=2 2 2;show names;sto

30、re a b;show storage; remove a b; /*移走矩阵a,b*/show storage;load a b;quit;proc iml; A=1 2 3, 4 5 6, 7 8 9;B=2 2 2;print a b;free a b; /*清空矩阵a, b*/print a b;quit;第52页,共60页。缺失值 SAS/IML软件也有缺失值的问题。注意,矩阵中的缺失值不能视为0,矩阵标识中,数值缺失值用点”.”表示。 SAS/IML软件支持缺失值的方式是有限的。许多矩阵运算不允许有缺失值,比如,矩阵乘法、矩阵求逆等。另外,支持缺失值的矩阵运算也会产生不一致的结果。

31、第53页,共60页。线性回归IML模块 解方程组 例18.13 线性解方程组。用符号表示为:Ax = c解方程组程序: proc iml;a=3 -1 2, 2 -2 3, 4 1 -4;c=8, 2, 9;x=inv(a)*c;print a c x;quit;run; A C X 3 -1 2 8 3 2 -2 3 2 5 4 1 -4 9 2结果:第54页,共60页。线性回归IML模块程序 例18.14线性回归IML模块程序。proc iml;x=1 1 1, 1 2 4, 1 3 9, 1 4 16, 1 5 25;y=1,5,9,23,36;b=inv(t(x)*x)*t(x)*y;

32、yhat=x*b;r=y-yhat;sse=ssq(r);dfe=nrow(x)-ncol(x);mse=sse/dfe;第55页,共60页。start regress; /* 定义模块开始 */xpxi=inv(t(x)*x); /* 矩阵XX的逆 */beta=xpxi*(t(x)*y); /* 参数估计 */yhat=x*beta; /* 预测值 */resid=y-yhat; /* 残差 */sse=ssq(resid); /* SSE */n=nrow(x); /* 观测值数 */dfe=nrow(x)-ncol(x); /* 误差自由度DF */mse=sse/dfe; /* MSE */cssy=ssq(y-sum(y)/n); /* 校正平方和 */rsquare=(cssy-sse)/cssy; /* R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论