第五部分sas数据步循环与转移控制.pptVIP

  • 0
  • 0
  • 约7.63千字
  • 约 45页
  • 2019-12-03 发布于湖北
  • 举报
data a; input x @@; if 1=x=5 then goto ok; put x; count+1; return; ok: sumx+x; cards; 1 2 7 2 12 24 22 ; run; 例中,COUNT仅对大于5的数计数,SUMX+X仅对X在1和5之间的那些观测执行。 x count sumx 1 1 0 1 2 2 0 3 3 7 1 3 4 2 1 5 5 12 2 5 6 24 3 5 7 22 4 5 例8.19 上面两例中用DO-END语句替代GOTO语句。 data a; input x @@; if x1 or x5 then do; put x; count+1; end; sum+x; cards; 1 2 7 2 12 24 22 ; data a; input x @@; if x1 or x5 then do; put x; count+1; end; else sumx+x; cards; 1 2 7 2 12 24 22 ; 语句标号 语句标号给出GOTO,LINK, FILE语句中的选项HEADER=,或在INFILE语句中选项EOF=的位置。 ? 语句格式: LABEL: statement; LINK语句 LINK语句告诉SAS系统立即转到由LINK语句指示的语句标号,并从那里继续执行直到一个RETURN语句。 RETURN语句让SAS立即返回到LINK语句后面的那个语句并从那里继续执行。 LINK语句和语句标号所在的目标语句必须在同一个DATA步。 语句格式 LINK label; 例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语句下面的year=1985;语句*/ cards; aluv 523 site_1 uppa 234 site_2 aluy 666 site_2 ; type wd station elev year 1 aluv 523 site_1 . 1985 2 uppa 234 site_2 . 1985 3 aluy 666 site_2 4834 1985 RETURN语句 RETURN语句告诉SAS系统在DATA步当前位置上停止执行语句,返回到一个预定位置上继续执行。 语句格式 RETURN; RETURN语句的作用: 在LINK语句后面,RETURN语句让SAS系统立即返回到LINK后面的语句,并继续往下执行; 在FILE语句的选项HEADER=中,RETURN语句让SAS系统立即返回到开始新页之前执行的最后一个语句后面的语句,并继续执行; 在DATA步的其它地方,RETURN语句让SAS系统返回到DATA步开头。 例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,并返回到DATA步的开头。IF语句后面的二个赋值语句没有被执行。 x y z a 1 5 2 3 25 2 3 3 4 . 3 13 6 7 169 4 8 8 9 . CONTINUE语句 CONTINUE语句停止当前的这次循环过程,继续进行下一次循环。 ? 语句格式: CONTINUE; 例8.25 CONTINUE语句停止当前的循环过程,继续进行下一次循环。 data a; do i=1 to 5; input name $ idno status $; if status=PT then continue; /*返回到下次循环的开头*/ input benefits $10.; output; end; cards; /*接上页 */ Jones 9011 PT Thomas 876 PT Richards 1002 FT Eye/Dental Kelly 85111 PT Smith 433

文档评论(0)

1亿VIP精品文档

相关文档