第三章分支、循环语句.ppt

上传人:s****8 文档编号:68959490 上传时间:2022-12-30 格式:PPT 页数:46 大小:155KB
返回 下载 相关 举报
第三章分支、循环语句.ppt_第1页
第1页 / 共46页
第三章分支、循环语句.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《第三章分支、循环语句.ppt》由会员分享,可在线阅读,更多相关《第三章分支、循环语句.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第三章第三章 分支、循环语句分支、循环语句数据步的程序代码一般都是顺序执行,数据步的程序代码一般都是顺序执行,然而,数据步中有一些控制语句,如分支、然而,数据步中有一些控制语句,如分支、循环语句,可控制程序的执行流程。循环语句,可控制程序的执行流程。IFIFDO ENDDO ENDGOTOGOTORETURNRETURNn n格式格式格式格式:IF IF 表达式表达式表达式表达式 THEN THEN 语句语句语句语句;ELSE ;n n说明:说明:说明:说明:SASSAS系统首先对跟在系统首先对跟在系统首先对跟在系统首先对跟在IFIF后的表达式后的表达式后的表达式后的表达式(expressio

2、n)(expression)求值,求值,求值,求值,如果结果为真如果结果为真如果结果为真如果结果为真(非零非零非零非零),则执行则执行则执行则执行THENTHEN后的语句。后的语句。后的语句。后的语句。如果为假,则去执行如果为假,则去执行如果为假,则去执行如果为假,则去执行ELSEELSE后面后面后面后面的语句,如果没有的语句,如果没有的语句,如果没有的语句,如果没有ELSEELSE子句,则执行下一个语句。子句,则执行下一个语句。子句,则执行下一个语句。子句,则执行下一个语句。3.1 IF THEN 语句语句 注意注意:在在在在THENTHEN之后只允许使用一个语句,如果要执之后只允许使用一个

3、语句,如果要执之后只允许使用一个语句,如果要执之后只允许使用一个语句,如果要执行几个语句,则应用行几个语句,则应用行几个语句,则应用行几个语句,则应用DO-ENDDO-END把要同时执行的几把要同时执行的几把要同时执行的几把要同时执行的几个语句括起来。个语句括起来。个语句括起来。个语句括起来。IF-THEN/ELSE IF-THEN/ELSE 语句可以嵌套语句可以嵌套语句可以嵌套语句可以嵌套 例1:If result=85 then group=1;else group=0;例2:if a=3 then do;a=4;put a;end;例3:if a=1 then do;if b=1 the

4、n put a=1&b=1的个案;else put a=1&b=0的个案;end;else put a不等于1的个案;程序程序1.41.4DATA sj3;DATA sj3;INPUT v1 v2;INPUT v1 v2;year=v2*12;year=v2*12;IF v1v2 THEN C=15;ELSE c=12;IF v1=5 and a=5 and aB THEN GOTO OK;IF AB THEN GOTO OK;B=4;B=4;COUNT+1;COUNT+1;RETURN;RETURN;OK:C+1;OK:C+1;CARDS;CARDS;1 5 3 4 2 4 7 8 3 9

5、7 5 4 6 4 5 1 5 3 4 2 4 7 8 3 9 7 5 4 6 4 5 ;PROC PRINT;PROC PRINT;RUN;RUN;3.5 删除部分个案删除部分个案 删删除除数数据据集集里里暂暂时时不不用用的的个个案案可可以以用用DALETE语语句句,或或用用IF 语语句句挖挖据据部部分分有有用用的的个个案案数数据据进进行行统统计计。在在这这种种情情况况下下,并并不不删删除原始数据中的个案。除原始数据中的个案。3.5.1 DELETE 语句语句 格式:格式:格式:格式:DELETE;DELETE;(常与(常与(常与(常与if if语句配合使用)语句配合使用)语句配合使用)语句

6、配合使用)说明:说明:说明:说明:DELETEDELETE语语语语句句句句告告告告诉诉诉诉SASSAS系系系系统统统统停停停停止止止止处处处处理理理理当当当当前前前前的的的的观观观观测测测测值值值值,且且且且该该该该观观观观测测测测值值值值不不不不被被被被写写写写入入入入正正正正在在在在建建建建立立立立的的的的数数数数据据据据集集集集中中中中,SASSAS系系系系统统统统返返返返回回回回DATADATA语语语语句句句句的的的的下下下下一一一一行行行行继继继继续续续续执执执执行行行行语语语语句。句。句。句。例:Data example;Input age sex;If sex=1 then de

7、lete;Cards;25 1 14 1 23 2 22 1 23 1 15 2 20 1;Proc print;Run;3.5.2求子集的求子集的IF语句语句格式格式格式格式:IF :IF 表达式表达式表达式表达式;说明:说明:说明:说明:使用求子集使用求子集使用求子集使用求子集IFIF语句,使语句,使语句,使语句,使SASSAS系统仅继续处理符系统仅继续处理符系统仅继续处理符系统仅继续处理符合合合合IFIF语句条件规定的观测值,语句条件规定的观测值,语句条件规定的观测值,语句条件规定的观测值,因而所得到的数据因而所得到的数据因而所得到的数据因而所得到的数据集是原数据集的子集。集是原数据集的

8、子集。集是原数据集的子集。集是原数据集的子集。如如如如果果果果表表表表达达达达式式式式为为为为真真真真(非非非非零零零零且且且且不不不不缺缺缺缺项项项项),SASSAS系系系系统统统统继继继继续续续续为为为为正正正正在在在在建建建建立立立立的的的的观观观观测测测测值值值值执执执执行行行行DATA DATA 步步步步中中中中的的的的语语语语句句句句。如如如如果果果果表表表表达达达达式式式式的的的的值值值值是是是是假假假假(0(0或或或或缺缺缺缺项项项项),SASSAS系系系系统统统统马马马马上上上上返返返返回回回回到到到到DATADATA步步步步的的的的开开开开始始始始,去去去去进进进进行行行行

9、另另另另一一一一次次次次执执执执行行行行而而而而不不不不输输输输出上一个观测值。出上一个观测值。出上一个观测值。出上一个观测值。如如如如:IF IF SEX=F;SEX=F;等等等等 同同同同 于于于于(IF IF SEX=M SEX=M THEN DELETETHEN DELETE;);););)在结果数据集中所包含的仅仅是在结果数据集中所包含的仅仅是在结果数据集中所包含的仅仅是在结果数据集中所包含的仅仅是SEXSEX的值为的值为的值为的值为 FF的那些观测值。的那些观测值。的那些观测值。的那些观测值。例例例例1 1:DATA A;DATA A;INPUT NAME$SEX$;INPUT N

10、AME$SEX$;CARDS;CARDS;ZHANG F LI M SUN F ZHANG F LI M SUN F WANG F LIU M ZHAO WANG F LIU M ZHAO MM;PROC PRINT;PROC PRINT;RUN;RUN;DATA B;DATA B;SET A;SET A;IF SEX=F;IF SEX=F;/*/*引号必须写,否引号必须写,否引号必须写,否引号必须写,否则默认为变量则默认为变量则默认为变量则默认为变量*/PROC PRINT;PROC PRINT;RUN;RUN;DATA A;INPUT sex$age height;if sex=m;car

11、ds;m 15 165f 12 155 M 11 140;proc print;run;对比例1 if语句的顺序例2:建立Children的子集Baby和Girls。Data Children;Data Children;Input num$sex$month;Input num$sex$month;Cards;Cards;1001 F 8 1002 M 9 1003 F 17 1004 M 141001 F 8 1002 M 9 1003 F 17 1004 M 14;Data Baby;Data Baby;Set Children;Set Children;If month=12;If m

12、onth=12 then delete;If month=12 then delete;Data Girls;Data Girls;Set Children;Set Children;If sex=F then delete;If sex=F then delete;Run;Run;练习练习n n在程序执行时显示总成绩在程序执行时显示总成绩280280的观测。的观测。Data a;Data a;Input num s1-s3;Input num s1-s3;Cards;Cards;1001 79 96 87 1002 89 96 98 1003 87 69 811001 79 96 87 10

13、02 89 96 98 1003 87 69 81;Run;Run;n n在程序执行时显示总成绩在程序执行时显示总成绩280280的观测。的观测。Data a;Data a;Input num s1-s3;Input num s1-s3;Total=sum(of s1-s3);Total=sum(of s1-s3);If Total 280 then put num Total;If Total 280 then put num Total;Cards;Cards;1001 79 96 87 1002 89 96 98 1003 87 69 811001 79 96 87 1002 89 96

14、 98 1003 87 69 81;Run;Run;3.6 循环语句循环语句n n 在在在在数数数数据据据据步步步步的的的的一一一一次次次次执执执执行行行行中中中中反反反反复复复复地地地地执执执执行行行行某某某某一一一一部部部部分分分分语句,这种程序的反复执行称为循环。语句,这种程序的反复执行称为循环。语句,这种程序的反复执行称为循环。语句,这种程序的反复执行称为循环。n n循环语句的格式循环语句的格式循环语句的格式循环语句的格式:DO DO DO DO 指针变量指针变量指针变量指针变量=初值初值初值初值 TO TO TO TO 终值终值终值终值 BY BY BY BY 增量增量增量增量;EN

15、D;END;END;END;说明:说明:1 1、初始值、终值、增量必须是数字型表达、初始值、终值、增量必须是数字型表达式式 2 2、DODO语句组第一次执行时,指针变量等于语句组第一次执行时,指针变量等于初值。当终值和增量都存在时,则每执行到初值。当终值和增量都存在时,则每执行到 ENDEND语句时,语句时,新的指针变量新的指针变量=指针变量指针变量+增量增量,并与终,并与终值作比较,一旦超过终值,便立即停止执行值作比较,一旦超过终值,便立即停止执行DODOENDEND语句组。最后一次执行完后,指针变语句组。最后一次执行完后,指针变量值超过终值。量值超过终值。3 3、如果仅有初值,则直到一个语

16、句指示跳出循环体、如果仅有初值,则直到一个语句指示跳出循环体才停止循环。如果初值终值均未规定,语句组仅才停止循环。如果初值终值均未规定,语句组仅执行一次(执行一次(DO END DO END 相当于括号)。如果未规定相当于括号)。如果未规定增量,增量的缺省值为增量,增量的缺省值为 1 1。4 4、初值和终值是在第一次执行循环以前计算的。、初值和终值是在第一次执行循环以前计算的。例1:Data a;Data a;do i=0 to 9;do i=0 to 9;put i;put i;*Put*Put语句:将变量值显示语句:将变量值显示在日志窗口在日志窗口;end;end;run;run;n nP

17、UT语句中变量名后面使用等号,是对输出值用变量名来标识,称为命名输出。n n如:PUT I=;DATA NUM;DO I=1 TO 10;PUT I=;END;RUN;例例2:DATA _NULL_;I=1;K:PUT I;I=I+1;IF I=10 THEN GOTO K;RUN;例例2:DATA _NULL_;I=1;K:PUT I;I=I+1;IF I=10 THEN GOTO K;RUN;DO I=1 TO 10;PUT I;END;n n双重循环(循环体中嵌套循环)DO;DO;END;END;内循环外循环n n双重循环(循环嵌套):双重循环(循环嵌套):DATA DATA abab;

18、DO I=1 TO 9;DO I=1 TO 9;DO J=1 TO I;DO J=1 TO I;X=I*J;X=I*J;PUT(J*5)X;PUT(J*5)X;END;END;PUT;PUT;END;END;RUN;RUN;打印乘法口诀表1Data a;Data a;Do I=1 to 9;Do I=1 to 9;*被乘数从被乘数从 1 1 循环到循环到 9;9;Do j=1 to I;Do j=1 to I;*乘数从乘数从 1 1 循环到被乘数循环到被乘数 ;S=I*j;S=I*j;Put I “*”j “=“S “;*Put I “*”j “=“S “;*表示输出后表示输出后不换行不换行

19、;End;End;Put;Put;*Put*Put 语句使输出完一个被乘数后换行语句使输出完一个被乘数后换行 ;End;End;Run;Run;打印乘法口诀表2DATA _NULL_;DATA _NULL_;DO I=1 TO 9;DO I=1 TO 9;DO J=1 TO I;DO J=1 TO I;X=I*J;X=I*J;PUT J 1.*I 1.=X 2.+2 PUT J 1.*I 1.=X 2.+2;END;END;PUT;PUT;END;END;RUN;RUN;3.7 数组数组 SASSAS可以把一组同为数值型或同为字符型的变量可以把一组同为数值型或同为字符型的变量合在一起,使用同一

20、个名字称呼,用下标来区分。合在一起,使用同一个名字称呼,用下标来区分。n n 格式格式:ARRAY:ARRAY 数组名数组名 n$n$数组元素的长数组元素的长度度 数组元素数组元素(初始值初始值););说明说明1.1.数组名不能与同一数组名不能与同一DATADATA步中的步中的SASSAS变量同名。变量同名。2.2.nn表示数组元素的个数,也称为下标,是正整表示数组元素的个数,也称为下标,是正整数或数或*号,括号可用号,括号可用或或 。3.3.$表示数组的元素是字符。如表示数组的元素是字符。如 ARRAY rain5 x1-x5;ARRAY rain5 x1-x5;ARRAY ARRAY ab

21、ab*x y z;*x y z;ARRAY c3;ARRAY c3;ARRAY names3$10 child father mother;ARRAY names3$10 child father mother;*表示清除数组中元素个数的计数表示清除数组中元素个数的计数ARRAY tests 3 math chinese english(0,0,0);n 一维数组,维数说明只要说明元素个数,下标从1开始。n数组元素名列表列出这个数组的各个元素实际代表的变量名,以空格分隔。如省略,变量名为数组名后附加序号,例:ARRAY x3;中数组x的各元素名为x1,x2,x3。n初始值表可以省略,这时其初始

22、值为相应数组元素的值(如果其数组元素还没有值则初值为缺失值)。/*/*程序程序1.7*/1.7*/DATA array;DATA array;INPUT a1-a6 b1-b6;INPUT a1-a6 b1-b6;ARRAY test 8 a1-a4 b1-b4;ARRAY test 8 a1-a4 b1-b4;PUT test 4=test5=;PUT test 4=test5=;CARDS;CARDS;1 2 3 4 5 6 101 102 103 104 105 106 1 2 3 4 5 6 101 102 103 104 105 106 11 12 13 14 15 16 111 1

23、12 113 114 115 116 11 12 13 14 15 16 111 112 113 114 115 116 ;PROC PRINT;PROC PRINT;RUN;RUN;SASSAS以变量为元素的数组可以方便变量的循环以变量为元素的数组可以方便变量的循环处理处理 例如,读入例如,读入c1-c10 c1-c10 十个计算机销售额变量,十个计算机销售额变量,p1-p6p1-p6六个打印机销售额变量,希望计算其总和六个打印机销售额变量,希望计算其总和 可以用如下的数组说明与可以用如下的数组说明与DODO循环配合进行:循环配合进行:data sales;data sales;input

24、c1-c10 p1-p6;input c1-c10 p1-p6;ARRAY y 16 c1-c10 p1-p6;ARRAY y 16 c1-c10 p1-p6;do i=1 to 16;do i=1 to 16;total+y i;total+y i;end;end;cards;cards;Proc print;Proc print;Run;Run;n 此例中数组说明用了星号说明维数,求总和时用了累加语句。n 实际上,SAS为变量累加提供了一个专门的函数SUM(OF),比如上面的tot变量可以用SUM(OF comp1-comp12 prin1-prin6)计算。这个例子主要为说明如何循环处理

25、多个变量。n n 多维数组有多个下标值的数组就是多维数组格式:ARRAY A 4,5 test1-test20;说明:A 数组名(下标变量名)4,5 表示4行5列 test1-test20 下标元素 /*/*程序程序3.20*/3.20*/DATA p33;DATA p33;INPUT id v1-v4;INPUT id v1-v4;ARRAY vv4 v1-v4;ARRAY vv4 v1-v4;ARRAY dd4,4 d11 d12 d13 d14 d21-d24 d31-d34 d41-d44;ARRAY dd4,4 d11 d12 d13 d14 d21-d24 d31-d34 d41-d44;DO I=1 TO 4;DO I=1 TO 4;DO J=1 TO 4;DO J=1 TO 4;IF IF vvivvi=j THEN=j THEN DDi,jDDi,j=1;=1;ELSE ELSE DDi,jDDi,j=0;=0;END;END;END;END;CARDS;CARDS;01 1 2 3 4 02 4 1 2 3 03 3 1 2 4 04 2 3 3 1 01 1 2 3 4 02 4 1 2 3 03 3 1 2 4 04 2 3 3 1 ;PROC PRINT;PROC PRINT;RUN;RUN;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com