SAS软件应用基础第四章.ppt

上传人:w****2 文档编号:16566513 上传时间:2020-10-13 格式:PPT 页数:25 大小:479KB
返回 下载 相关 举报
SAS软件应用基础第四章.ppt_第1页
第1页 / 共25页
SAS软件应用基础第四章.ppt_第2页
第2页 / 共25页
SAS软件应用基础第四章.ppt_第3页
第3页 / 共25页
点击查看更多>>
资源描述
第四章 数据步的程序设计 Program Design of Data Step 生物医学工程研究所 Add: 教学八楼三层东 Tel: 82035 Lecturer: 张玉华 Email: Contents 4.1 IF 语句 4.2 GO TO (GOTO)语句 4.3 RETURN语句 4.4 循环语句 DO END 4.5 其它程序设计中常用语句 Delete 求子集的 if语句 数据步的程序代码一般都是顺序执行, 数据步中有一些控制语句,如分支、循环语句,可控制程序的执行流程。 4.1 IF语句 分支:根据某种条件的满足与否来执 行不同的操作 , 称为分支 , 常用 IF 语句完成 。 Branched program 两种 IF语句 : 条件 IF语句 , 带有一个 THEN子句和 ELSE子句 ( ELSE子句可选 ) 。 求子集 IF语句 , 无 THEN和 ELSE子句 。 用来使 SAS系统继续处理那些满足 IF子句中条件的观 测值 。 格式 : IF expression THEN statement; 说明: SAS系统先对 expression求值, 如结果为真 (非零 ),则执行 THEN后的语句 如结果为假,则执行 ELSE后面的语句,如果没有 ELSE 子句,则执行下一个语句 在 THEN之后只允许使用一个语句,如果要执行几 个语句,则应用 DO-END把要同时执行的几个语句 括起来。 IF-THEN/ELSE语句可以嵌套 IF-THEN/ELSE语句 例 1:在程序执行时显示总成绩 280的观测 DATA A; INPUT NUM S1-S3 ; TOTAL=SUM(OF S1-S3); IF TOTAL280 THEN PUT NUM TOTAL; CARDS; 1001 79 96 87 1002 89 96 98 1003 87 69 81 run; 例 2:口腔科体检,记录检查值为: 0-正常, 1-龋齿, 2-龋齿已填充, 3-因龋齿失牙, 4-其他原因失牙。 通过牙齿状态调查判断患龋齿与失牙病情。 Data a; Input x ; If 1=x=1 Else hq=0; If 3=x=3 Else sy=0; Cards; 0 1 2 3 4 ; Proc print; Run; 例 3: Do - End 语句组: 对考试成绩不及格的学生指明需要补考 , 并 在日志窗口显示 。 Data a; Input num x ; If x60 then do; bk=1; put num x bk=; End; Else bk=0; Cards; 101 80 102 90 103 85 104 50 105 100 Run; 例 4: if 嵌套 data ; input X Y; IF X=0 THEN IF Y=0 THEN PUT X ZERO, Y NONZERO; ELSE PUT X ZERO, Y ZERO; ELSE PUT X NONZERO; cards; 0 1 0 0 1 0 0 3 run; 4.2 GO TO (GOTO)语句 格式 : GOTO label; 或 GO TO label; 说明: 告诉 SAS系统,立即跳向在 GOTO语句中指出的语 句,并从那一点开始接着执行。 GOTO语句和跳向的目标都必须在同一个 DATA步中 跳向的目标语句由 GOTO语句和目标语句中的标号 来标明。 label: 标识 GOTO目标的语句标号。 DATA INFO; INPUT X Y ; IF 1=X=5 THEN GO TO OK; X=3; COUNT+1; OK: SUMX+X; CARDS; 3 5 7 9 2.7 3.8 59 10 ; PROC PRINT; Run; OBS X Y COUNT SUMX 1 3 5 0 3 2 3 9 1 6 3 2.7 3.8 1 8.7 4 3 10 2 11.7 4.3 RETURN语句 格式: RETURN; 说明 : RETURN语句的功能是将当前观测值输出到 数据集 , 然后立即将程序流程返回 DATA步 的开始处 , 而不执行其后的语句 。 GOTO和 RETURN语句经常被 DO-END语句代替 。 DATA RECORD; INPUT X Y ; IF 1=X=5 THEN GOTO OK; X=3; COUNT+1; RETURN; OK: SUMX+X; CARDS; 3 5 7 9 2.7 3.8 59 10 PROC PRINT; OBS X Y COUNT SUMX 1 3 5 0 3 2 3 9 1 3 3 2.7 3.8 1 5.7 4 3 10 2 5.7 DATA RECORD; INPUT X Y ; IF X5 THEN DO; X=3; COUNT+1; END; ELSE SUMX+X; CARDS; 3 5 7 9 2.7 3.8 59 10 PROC PRINT; DATA RECORD; INPUT X Y ; IF X5 THEN DO; X=3; COUNT+1; END; SUMX+X; CARDS; 3 5 7 9 2.7 3.8 59 10 PROC PRINT; 4.4 循环 (Cycling program)设计 在数据步的一次执行中反复地执行某 一部分语句 , 这种程序的反复执行称为 循环 。 例: DATA _NULL_; I=1; K: PUT I; I=I+1; IF I=10 THEN GOTO K; RUN; DATA _NULL_; DO I=1 TO 10; PUT I=; END; RUN; 命名输出 格式 :DO 指针变量 =初值 TO 终值 BY 增量 ; END ; 说明: DO语句组第一次执行时 , 指针变量等于初值 。 每执行到 END语句时, 指针变量 +增量 作为新的指针 变量,并与终值作比较,直到指针变量的值变化超 过终值时才停止。 最后一次执行完后 , 指针变量值超过终值 。 如果仅有初值 , 则直到一个语句指示跳出循环体才 停止循环 。 如果初值终值均未规定 , 语句组执行一次 。 如果未规定增量 , 增量的缺省值为 1。 例:打印乘法九九表 DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X=I*J; PUT (J*5) X ; END; PUT; END; RUN; 绝对 列指 针 控制 续 行符,在一个数据 步有多个 input (put) 时 用 换 行 例:打印乘法九九表 DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X=I*J; PUT I * J = X ; END; PUT; END; RUN; 利用双重循环组织分类数据: 例:研究某降糖药不同剂量的 疗效,测量 II型糖尿病患 者治疗 4周后餐后 2小时血 糖下降值( mmol/L),如 表 : 编号 高剂量 低剂量 对照组 1 5.6 -0.6 12.4 2 9.5 5.7 0.9 3 6.0 12.8 7.0 4 8.7 4.1 3.9 5 9.2 -1.8 1.6 6 5.0 -0.1 6.4 7 3.5 6.3 3.0 8 5.8 12.7 3.9 9 8.0 9.8 2.2 10 15.5 12.6 1.1 11 11.8 2.0 2.7 12 16.3 5.6 7.8 13 11.8 7.0 6.9 14 14.6 7.9 1.5 15 4.9 4.3 9.4 16 8.1 6.4 3.8 Data a; Do i=1 to 16; Do j=1 to 3; Input x ; Output; * Output:直接将变量当前值写入数据集 ; End; End; Cards; 5.6 -0.6 12.4 9.5 5.7 0.9 6.0 12.8 7.0 8.7 4.1 3.9 9.2 -1.8 1.6 5.0 -0.1 6.4 3.5 6.3 3.0 5.8 12.7 3.9 8.0 9.8 2.2 15.5 12.6 1.1 11.8 2.0 2.7 16.3 5.6 7.8 11.8 7.0 6.9 14.6 7.9 1.5 4.9 4.3 9.4 8.1 6.4 3.8 ; Proc anova; Class j; Model x= j; Run; 4.5 其它程序设计中常用语句 4.5.1 DELETE 语句 格式: DELETE; 说明:告诉 SAS系统停止处理当前的观 测值 , 且该观测值不被写入正在建立的 数据集中 , SAS系统返回 DATA步的开始处 进行下一次执行 。 DATA STUDENTS; INPUT ID 1-5 ENGLISH 6-8 TEST1 14-16 TEST2 18-20; IF ENGLISH60 THEN DELETE; TOTAL=SUM(OF TEST1 TEST2 ENGLISH); CARDS; 88011100 78 90 88012 97 86 100 88013 59 68 88 ; RUN; 4.5.2求子集的 IF语句 格式 : IF expression; 说明: 使用求子集 IF语句 , 使 SAS系统仅继续处理符 合 IF语句条件规定的观测值 , 所得到的数据集是 原数据集的子集 。 如果表达式为真 (非零且不缺项 ), SAS系统继 续为正在建立的观测值执行 DATA步中的语句 。 如果表达式的值是假 (0或缺项 ), SAS系统马 上返回到 DATA步的开始 , 去进行另一次执行而不 输出上一个观测值 。 如 : IF SEX=F; 例:建立 Children的子集 Baby和 Girls。 DATA CHILDREN; INPUT NUM $ SEX $ MONTH ; CARDS; 1001 F 8 1002 M 9 1003 F 17 1004 M 14 DATA BABY; SET CHILDREN; IF MONTH=12 then delete; Data Girls; Set Children; If sex = F then delete; Run;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!