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

下载本文档

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

文档简介

数据步循环与转移控制 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 ifage 14thendo Height 20putname sex age end run 循环DO语句 DO组中的语句需要被重复执行时要用到循环DO语句 循环DO语句根据下标变量重复执行DO和END语句之间的语句语句格式DOindex 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 nto1by 1 doi k 1ton 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 01jan99 d 25feb99 d doi 01jan99 dto 01jan2000 dby1 例句子中 起始值必须全部是数值或全部是字符常数 也可以是变量 字符常数必须用引号括起来 例8 4使用表达式选项 doi 1to10while xy doi 10to0by 1while month jan 应用举例 例8 5用GOTO语句跳出循环体 dataa inputxy ifx ythengotoskip skip是循环体外的语句标号 y log y x yy y 20 skip ify 0thendo putx y z log x y end cards 26535 1 run 数据集a 例8 6产生指定观测值个数的数据集 dataa don 1to100 output end run 例中 产生一个含有100个观测值的数据集 例8 7自然数求和 dataa t 0 don 1to100 t t n output end run 例中 求1到100的自然数之和 DOOVER语句 DOOVER语句对隐含下标数组元素执行DO组里的语句 语句格式DOOVERarray name 若干SAS语句 END 其中 选项array name规定一个隐含下标数组 应用举例 例8 10隐含数组的所有元素乘以100 datatest inputsc01 sc05 arrayssc01 sc05 doovers 等价于do i 1to5 s s 100 end cards 95 88 99 77 56 run DOWHILE语句 DOWHILE语句使得当条件成立时重复地执行DO组中的语句 语句格式DOWHILE expression 选项expression规定任一有效表达式 应用举例 例8 11当N值小于5时重复执行DO组中的语句 dataa n 0 dowhile nlt5 putn n 1 end run DOUNTIL语句 有条件地执行DO组中的语句 语句格式DOUNTIL expression 其中 选项expression规定任一有效表达式 应用举例 例8 12重复循环直到n 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 statement 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为其它值时 执行x 1 例8 14没有SELECT表达式的SELECT语句 data null domon jan feb mar apr may jun jul aug sep select when monin jun jul aug put summer mon when monin mar apr may put spring mon otherwiseput fallorwinter mon end end run 361data null 362domon jan feb mar apr may jun jul aug sep 363select 364when monin jun jul aug put summer mon 365when monin mar apr may put spring mon 366otherwiseput fallorwinter mon 367end 368end 369run fallorwintermon janfallorwintermon febspringmon marspringmon aprspringmon maysummermon junsummermon julsummermon augfallorwintermon sepNOTE DATA语句 所用时间 总处理时间 实际时间0 03秒CPU时间0 01秒 例8 15SELECT组的正确及错误用法举例 select x when x 2 put two 错误用法 end select x when 2 put two 正确用法 end select when x 2 put two 正确用法 end run 例中 后两个程序的效果相同 IF语句 IF语句的两种类型 条件IF语句 含有一个THEN子句或ELSE子句 子集IF语句 没有子句 IF THEN与IF THEN ELSE语句表达式为真时执行THEN后面的语句 表达式为假执行ELSE后面的语句 语句格式 IFexpressionTHENexpression 子集IF语句 语句格式 IFexpression 其中 expression是任意有效的表达式 如果表达式真的 SAS语句对正被创建的观测继续执行DATA步的语句 如果表达式是假的 SAS立即返回到DATA步的开始对其他观测执行 例8 17应用举例 dataa setResDat Idx000001 if n 100 run 例中 选择前99条观测值 GOTO语句与语句标号 GOTO语句使SAS跳到本程序步带有标号的语句继续往下执行 GOTO语句和指定的目标语句必须在同一DATA步 GOTO语句语句格式 GOTOlabel GOTOlabel Label选项规定语句标号来指示GOTO的目标 例8 18应用举例 dataa inputx if1 x 5thengotook putx count 1 ok sumx x cards 1272122422 run 例中 COUNT仅对大于5的数计数 SUMX X对每个观测都执行 dataa inputx if1 x 5thengotook putx count 1 return ok sumx x cards 1272122422 run 例中 COUNT仅对大于5的数计数 SUMX X仅对X在1和5之间的那些观测执行 例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系统立即转到由LINK语句指示的语句标号 并从那里继续执行直到一个RETURN语句 RETURN语句让SAS立即返回到LINK语句后面的那个语句并从那里继续执行 LINK语句和语句标号所在的目标语句必须在同一个DATA步 语句格式LINKlabel 例8 20执行一组语句 databydro inputtype wdstation labeltype stationtype wd depthtowater elev iftype aluy thenlinkcalcu year 1985 return calcu ifstation site 1 thenelev 6650 wd ifstation site 2 thenelev 5500 wd return 返回到link语句下面的year 1985 语句 cards aluv523site 1uppa234site 2aluy666site 2 RETURN语句 RETURN语句告诉SAS系统在DATA步当前位置上停止执行语句 返回到一个预定位置上继续执行 语句格式RETURN RETURN语句的作用 在LINK语句后面 RETURN语句让SAS系统立即返回到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语句后面的二个赋值语句没有被执行 CONTINUE语句 CONTINUE语句停止当前的这次循环过程 继续进行下一次循环 语句格式 CONTINUE 例8 25CONTINUE语句停止当前的循环过程 继续进行下一次循环 dataa doi 1to5 inputname idnostatus ifstatus PT thencontinue 返回到下次循环的开头 inputbenefits 10 output end cards 接上页 Jones9011PTThomas876PTRichards1002FTEye DentalKelly85111PTSmith433FTHMOKelly85111PTSmith433FTHMOJones9011PTThomas876PTRichards1002FTEye Dental Run LEAVE语句 LEAVE语句停止当前DO组循环或SELECT组的处理过程 并继续执行DO组或SELECT组后面的语句 语句格式 LEAVE 例8 26给定条件下停止DO循环的处理过程 dataweek inputname idnostartstatus dept bonu

温馨提示

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

评论

0/150

提交评论