sas数据步循环与转移控制PPT课件_第1页
sas数据步循环与转移控制PPT课件_第2页
sas数据步循环与转移控制PPT课件_第3页
sas数据步循环与转移控制PPT课件_第4页
sas数据步循环与转移控制PPT课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、DO语句语句 DO语句必须由一个END语句来结束。 DO和END语句之间的这些语句称为一个DO组。 DO组可以嵌套任意次。 DO语句有5类: 简单DO语句; 循环DO语句; DO OVER语句; DO WHILE语句; DO UNTIL语句。第1页/共45页简单简单DO语句语句 语句格式 DO; 一些SAS语句 END;第2页/共45页应用举例应用举例 例8.1 IF/THEN语句用中DO. data a; set dst.bclass; if age14 then do; Height+20 put name= sex= age=; end; run;第3页/共45页循环循环DO语句语句 D

2、O组中的语句需要被重复执行时要用到循环DO语句。 循环DO语句根据下标变量重复执行DO和END语句之间的语句 语句格式 DO index_variable=specification-1; 一些SAS语句 END; 其中: index-variable选项定义下标变量,用于控制DO组的执行方式和重复次数。 下标变量包含在创建的数据集中,可以用DROP语句删除。 第4页/共45页SPECIFICATION选项格式选项格式 Start ; Specification选项说明: Start规定下标变量的起始值To Stop规定下标变量的终止值Increment规定步长While Expression

3、表达式在每次循环执行前计算Until Expression表达式在每次循环执行以后计算第5页/共45页 例8.2 缺省的步长为1。 do I=1 to 1000; do I=1 to y+3; do I=1 to exit;第6页/共45页 例8.3 起始值例句。 do i=5; do i=1 to n ; do i=n to 1 by 1; do i=k+1 to n-1; do i=1 to k-1, k+1 to n; do i=2, 3, 5, 7, 11, 13, 17; do i=0.1 to 0.9 by 0.1, 1 to 10 by 1, 20 to 100 by 10; d

4、o i=saturday, sunday; do i=01jan99d, 25feb99d; do i=01jan99d to 01jan2000d by 1; 例句子中,起始值必须全部是数值或全部是字符常数,也可以是变量。字符常数必须用引号括起来。 第7页/共45页 例8.4 使用表达式选项。 do i=1 to 10 while(xy); do i=10 to 0 by 1 while(month=jan);第8页/共45页应用举例应用举例 例8.5 用GO TO语句跳出循环体。 data a; input x y; if xy then goto skip; /*skip是循环体外的语句

5、标号*/ y=log(y-x); yy=y-20; skip: if y=5时停止。 data a; n=0; do until(n=5); put n=; n+1; end; run; 第17页/共45页END语句语句 END语句是组成DO组或SELECT组的最后一个语句。 语句格式语句格式 END; 第18页/共45页应用举例应用举例 DO; 若干个SAS语句 END; SELECT (expression); When (expression) SAS语句; Otherwise SAS语句; END; 第19页/共45页SELECT语句语句 SELECT语句选择执行SAS语句。 语句格式

6、 SELECT; WHEN (when-expression-1) statement; WHEN(when-expression-1) statement; END; 选项说明: select-expression选择表达式when-expression规定任意有效的一个SAS表达式。Statement任意可执行的SAS语句第20页/共45页应用举例应用举例 例8.13 有SELECT表达式的SELECT语句。 data a; set dst.bclass; obs=_n_; x=uniform(0); select (obs); when (1) x=x*10; when (2,4,6);

7、 when (3,5,7,13,15,17) x=x*100; otherwise x=1; end; run; 例中,根据OBS来计算新变量X的值。当OBS为1时,执行x=x*10。当OBS为2,4,6时,X值不变。当OBS为3,5,7,13,15,17时,执行X=X*100。OBS为其它值时,执行x=1。 第21页/共45页 例8.14 没有SELECT表达式的SELECT语句。 data _null_; do mon=jan,feb,mar,apr,may,jun,jul,aug,sep; select; when (mon in (jun,jul,aug) put summer mon

8、=; when (mon in (mar,apr,may) put spring mon=; otherwise put fall or winter mon=; end; end; run; 第22页/共45页361 data _null_;362 do mon=jan,feb,mar,apr,may,jun,jul,aug,sep;363 select;364 when (mon in (jun,jul,aug) put summer mon=;365 when (mon in (mar,apr,may) put spring mon=;366 otherwise put fall or

9、winter mon=;367 end;368 end;369 run;fall or wintermon=janfall or wintermon=febspring mon=marspring mon=aprspring mon=maysummer mon=junsummer mon=julsummer mon=augfall or wintermon=sepNOTE: “DATA 语句”所用时间(总处理时间): 实际时间 0.03 秒 CPU 时间 0.01 秒第23页/共45页 例8.15 SELECT组的正确及错误用法举例。 select(x); when (x=2) put two

10、; /*错误用法*/ end; select(x); when(2) put two; /*正确用法*/ end; select; when (x=2) put two; /*正确用法*/ end; run; 例中,后两个程序的效果相同。 第24页/共45页IF语句语句 IF语句的两种类型:条件IF语句,含有一个THEN子句或ELSE子句;子集IF语句,没有子句。 IF-THEN与与IF-THEN/ELSE语句语句 表达式为真时执行THEN后面的语句, 表达式为假执行ELSE后面的语句。 语句格式: IF expression THEN expression; 第25页/共45页子集子集IF语

11、句语句 语句格式: IF expression; 其中: expression是任意有效的表达式。 如果表达式真的,SAS语句对正被创建的观测继续执行DATA步的语句。如果表达式是假的,SAS立即返回到DATA步的开始对其他观测执行。 第26页/共45页 例8.17 应用举例。 data a; set ResDat.Idx000001; if _n_100; run; 例中,选择前99条观测值。第27页/共45页GO TO语句与语句标号语句与语句标号 GOTO语句使SAS跳到本程序步带有标号的语句继续往下执行。GOTO语句和指定的目标语句必须在同一DATA步。 GOTO语句语句 语句格式: G

12、OTO label; GOTO label; Label选项规定语句标号来指示GO TO的目标。 第28页/共45页 例8.18 应用举例。 data a; input x ; if 1=x=5 then goto ok; put x; count+1; ok: sumx+x; cards; 1 2 7 2 12 24 22 ;run; 例中,COUNT仅对大于5的数计数,SUMX+X对每个观测都执行。 xcountsumx110122033711042112512224624348722470第29页/共45页 data a; input x ; if 1=x=5 then goto ok;

13、 put x; count+1; return; ok: sumx+x; cards; 1 2 7 2 12 24 22 ; run; 例中,COUNT仅对大于5的数计数,SUMX+X仅对X在1和5之间的那些观测执行。 xcountsumx1101220337134215512256243572245第30页/共45页 例8.19 上面两例中用DO-END语句替代GOTO语句。 data a; input x ; if x5 then do; put x; count+1; end; sum+x; cards; 1 2 7 2 12 24 22 ; data a; input x ; if x

14、5 then do; put x; count+1; end; else sumx+x; cards; 1 2 7 2 12 24 22 ;第31页/共45页语句标号语句标号 语句标号给出GOTO,LINK, FILE语句中的选项HEADER=,或在INFILE语句中选项EOF=的位置。 语句格式: LABEL: statement; 第32页/共45页LINK语句语句 LINK语句告诉SAS系统立即转到由LINK语句指示的语句标号,并从那里继续执行直到一个RETURN语句。 RETURN语句让SAS立即返回到LINK语句后面的那个语句并从那里继续执行。 LINK语句和语句标号所在的目标语句必

15、须在同一个DATA步。 语句格式语句格式 LINK label; 第33页/共45页 例8.20 执行一组语句。 data bydro; input type $ wd station $; label type=station type wd=depth to water; elev=.; if type=aluy then link calcu; year=1985; return; calcu: if station=site_1 then elev=6650-wd; if station=site_2 then elev=5500-wd; return; /*返回到link语句下面的y

16、ear=1985;语句*/ cards; aluv 523 site_1 uppa 234 site_2 aluy 666 site_2 ;typewdstationelevyear1aluv523site_1.19852uppa234site_2.19853aluy666site_248341985第34页/共45页RETURN语句语句 RETURN语句告诉SAS系统在DATA步当前位置上停止执行语句,返回到一个预定位置上继续执行。 语句格式语句格式 RETURN; RETURN语句的作用:语句的作用: 在LINK语句后面,RETURN语句让SAS系统立即返回到LINK后面的语句,并继续往下

17、执行; 在FILE语句的选项HEADER=中,RETURN语句让SAS系统立即返回到开始新页之前执行的最后一个语句后面的语句,并继续执行; 在在DATA步的其它地方,步的其它地方,RETURN语句让语句让SAS系统返系统返回到回到DATA步开头。步开头。第35页/共45页 例8.23 让SAS系统返回到DATA步开头。 data survey; input x y z; if x=y then return; x=y+z; a=x*2; cards; 1 2 3 3 3 4 5 6 7 8 8 9 ; 例中,当X=Y时,RETURN语句被执行。SAS系统添加这个观测到数据集SURVEY,并返回

18、到DATA步的开头。IF语句后面的二个赋值语句没有被执行。 xyza1523252334 .313671694889 .第36页/共45页CONTINUE语句语句 CONTINUE语句停止当前的这次循环过程,继续进行下一次循环。 语句格式: CONTINUE; 第37页/共45页 例例8.25 CONTINUE语句停止当前的循环过程,继续进行下一次循环语句停止当前的循环过程,继续进行下一次循环。 data a; do i=1 to 5; input name $ idno status $; if status=PT then continue; /*返回到下次循环的开头*/ input be

19、nefits $10.; output; end; cards;第38页/共45页/*接上页 */Jones 9011 PTThomas 876 PTRichards 1002 FTEye/DentalKelly 85111 PTSmith 433 FTHMOKelly 85111 PTSmith 433 FTHMOJones 9011 PTThomas 876 PTRichards 1002 FTEye/Dental;Run;第39页/共45页 inameidnostatusbenefits13Richards1002FTEye/Dental25Smith433FTHMO32Smith433FTHMO45Richards1002FTEye/Dental第40页/共45页LEAVE 语句语句 LEAVE 语句停止当前DO组循环或SELECT组的处理过程,并继续执行DO组或SELECT组后面的语句。 语句格式: LEAVE; 第41页/共45页例例8.26 给定条件下

温馨提示

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

评论

0/150

提交评论