《SAS(统计分析系统).ppt》由会员分享,可在线阅读,更多相关《SAS(统计分析系统).ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章 数据步程序设计数据步程序设计 Program Design of Data Step主讲人:李桥主讲人:李桥主要内容主要内容n n循环程序设计循环程序设计 DO 语句语句n n分支程序设计分支程序设计 IF 语句语句循环程序设计循环程序设计n n循环:在数据步的一次执行中,某些语句需要反复执行许循环:在数据步的一次执行中,某些语句需要反复执行许循环:在数据步的一次执行中,某些语句需要反复执行许循环:在数据步的一次执行中,某些语句需要反复执行许多遍,称为循环。多遍,称为循环。多遍,称为循环。多遍,称为循环。n nDo Do End End 语句:语句:语句:语句:n n格式:格式:
2、格式:格式:DO I=A to B by C;DO I=A to B by C;END;END;n n说明:说明:说明:说明:DODO语句组第一次执行时,指针变量语句组第一次执行时,指针变量语句组第一次执行时,指针变量语句组第一次执行时,指针变量 I I 等于初值等于初值等于初值等于初值 A A。当终值。当终值。当终值。当终值 B B 和增量和增量和增量和增量 C C 都存在时,则每执行到都存在时,则每执行到都存在时,则每执行到都存在时,则每执行到 ENDEND语句时,语句时,语句时,语句时,指针变量指针变量指针变量指针变量+增量增量增量增量 作为新的指针变量,并与终值作比较,直到指针变量的值
3、变化超作为新的指针变量,并与终值作比较,直到指针变量的值变化超作为新的指针变量,并与终值作比较,直到指针变量的值变化超作为新的指针变量,并与终值作比较,直到指针变量的值变化超过终值时才停止执行过终值时才停止执行过终值时才停止执行过终值时才停止执行DODO语句组。最后一次执行完后,指针变量值语句组。最后一次执行完后,指针变量值语句组。最后一次执行完后,指针变量值语句组。最后一次执行完后,指针变量值超过终值。超过终值。超过终值。超过终值。n n例例例例1 1:循环:循环:循环:循环1010次。次。次。次。Data a;Data a;do i=0 to 9;do i=0 to 9;put i;put
4、 i;*Put*Put语句:将变量值显示在日志窗口语句:将变量值显示在日志窗口语句:将变量值显示在日志窗口语句:将变量值显示在日志窗口;end;end;run;run;n n注意:如果初值终值均未规定,语句组仅执行一次注意:如果初值终值均未规定,语句组仅执行一次注意:如果初值终值均未规定,语句组仅执行一次注意:如果初值终值均未规定,语句组仅执行一次(DO END DO END 相当于括号)。如果未规定增量,增量的相当于括号)。如果未规定增量,增量的相当于括号)。如果未规定增量,增量的相当于括号)。如果未规定增量,增量的缺省值为缺省值为缺省值为缺省值为 1 1。初值和终值是在第一次执行循环以前计
5、算。初值和终值是在第一次执行循环以前计算。初值和终值是在第一次执行循环以前计算。初值和终值是在第一次执行循环以前计算的。的。的。的。n n双重循环:循环体中嵌套循环双重循环:循环体中嵌套循环双重循环:循环体中嵌套循环双重循环:循环体中嵌套循环n n例例例例2 2:打印乘法口诀表:打印乘法口诀表:打印乘法口诀表:打印乘法口诀表Data 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 循环到被乘数循环到被乘数循环到被乘数
6、循环到被乘数 ;S=I*j;S=I*j;Put I Put I “*”j j “=“S S “;*;*表示输出后不换行表示输出后不换行表示输出后不换行表示输出后不换行 ;End;End;Put;Put;*Put*Put 语句使输出完一个被乘数后换行语句使输出完一个被乘数后换行语句使输出完一个被乘数后换行语句使输出完一个被乘数后换行 ;End;End;Run;Run;n n利用双重循环组织分类数据:利用双重循环组织分类数据:利用双重循环组织分类数据:利用双重循环组织分类数据:n n例:研究某降糖药不同剂量的例:研究某降糖药不同剂量的例:研究某降糖药不同剂量的例:研究某降糖药不同剂量的疗效,测量疗
7、效,测量疗效,测量疗效,测量IIII型糖尿病患者治型糖尿病患者治型糖尿病患者治型糖尿病患者治疗疗疗疗4 4周后餐后周后餐后周后餐后周后餐后2 2小时血糖下降值小时血糖下降值小时血糖下降值小时血糖下降值(mmol/Lmmol/L),如表),如表),如表),如表:编号编号编号编号高剂量高剂量高剂量高剂量低剂量低剂量低剂量低剂量对照组对照组对照组对照组1 15.65.6-0.6-0.612.412.42 29.59.55.75.70.90.93 36.06.012.812.87.07.04 48.78.74.14.13.93.95 59.29.2-1.8-1.81.61.66 65.05.0-0.1
8、-0.16.46.47 73.53.56.36.33.03.08 85.85.812.712.73.93.99 98.08.09.89.82.22.2101015.515.512.612.61.11.1111111.811.82.02.02.72.7121216.316.35.65.67.87.8131311.811.87.07.06.96.9141414.614.67.97.91.51.515154.94.94.34.39.49.416168.18.16.46.43.83.8Data a;Data a;Do i=1 to 16;Do i=1 to 16;Do j=1 to 3;Do j=1
9、to 3;Input x;Input x;Output;Output;*Output*Output:直接将变量当前值写入数据集:直接将变量当前值写入数据集:直接将变量当前值写入数据集:直接将变量当前值写入数据集;End;End;End;End;Cards;Cards;5.6-0.6 12.4 9.5 5.7 0.9 6.0 12.8 7.05.6-0.6 12.4 9.5 5.7 0.9 6.0 12.8 7.08.7 4.1 3.9 9.2-1.8 1.6 5.0-0.1 6.4 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
10、 3.9 8.0 9.8 2.23.5 6.3 3.0 5.8 12.7 3.9 8.0 9.8 2.215.5 12.6 1.1 11.8 2.0 2.7 16.3 5.6 7.815.5 12.6 1.1 11.8 2.0 2.7 16.3 5.6 7.811.8 7.0 6.9 14.6 7.9 1.5 4.9 4.3 9.411.8 7.0 6.9 14.6 7.9 1.5 4.9 4.3 9.48.1 6.4 3.8 8.1 6.4 3.8;proc freq;proc freq;tables i*j;tables i*j;weight x;weight x;Proc anova;P
11、roc anova;Class i j;Class i j;Model x=j;Model x=j;Run;Run;分支程序设计分支程序设计n n分支:根据某种条件的满足与否来执行不同的操分支:根据某种条件的满足与否来执行不同的操分支:根据某种条件的满足与否来执行不同的操分支:根据某种条件的满足与否来执行不同的操作,称为分支,常用作,称为分支,常用作,称为分支,常用作,称为分支,常用 IF IF 语句完成。语句完成。语句完成。语句完成。n nIF IF Then/Else Then/Else 语句:语句:语句:语句:n n语句格式:语句格式:语句格式:语句格式:IF Then ;IF Then
12、 ;Else ;Else ;n n说明:首先对说明:首先对说明:首先对说明:首先对 IF IF 后面的表达式(后面的表达式(后面的表达式(后面的表达式(ExpressionExpression)求值,)求值,)求值,)求值,如果表达式值为真(非如果表达式值为真(非如果表达式值为真(非如果表达式值为真(非 0 0),则执行),则执行),则执行),则执行 Then Then 后面跟的语后面跟的语后面跟的语后面跟的语句(句(句(句(Statement 1Statement 1),而忽略),而忽略),而忽略),而忽略 Else Else 子句;如果表达式值子句;如果表达式值子句;如果表达式值子句;如果
13、表达式值为假(为假(为假(为假(0 0),则忽略),则忽略),则忽略),则忽略 Then Then 子句,转而去执行子句,转而去执行子句,转而去执行子句,转而去执行 Else Else 子句,子句,子句,子句,如果没有如果没有如果没有如果没有 Else Else 子句,则不做任何操作,转而执行子句,则不做任何操作,转而执行子句,则不做任何操作,转而执行子句,则不做任何操作,转而执行 IF IF 语语语语句组后面的语句。句组后面的语句。句组后面的语句。句组后面的语句。n n例例例例1 1:在程序执行时显示总成绩:在程序执行时显示总成绩:在程序执行时显示总成绩:在程序执行时显示总成绩280280的
14、观测。的观测。的观测。的观测。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 98 1003 87 69 81;Run;Run;n n例例例例2 2:通过牙齿状态调查判断患龋齿与失牙病情。:通
15、过牙齿状态调查判断患龋齿与失牙病情。:通过牙齿状态调查判断患龋齿与失牙病情。:通过牙齿状态调查判断患龋齿与失牙病情。口腔科体检,记录检查值为:口腔科体检,记录检查值为:口腔科体检,记录检查值为:口腔科体检,记录检查值为:0-0-正常,正常,正常,正常,1-1-龋齿,龋齿,龋齿,龋齿,2-2-龋齿已填充,龋齿已填充,龋齿已填充,龋齿已填充,3-3-因龋齿失牙,因龋齿失牙,因龋齿失牙,因龋齿失牙,4-4-其他原因失牙。其他原因失牙。其他原因失牙。其他原因失牙。Data a;Data a;Input x;Input x;If 1=x=3 Then hq=1;If 1=x=1&x=1&x=3;Else
16、 hq=0;Else hq=0;If 3=x=4 Then sy=1;If 3=x=3&x=3&x=4;Else sy=0;Else sy=0;Cards;Cards;0 1 2 3 40 1 2 3 4;Proc print;Proc print;Run;Run;n n例例例例3 3:通过分支建立不同类别数据集:通过分支建立不同类别数据集:通过分支建立不同类别数据集:通过分支建立不同类别数据集按性别分别建立两个数据集按性别分别建立两个数据集按性别分别建立两个数据集按性别分别建立两个数据集 Boy Boy 和和和和 GirlGirl。Data boy girl;Data boy girl;In
17、put name$sex$age h w;Input name$sex$age h w;If sex=If sex=MM then output boy;then output boy;Else output girl;Else output girl;Cards;Cards;Zhang M 10 140 40Zhang M 10 140 40Wang F 10 142 38Wang F 10 142 38Li M 11 150 45Li M 11 150 45Zhao F 11 145 42Zhao F 11 145 42;Run;Run;n n例例例例4 4:利用分支选择满足条件的数据:利
18、用分支选择满足条件的数据:利用分支选择满足条件的数据:利用分支选择满足条件的数据将成绩不及格的观测删除。将成绩不及格的观测删除。将成绩不及格的观测删除。将成绩不及格的观测删除。Data a;Data a;Input num x;Input num x;If x60 then delete;If x60 then delete;*Delete*Delete语句:删除某观测值语句:删除某观测值语句:删除某观测值语句:删除某观测值;Cards;Cards;101 80101 80102 90 102 90 103 85103 85104 50104 50105 100105 100;Proc pri
19、nt;Proc print;Run;Run;n n例例例例5 5:Do Do End End 语句组:语句组:语句组:语句组:统计考试平均成绩,不及格的学生指明需要补考,并在日志窗口统计考试平均成绩,不及格的学生指明需要补考,并在日志窗口统计考试平均成绩,不及格的学生指明需要补考,并在日志窗口统计考试平均成绩,不及格的学生指明需要补考,并在日志窗口显示。显示。显示。显示。Data a;Data a;Input num x;Input num x;If x60 then do;If x60 then do;bk=1;bk=1;put num x bk=;put num x bk=;End;End
20、;Else bk=0;Else bk=0;Cards;Cards;101 80101 80102 90 102 90 103 85103 85104 50104 50105 100105 100;Proc means;Proc means;Var x;Var x;Run;Run;n n应用应用应用应用 IF IF 语句求数据集的子集语句求数据集的子集语句求数据集的子集语句求数据集的子集n n作用:使作用:使作用:使作用:使SASSAS仅处理符合仅处理符合仅处理符合仅处理符合 IF IF 语句条件的观测,而不符语句条件的观测,而不符语句条件的观测,而不符语句条件的观测,而不符合条件的观测不做任何
21、处理,从而得到原数据集的子合条件的观测不做任何处理,从而得到原数据集的子合条件的观测不做任何处理,从而得到原数据集的子合条件的观测不做任何处理,从而得到原数据集的子集。集。集。集。n n语句格式:语句格式:语句格式:语句格式:IF ;IF ;n n说明:当数据步的某次执行时,如果表达式值为真说明:当数据步的某次执行时,如果表达式值为真说明:当数据步的某次执行时,如果表达式值为真说明:当数据步的某次执行时,如果表达式值为真(非(非(非(非0 0),),),),SASSAS继续执行;如果表达式值为假(继续执行;如果表达式值为假(继续执行;如果表达式值为假(继续执行;如果表达式值为假(0 0),),
22、),),SASSAS马上停止对本观测的执行,返回马上停止对本观测的执行,返回马上停止对本观测的执行,返回马上停止对本观测的执行,返回DataData步的开始,处步的开始,处步的开始,处步的开始,处理下一观测而不输出本观测。理下一观测而不输出本观测。理下一观测而不输出本观测。理下一观测而不输出本观测。n n例:建立例:建立例:建立例:建立ChildrenChildren的子集的子集的子集的子集BabyBaby和和和和GirlsGirls。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 month=12 then delete;If month=12 then delete;Data Girls;Data Girls;Set Children;Set Children;If sex If sex F F then delete;then delete;Run;Run;