欢迎来到天天文库
浏览记录
ID:61035718
大小:312.50 KB
页数:21页
时间:2021-01-20
《SAS系统和数据分析用在DATA步的控制语句.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第十五课用在DATA步的控制语句DATA步的基本概念、流程和有关文件的操作语句我们前面已介绍。但我们所介绍的DATA步中的SAS语句都是按语句出现的次序对每一个观测进行处理。有时需要对一些确定的观测跳过一些SAS处理语句,或者改变SAS语句的处理次序,就需要用到DATA步中的控制语句,实现SAS程序的分支、转移和循环等改变处理次序的功能。SAS系统提供的控制语句从实现功能的角度看主要有以下五大类:l实现循环(DO语句)l实现选择(SELECT语句)l实现分支(IF语句)l实现转移(GOTO语句)l实现连接(LINK语句)一、实现循环(DO语句)循环程序中使用DO
2、语句的主要形式有四种,如下所示:lDO语句的程序格式之一:IF条件表达式THENDO;一些SAS语句;END;lDO语句的程序格式之二:DO变量=开始值TO终值BY步长值;一些SAS语句;END;lDO语句的程序格式之三:DOWHILE(条件表达式);一些SAS语句;END;lDO语句的程序格式之四:DOUNTIL(条件表达式);一些SAS语句;END;DOWHILE和DOUNTIL语句中的表达式是用括号括起来的。两种循环程序格式的区别是,对条件表达式的判断位置。DOWHILE是在循环体的开头,而DOUNTIL是在循环体的结束,也就是说DOUNTIL至少执行循环
3、体中一些SAS语句一次。下面我们举例来说明DO语句的使用。1.使用循环DO组产生随机数数据集例如,我们需要产生一组均匀分布的随机数流的数据集,程序如下:DataDoRanuni;seed=;DoI=1to10by2;X1=ranuni(seed);X2=ranuni(seed);Output;End;Procprintdata=DoRanuni;Run;程序中的X1和X2都采用相同种子变量值SEED=来产生的均匀分布的随机数流。在数据步DATA中使用DO循环语句时常常与OUTPUT语句配合来产生数据集。OUTPUT语句作用是把当前的观测输出到正在被创建的数据集D
4、oRanuni中。第一次顺序执行产生Seed、I、X1、X2四个变量,OUTPUT输出后,遇到END语句回到DO语句,产生I、X1、X2变量的第二次值,Seed变量因为没有遇到DATA语句,继续保持原来值,DO-END循环结束后,DATA步也就结束了。均匀分布随机数是最基本也是最重要的随机数,其他分布的随机数都可以用均匀随机数经过变换得到。最常用的均匀分布随机函数是RANUNI(seed),这个函数是一个模为231-1,乘子为的素数模发生器。Seed必须是小于模231-1任何数值的常数。相同的Seed值会产生相同的随机数序列数,但不同次调用随机函数所产生的值通常
5、是不同的,因此计算机所产生的随机数是一种伪随机数。这个程序中的X1和X2都采用相同种子变量值SEED=所产生的均匀分布的随机数流。SAS系统提供产生了11种常见分布随机数的函数,如表15.1所示,随机数是我们实验和研究问题的重要的输入数据。因此要能编写程序,产生符合要求分布的随机数数据集。程序运行结果如图15.1所示。图15.1用循环DO组产生随机数数据集表15.1SAS系统的各种随机函数随机数函数名作用UNIFORM(seed)产生(0,1)区域均匀分布随机数,乘同余发生器RANUNI(seed)产生(0,1)区域均匀分布随机数,素数模发生器NORMAL(se
6、ed)产生标准正态分布随机数,利用中心极限定理近似公式RANNOR(seed)产生标准正态分布随机数,利用变换抽样法RANEXP(seed)产生λ=1的指数分布随机数RANGAM(seed,alpha)产生伽马分布随机数,alpha>0,seed为任意数值RANTRI(seed,h)产生三角分布随机数,00的整数,00,seed为任意数7、值RANTBL(seed,p1,…,p2,…pn)产生离散分布随机数,0≤pi≤1,seed为任意数值注:种子seed一般取0,或5位,6位,7位的奇整数。对于均值为M,标准差为S的正态分布随机数,可由标准正态分布随机数的线性函数得到:X=M+S*NORMAL(seed)1.在循环DO组中使用下标数组产生数据集当我们需要用同一种方法来处理很多变量时,可以用数组语句定义这组变量为数组的一些元素,这个数组中的一些元素就可以在DATA步中较后面的SAS语句里以数组下标的形式被引用。数组ARRAY语句的基本格式为:Array数组名{下标}<$><长度><<数组元素><(8、初始值)>>;例如,以下
0,seed为任意数
7、值RANTBL(seed,p1,…,p2,…pn)产生离散分布随机数,0≤pi≤1,seed为任意数值注:种子seed一般取0,或5位,6位,7位的奇整数。对于均值为M,标准差为S的正态分布随机数,可由标准正态分布随机数的线性函数得到:X=M+S*NORMAL(seed)1.在循环DO组中使用下标数组产生数据集当我们需要用同一种方法来处理很多变量时,可以用数组语句定义这组变量为数组的一些元素,这个数组中的一些元素就可以在DATA步中较后面的SAS语句里以数组下标的形式被引用。数组ARRAY语句的基本格式为:Array数组名{下标}<$><长度><<数组元素><(
8、初始值)>>;例如,以下
此文档下载收益归作者所有