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