第16章 SAS数组及其应用
- 格式:pptx
- 大小:510.29 KB
- 文档页数:24
SAS循环与数组SAS 循环与数组SAS提供了循环语句以满⾜在编程中需要多次执⾏相同操作的情况。
有时还需要对不同的变量执⾏相同的操作,此时可定义SAS数组,并通过数组名和下标来引⽤这些变量。
1 循环SAS循环语句通常有如下⼏种形式:迭代DO语句、DO WHILE语句和DO UNTIL语句。
1.迭代DO语句迭代DO语句的基本形式如下:DO 索引变量=开始值 <TO 结束值> <BY递进值> <WHILE(表达式)> <UNTIL(表达式)>;… SAS语句…END;其中:·索引变量⽤于指定⼀个变量,若该变量不存在,则创建新变量。
DO语句和END语句之间的语句称为DO组,索引变量的值会控制DO 组的执⾏。
·开始值指定索引变量的初始值,可以是表达式或表达式序列。
DO组的执⾏从“索引变量=开始值”开始。
在循环的第⼀个迭代开始前,对开始值求值。
如果结束值和递进值不存在,那么开始值可能是⼀系列项,则DO语句的形式如下。
DO 索引变量=项1 <, …项n>;项1~项n可以是数字常量、字符常量或变量。
SAS为列表中的每个项执⾏⼀次DO组。
·结束值指定索引变量的结束值。
当开始值和结束值都存在时,DO 组执⾏直到下⾯任意⼀种情况发⽣时循环执⾏结束:索引变量的值超过结束值;DO组中存在指⽰退出循环的语句,例如LEAVE语句、GO TO 语句;如果有WHILE或UNTIL选项,则WHILE之后的表达式不满⾜或 UNTIL之后的表达式满⾜(可参考后⾯对DO UNTIL语句和DO WHILE 语句的介绍)。
·递进值指定⼀个数字,或者是产⽣数字值的表达式,来控制索引变量的增量。
递进值在循环执⾏前进⾏计算。
因此,在DO组内对递进值的修改不会影响循环迭代次数。
每次迭代后,索引变量的值为其当前值的基础上增加递进值。
如果未指定递进值,则索引变量的值增加1。
第16章 sas程序及运行结果(2011年12月5日)【实验16-1】单纯随机抽样实验通过采用单纯随机抽样方法,用样本统计量估计总体参数及置信区间。
【程序16-1】单纯随机抽样data sample1;input n sn sm sd y;a=0.05;se=sd*sqrt(1-sn/n)/sqrt(sn);mcil=sm-tinv(1-a/2,sn-1)*se;mciu=sm+tinv(1-a/2,sn-1)*se;p=y/sn;pse=sqrt(1-sn/n)*sqrt(p*(1-p)/(sn-1));pcil=p-probit(1-a/2)*pse;cards;5400 2700 0.8 0.54 123;proc print;run;【程序16-1运行结果】The SAS System 22:07 Sunday, December 5, 2011 1Obs n sn sm sd y a se mcil mciu p pse pcil 1 5400 2700 0.8 0.54 123 0.05 .007348469 0.78559 0.81441 0.045556 .002838112 0.039993【实验16-2】分层随机抽样实验通过采用分层随机抽样方法,用样本统计量估计总体参数及置信区间。
Data sample2;A=0.05;Snu=sum(2900+2500);Sn=270;Pp=sn/snu;Input n m sd p;Mm+n/snu*m;Se2=(1-pp)*sd2/n;Sse2+((n/snu)*se)**2;Sse=sqrt(see2);mcil=mm-tinv(1-a/2,sn-2)*sse;mciu=mm+tinv(1-a/2,sn-2)*sse;pse=sqrt(1-pp)*sqrt((1-p)*p/(n*pp-1));sp+n/snu*p;psse2+((n/snu)*pse)**2;psse=sqrt(psse2);pcil=sp-probit(1-a/2)*psse;pciu=sp+probit(1-a/2)*psse;cards;2900 0.8 0.58 0.402500 0.7 0.45 0.55;proc print;run;【程序16-2运行结果】The SAS System 22:07 Sunday, December 5, 2011 2Obs A Snu Sn Pp n m sd p Mm Se2 sd2 Sse2 se Sse see21 0.05 5400 270 0.05 2900 0.8 0.58 0.40 0.42963 . . 0 . . .2 0.05 5400 270 0.05 2500 0.7 0.45 0.55 0.75370 . . 0 . . .Obs mcil mciu pse sp psse2 psse pcil pciu1 . . 0.039791 0.21481 .000456647 0.021369 0.17293 0.256702 . . 0.043545 0.46944 .000863062 0.029378 0.41186 0.52702【实验16-3】有限总体的不同抽样方法(三种抽样方法合集)【注意】:程序有91句,很长,容易出错。
《应用多元分析》(第三版)各章附录中SAS程序的说明等(王学民编)附录1-1 SAS的应用例1—1.1的SAS程序:proc iml;x={1 2 3 4 5,2 4 7 8 9,3 7 10 15 20,4 8 15 30 20,5 9 20 20 40};g=inv(x);e=eigval(x);d=eigvec(x);h=det(x);t=trace(x);print g e d h t;程序说明:“proc iml"是一个矩阵运算的过程步;“x={1 2 3 4 5,2 4 7 8 9,3 7 10 15 20,4 815 30 20,5 9 20 20 40}”是输入矩阵1234524789371015204815302059202040⎛⎫⎪⎪⎪⎪⎪⎪⎝⎭,并赋值给变量x;inv(x)是x的逆矩阵函数,eigval(x)是x的特征值函数,eigvec(x)是x的特征向量函数,det(x) 是x的行列式函数,trace(x)是x的迹函数,这些函数分别赋值给我们取的变量g,e,d,h,t;“print g e d h t”是打印语句,指定将g e d h t的值输出。
附录2—1 SAS的应用例2.3。
3和例2。
3.6的SAS程序:proc iml;a={2 -1 4,0 1 —1,1 3 -2};b={5,-2,7};c={4 1 2,1 9 —3,2 —3 25};d=block(2,3,5);e=a*b;v=a*c*t(a);r=inv(d)*c*inv(d);print e v r;程序说明:“proc iml”是一个矩阵运算的过程步;“a={2 —1 4,0 1 —1,1 3 -2}”是输入矩阵214011132-⎛⎫⎪-⎪⎪-⎝⎭,并赋值给变量a;“b={5,—2,7}"是输入向量527⎛⎫⎪- ⎪⎪⎝⎭,并赋值给变量b;“c={4 1 2,1 9 -3,2 -3 25}”是输入矩阵4121932325⎛⎫⎪-⎪⎪-⎝⎭,并赋值给变量c;“d=block(2,3,5)”是输入对角阵diag(2,3,5),并赋值给变量d;“e=a*b”是将a与b相乘,并赋值给变量e;“v=a*c*t(a)”是将a,c,a’三个矩阵相乘,并赋值给变量v,其中t(a)是a的转置函数;“r=inv(d)*c*inv(d)”是将d-1,c,d-1相乘,并赋值给变量r,其中inv(d)是d的逆矩阵函数;”print e v r”是打印语句,指定将e v r的值输出.附录3-1 SAS的应用例3-1.1的SAS程序:proc corr data=sasuser.examp3a1 cov;var x1—x7;run;proc corr data=sasuser.examp3a1 nosimple cov;var x5 x6 x7;with x3 x4;partial x1 x2;run;程序说明:Proc步是以proc开头的一组或几组语句,它以另一个proc步、data步或run语句结束。
12. SAS数组使用SAS数组(ARRAY语句),主要是对多个变量做相同操作时,可以通过数组存储这些变量,借用数组下标执行循环结构来实现,从而大大简化和缩短程序代码。
SAS数组是存储一组同类型(数值型或字符型)的变量,这些变量可以是已存在的,也可以是新创建的。
一、基本语法ARRAY 数组名[n] <$> 变量列表;说明:(1)n是数组的长度(即变量个数);也可以用“[*]”不指定数组长度,而是让SAS根据变量列表数目自己判断;也可以指定数组的下标范围,例如,array Year[2005:2010] YR2005 - YR2010;(2)若是字符型变量需要加“$”,也可以指定字符的长度(“$1”表示数组元素是1个字节的字符);(3)若变量列表各变量是“相同字符+连续数字”可以简写(下面两句代码功能相同):array Cat8 - Cat12;array Cat8 Cat9 Cat10 Catll Cat12;示例:array store[4] Macys Penneys Sears Target;定义数组store,含有4个数值型变量:Macys,Penneys,Sears,Target 使用数组变量Sears用“store[3]”即可。
注意:数组本身不储存在数据集中,只在数据步中定义和使用,即不会创建变量“store[1],store[2]……”;例1广播电台KBRK做了一份歌曲的听众调查,对5首歌进行打分,分值在1-5,如果没听过则填9. 数据文件(C:\MyRawData\KBPK.dat)包括了被访者姓名、年龄、以及5首歌的打分:读取数据,将打分为9的改为缺省值。
代码:data songs;infile'c:\MyRawData\KBRK.dat';input City $ 1-15 Age wj kt tr filp ttr;array song[5] wj kt tr filp ttr;do i = 1to5;if song[i] = 9THEN song[i] =.;end;run;proc print data = songs;title'KBRK Song Survey';run;运行结果:注意:循环变量i会自动作为一列新变量写入数据集,要想避免它,需要加上一句“drop i;”。
SAS编程与数据处理2-18章复习题朱世武著.《SAS编程技术与金融数据处理》.清华大学出版社. 2003.7第2章SAS系统快速入门1.SAS系统的特点。
2.简述SAS的三类功能与相应的模块举例。
3.SAS技术水平的三个层次.4.缺省情况下SAS系统的五个功能窗口及各自的作用是什么?怎样定义激活这些窗口的快捷键?5.SAS程序的一般特点。
6.SAS日志窗口的信息构成。
7.会使用工具菜单的options选项。
8.在显示管理系统下,切换窗口和完成各种特定的功能等,有四种发布命令的方式:即,在命令框直接键入命令;使用下拉菜单;使用工具栏;按功能键。
试举例说明这些用法。
9.理解SAS逻辑库、临时库和永久库的概念。
会用菜单方式新建SAS永久库。
10.说明下面SAS命令的用途:keys, dlglib, libname, dir, var, options, submit, recall.11.怎样增加和删除SAS工具?12.会用菜单方式导入(Import)和导出SAS数据集(Export)。
13.会用菜单方式创建查询。
14.会用SAS的INSIGHT模块进行简单的数据分析。
15.简述SAS逻辑库的作用。
第3章数据步创建SAS数据集1.理解SAS语句的信息构成。
举例说明。
2.SAS名的种类及命名规则。
什么是SAS关键词?3.理解Data步的Proc步。
4.SAS变量的类型和属性。
举例说明SAS自动变量。
5.理解SAS程序。
SAS程序的书写规则。
给一个简单SAS 程序的例子,适当应用SAS的注释语句。
6.SAS数据集中变量列表时,X1-Xn表示什么?特殊SAS变量列表_numeric_, _character_和_all_的含义。
7.怎样提交SAS程序?程序执行过程中,LOG窗口显示的信息结构。
8.怎样查看SAS程序的输出结果。
9.SAS表达式定义及其构成元素。
10.构成SAS表达式的操作对象和操作符有哪些?11.SAS常数及其类型。
SAS语言教程及其应用课程设计一、课程简介SAS(统计分析系统)是世界著名的统计软件之一,也是企业级业务数据分析的首选软件。
本课程主要介绍SAS语言的特点及其在企业级业务数据分析中的应用。
同时,结合实际案例,深入浅出地讲解企业级业务数据分析中的常见应用场景及分析方法。
二、课程目标1.熟悉SAS语言的基本语法;2.掌握SAS语言在数据清洗、数据管理、数据分析等方向的应用;3.能够独立进行企业级业务数据分析项目的数据整理、数据分析及成果呈现。
三、课程大纲1. SAS语言基础•SAS语言及其特点•SAS Studio软件环境介绍•SAS语言基本语法•SAS数据类型及数据格式•SAS数据集及其存储方式2. SAS数据清洗与管理•数据清洗的目的与意义•数据清洗的基本方法与技巧•数据的合并与拼接•数据的分组与汇总3. SAS数据分析•SAS常见统计分析方法•数据可视化与报告生成•数据挖掘与预测建模•常见实际业务数据分析案例四、课程收获通过本课程的学习,你将会:•获得SAS语言基本能力;•能够熟练使用SAS Studio进行数据管理和数据分析;•掌握企业级业务数据分析的常见方法和实际案例;•能够进行企业级业务数据分析项目的数据整理、数据分析及成果呈现。
五、课程设计1. 课程总体设计本课程为面授课程,时间长达20个课时,每周一次,每次3小时。
课程主要以理论课为主,穿插一些实际案例分析和操作练习。
2. 课程具体内容和教学方法•第一周:SAS语言基础(理论课 + 实践练习)。
主要讲解SAS语言的特点及其基本语法,同时通过实践练习,让学生掌握SAS Studio的使用。
•第二周:SAS数据清洗与管理(理论课 + 实践练习)。
主要讲解数据清洗的目的及其基本方法与技巧,同时通过实践练习,让学生掌握数据的合并、拼接、分组和汇总。
•第三周:SAS数据分析(理论课 + 实践练习)。
主要讲解SAS常见统计分析方法、数据可视化与报告生成、数据挖掘与预测建模等方面的知识,同时结合实际案例进行分析和实践练习。