第四篇、第五篇.pptVIP

  • 2
  • 0
  • 约5.9千字
  • 约 38页
  • 2017-07-08 发布于湖北
  • 举报
第四章、第五章 第四章 数据步程序设计 数据步的程序代码一般都是顺序执行,然而,数据步中有一些控制语句,如分支、循环语句,可控制程序的执行流程。 IF DO … END GOTO RETURN 4.1 IF 语句 两种IF语句: ●条件IF语句,带有一个THEN子句和ELSE子句(可选)。只对满足IF语句中所指定条件的观测值才执行SAS语句。如果THEN子句不被执行,那么可选择的ELSE子句给出另一种替换作用。 ●子集IF语句,无THEN子句。用来使SAS系统继续处理那些满足IF 子句中条件的观测值。 IF-THEN/ELSE语句 格式: IF expression THEN statement; ELSE statement; 说明: SAS系统首先对跟在IF后的表达式(expression)求值,如果结果为真(非零),则执行THEN后的语句。如果为假,则去执行ELSE后面的语句,如果没有ELSE子句,则执行下一个语句。 注意: 在THEN之后只允许使用一个语句,如果要执行几个语句,则应用DO-END把要同时执行的几个语句用括起来。 IF-THEN/ELSE 语句可以嵌套 。 4.2 GO TO (GOTO)语句 格式: GOTO label; 或 GO TO label; 说明: GO TO (或者GOTO)语句告诉SAS系统,立即跳向在GOTO语句中指出的语句, 并从那一点开始接着执行。GO TO语句和跳向的目标都必须在一个DATA步中,跳向的目标语句由GO TO语句和目标语句中的标号来标明。 label: 标识GOTO目标的语句标号。 4.3 RETURN语句 格式:RETURN; RETURN语句的功能是将当前观测值输出到数据集,然后立即将程序流程返回DATA步的开始处,而不执行其后的语句。 GO TO语句经常被DO-END语句代替。 4.4 循环 在数据步的一次执行中反复地执行某一部分语句,这种程序的反复执行称为循环。 DATA _NULL_; I=1; K: PUT I; I=I+1; IF I=10 THEN GOTO K; RUN; 4.4 循环 循环语句的格式: DO 指针变量=初值 TO 终值 BY 增量; END ; 说明: DO语句组第一次执行时,指针变量等于初值。当终值和增量都存在时,则每执行到 END语句时, 指针变量+增量作为新的指针变量,并与终值作比较,直到指针变量的值变化超过终值时才停止执行DO语句组。最后一次执行完后,指针变量值超过终值。 4.4 循环 如果仅有初值,则直到一个语句指示跳出循环体才停止循环。如果初值终值均未规定,语句组执行一次。如果未规定增量,增量的缺省值为1。初值和终值是在第一次执行循环以前计算的。 4.4 循环 PUT语句中变量名后面使用等号,是对输出值用变量名来标识。称为命名输出。 如:PUT I=; 4.4 循环 双重循环(循环嵌套): DO…; DO…; …… …… END; END; 4.4 循环 双重循环(循环嵌套): DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X=I*J; PUT @(J*5) X @; END; PUT; END; RUN; 4.4 循环 DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X =I*J; PUT J 1. * I 1. = X 2. +2 @; END; PUT; END; RUN; 4.5 其它程序设计中常用语句 4.5.1 DELETE 语句 格式:DELETE; DELETE语句告诉SAS系统停止处理当前的观测值, 且该观测值不被写入正在建立的数据集中,SAS系统返回DATA步的开始处进行下一次执行。 4.5.2求子集的IF语句 格式: IF expression; 使用求子集IF语句,使SAS系统仅继续处理符合IF语句条件规定的观测值, 因而所得到的数据集是原数据集的子集。 4.5.2求子集的IF语句 如果表达式为真(非零且不缺项),SAS系统继续为正在建立的观测值执行DATA 步中的语句。如果表达式的值是假(0或缺项),SAS系统马上返回到DATA步的开始,去进行另一次执行而不输出上一个观测值。 如: IF SEX=‘F’; 等同于(IF SEX=‘M’ THEN DELETE; 在结果数据集中所包含的仅仅是SEX的值为‘F

文档评论(0)

1亿VIP精品文档

相关文档