第五部分sas数据步循环与转移控制PPT课件

上传人:工**** 文档编号:589590144 上传时间:2024-09-11 格式:PPT 页数:45 大小:1.69MB
返回 下载 相关 举报
第五部分sas数据步循环与转移控制PPT课件_第1页
第1页 / 共45页
第五部分sas数据步循环与转移控制PPT课件_第2页
第2页 / 共45页
第五部分sas数据步循环与转移控制PPT课件_第3页
第3页 / 共45页
第五部分sas数据步循环与转移控制PPT课件_第4页
第4页 / 共45页
第五部分sas数据步循环与转移控制PPT课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第五部分sas数据步循环与转移控制PPT课件》由会员分享,可在线阅读,更多相关《第五部分sas数据步循环与转移控制PPT课件(45页珍藏版)》请在金锄头文库上搜索。

1、 数据步循环与转移控制数据步循环与转移控制江西财经大学江西财经大学DO语句语句 DO语句必须由一个END语句来结束。 DO和END语句之间的这些语句称为一个DO组。 DO组可以嵌套任意次。DO语句有5类: 简单DO语句; 循环DO语句; DOOVER语句; DOWHILE语句; DOUNTIL语句。简单简单DO语句语句 语句格式DO;一些SAS语句END;应用举例应用举例 例8.1IF/THEN语句用中DO.dataa;setdst.bclass;ifage14thendo;Height+20putname=sex=age=;end;run;循环循环DO语句语句 DO组中的语句需要被重复执行时

2、要用到循环DO语句。循环DO语句根据下标变量重复执行DO和END语句之间的语句语句格式DO index_variable=specification-1;一些SAS语句END;其中:index-variable选项定义下标变量,用于控制DO组的执行方式和重复次数。下标变量包含在创建的数据集中,可以用DROP语句删除。SPECIFICATION选项格式选项格式 Start;Specification选项说明:例8.2缺省的步长为1。doI=1to1000;doI=1toy+3;doI=1toexit;例8.3起始值例句。doi=5;doi=1ton;doi=nto1by1;doi=k+1ton-

3、1;doi=1tok-1,k+1ton;doi=2,3,5,7,11,13,17;doi=0.1to0.9by0.1,1to10by1,20to100by10;doi=saturday,sunday;doi=01jan99d,25feb99d;doi=01jan99dto01jan2000dby1;例句子中,起始值必须全部是数值或全部是字符常数,也可以是变量。字符常数必须用引号括起来。例8.4使用表达式选项。doi=1to10while(xy);doi=10to0by1while(month=jan);应用举例应用举例 例8.5用GOTO语句跳出循环体。dataa;inputxy;ifxyth

4、engotoskip;/*skip是循环体外的语句标号*/y=log(y-x);yy=y-20;skip:ify=5时停止。dataa;n=0;dountil(n=5);putn=;n+1;end;run; END语句语句 END语句是组成DO组或SELECT组的最后一个语句。语句格式语句格式END;应用举例应用举例 DO;若干个SAS语句END;SELECT(expression);When(expression)SAS语句;OtherwiseSAS语句;END;SELECT语句语句 SELECT语句选择执行SAS语句。语句格式SELECT;WHEN(when-expression-1)st

5、atement;WHEN(when-expression-1)statement;END;选项说明:应用举例应用举例 例8.13有SELECT表达式的SELECT语句。dataa;setdst.bclass;obs=_n_;x=uniform(0);select(obs);when(1)x=x*10;when(2,4,6);when(3,5,7,13,15,17)x=x*100;otherwisex=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为其

6、它值时,执行x=1。例8.14没有SELECT表达式的SELECT语句。data_null_;domon=jan,feb,mar,apr,may,jun,jul,aug,sep;select;when(monin(jun,jul,aug)putsummermon=;when(monin(mar,apr,may)putspringmon=;otherwiseputfallorwintermon=;end;end;run;361data_null_;362domon=jan,feb,mar,apr,may,jun,jul,aug,sep;363select;364when(monin(jun,ju

7、l,aug)putsummermon=;365when(monin(mar,apr,may)putspringmon=;366otherwiseputfallorwintermon=;367end;368end;369run;fallorwintermon=janfallorwintermon=febspringmon=marspringmon=aprspringmon=maysummermon=junsummermon=julsummermon=augfallorwintermon=sepNOTE:“DATA语句”所用时间(总处理时间):实际时间0.03秒CPU时间0.01秒例8.15SEL

8、ECT组的正确及错误用法举例。select(x);when(x=2)puttwo;/*错误用法*/end;select(x);when(2)puttwo;/*正确用法*/end;select;when(x=2)puttwo;/*正确用法*/end;run;例中,后两个程序的效果相同。IF语句语句IF语句的两种类型:条件IF语句,含有一个THEN子句或ELSE子句;子集IF语句,没有子句。IF-THEN与与IF-THEN/ELSE语句语句表达式为真时执行THEN后面的语句,表达式为假执行ELSE后面的语句。语句格式:IFexpressionTHENexpression;子集子集IF语句语句 语句

9、格式:IF expression;其中:expression是任意有效的表达式。如果表达式真的,SAS语句对正被创建的观测继续执行DATA步的语句。如果表达式是假的,SAS立即返回到DATA步的开始对其他观测执行。例8.17应用举例。dataa;setResDat.Idx000001;if_n_100;run;例中,选择前99条观测值。GO TO语句与语句标号语句与语句标号 GOTO语句使SAS跳到本程序步带有标号的语句继续往下执行。GOTO语句和指定的目标语句必须在同一DATA步。GOTO语句语句语句格式:GOTOlabel;GOTOlabel;Label选项规定语句标号来指示GOTO的目标

10、。例8.18应用举例。dataa;inputx;if1=x=5thengotook;putx;count+1;ok:sumx+x;cards;1272122422;run;例中,COUNT仅对大于5的数计数,SUMX+X对每个观测都执行。xcountsumx110122033711042112512224624348722470dataa;inputx;if1=x=5thengotook;putx;count+1;return;ok:sumx+x;cards;1272122422;run;例中,COUNT仅对大于5的数计数,SUMX+X仅对X在1和5之间的那些观测执行。xcountsumx11

11、01220337134215512256243572245例8.19上面两例中用DO-END语句替代GOTO语句。dataa;inputx;ifx5thendo;putx;count+1;end;sum+x;cards;1272122422;dataa;inputx;ifx5thendo;putx;count+1;end;elsesumx+x;cards;1272122422;语句标号语句标号 语句标号给出GOTO,LINK, FILE语句中的选项HEADER=,或在INFILE语句中选项EOF=的位置。语句格式:LABEL:statement;LINK语句语句 LINK语句告诉SAS系统立即

12、转到由LINK语句指示的语句标号,并从那里继续执行直到一个RETURN语句。RETURN语句让SAS立即返回到LINK语句后面的那个语句并从那里继续执行。LINK语句和语句标号所在的目标语句必须在同一个DATA步。语句格式语句格式LINK label;例8.20执行一组语句。databydro;inputtype$wdstation$;labeltype=stationtypewd=depthtowater;elev=.;iftype=aluythenlinkcalcu;year=1985;return;calcu:ifstation=site_1thenelev=6650-wd;ifstat

13、ion=site_2thenelev=5500-wd;return;/*返回到link语句下面的year=1985;语句*/cards;aluv523site_1uppa234site_2aluy666site_2;typewdstationelevyear1aluv523site_1.19852uppa234site_2.19853aluy666site_248341985RETURN语句语句RETURN语句告诉SAS系统在DATA步当前位置上停止执行语句,返回到一个预定位置上继续执行。语句格式语句格式RETURN;RETURN语句的作用:语句的作用:在LINK语句后面,RETURN语句让S

14、AS系统立即返回到LINK后面的语句,并继续往下执行;在FILE语句的选项HEADER=中,RETURN语句让SAS系统立即返回到开始新页之前执行的最后一个语句后面的语句,并继续执行;在在DATA步步的的其其它它地地方方,RETURN语语句句让让SAS系系统统返返回回到到DATA步开头。步开头。例8.23让SAS系统返回到DATA步开头。datasurvey;inputxyz;ifx=ythenreturn;x=y+z;a=x*2;cards;123334567889;例中,当X=Y时,RETURN语句被执行。SAS系统添加这个观测到数据集SURVEY,并返回到DATA步的开头。IF语句后面的

15、二个赋值语句没有被执行。xyza1523252334.313671694889.CONTINUE语句语句 CONTINUE语句停止当前的这次循环过程,继续进行下一次循环。语句格式:CONTINUE;例例8.25 CONTINUE语语句句停停止止当当前前的的循循环环过过程程,继继续续进进行行下下一次循环一次循环。dataa;doi=1to5;inputname$idnostatus$;ifstatus=PTthencontinue;/*返回到下次循环的开头*/inputbenefits$10.;output;end;cards;/*接上页*/Jones9011PTThomas876PTRicha

16、rds1002FTEye/DentalKelly85111PTSmith433FTHMOKelly85111PTSmith433FTHMOJones9011PTThomas876PTRichards1002FTEye/Dental;Run; inameidnostatusbenefits13 Richards1002 FTEye/Dental25 Smith433 FTHMO32 Smith433 FTHMO45 Richards1002 FTEye/DentalLEAVE 语句语句 LEAVE语句停止当前DO组循环或SELECT组的处理过程,并继续执行DO组或SELECT组后面的语句。语句格

17、式:LEAVE;例例8.26 给定条件下停止给定条件下停止DO循环的处理过程循环的处理过程dataweek;inputname$idnostartstatus$dept$;bonus=0;doyear=startto1991;ifbonusge500thenleave;bonus+50;end;cards;/*接上页*/Jones90111990PTPUBThomas8761976PTHRBarnes78991991fttechHarrell12501975fthrRichards10021990ftdevKelly851981ptpubStone0911990ptmait;Run;例中,首先由IF语句检查BONUS的值,当BONUS的值超过允许的最大值500时,用LEAVE语句来停止DO循环的处理过程nameidnostartstatusdeptbonusyear1Jones90111990PTPUB10019922Thomas8761976PTHR50019863Barnes78991991fttech5019924Harrell12501975fthr50019855Richards10021990ftdev10019926Kelly851981ptpub50019917Stone911990ptmait1001992

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号