sas编程技术数据步循环与转移控制(编辑修改稿)内容摘要:

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。 语句标号 语句标号给出 GO TO, LINK, FILE语句中的选项HEADER=, 或在 INFILE语句中选项 EOF=的位置。 语句格式: LABEL: statement。 LINK语句 LINK语句告诉 SAS系统立即转到由 LINK语句指示的语句标号 , 并从那里继续执行直到一个 RETURN语句。 RETURN语句让 SAS立即返回到 LINK语句后面的那个语句并从那里继续执行。 LINK语句和语句标号所在的目标语句必须在同一个DATA步。 语句格式 LINK label。 例 执行一组语句。 data bydro。 input type $ wd station $。 label type=39。 station type39。 wd=39。 depth to water39。 elev=.。 if type=39。 aluy39。 then link calcu。 year=1985。 return。 calcu: if station=39。 site_139。 then elev=6650wd。 if station=39。 site_239。 then elev=5500wd。 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步开头。 例 让 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。 例 CONTINUE语句停止当前的循环过程 , 继续进行下一次循环。 data a。 do i=1 to 5。 input name $ idno status $。 if status=39。 PT39。 then continue。 /*返回到下次循环的开头 */ input benefits $10.。 output。 end。 cards。 /*接上页 */ Jones 9011 PT Thomas 876 PT Richards 1002 FT Eye/Dental Kelly 85111 PT Smith 433 FT HMO Kelly 85111 PT Smith 433 FT HMO Jones 9011 PT Thomas 876 PT Richards 1002 FT Eye/Dental。 Run。 i name idno status benefits 1 3 Richards 1002 FT Eye/Dental 2 5 Smith 433 FT HMO 3 2 Smith 433 FT HMO 4 5 Richards 1002 FT Eye/Dental LEAVE 语句 LEAVE 语句停止当前 DO组循环或 SELECT组的处理过程 , 并继续执行 DO组或 SELECT组后面的语句。 语句格式: LEAVE。 例 给定条件下停止 DO循环的处理过程 data week。 input name $ idno start status $ dept $。 bonus=0。 do year=start to 1991。 if bonus ge 500 then leave。 bonus+50。 end。 cards。 /*接上页 */ Jones 9011 1990 PT PUB Thomas 876 1976 PT HR Barnes 7899 1991 ft tech Harrell 1250 1975 ft hr Richards 1002 1990 ft dev Kelly 85 1981 pt pub Stone 091 1990 pt mait。 Run。 例中 , 首先由 IF语句检查 BONUS的值 , 当 BONUS的值超过允许的最大值 500时 , 用 LEAVE语句来停止 DO循环的处理过程 name idno start status dept bonus year 1 Jones 9011 1990 PT PUB 100 1992 2 Thomas 876 1976 PT HR 500 1986 3 Barnes 7899 1991 ft tech 50 1992 4 Harrell 1250 1975 ft hr 500 1985 5 Richards 1002 1990 ft dev 100 1992 6 Kelly 85 1981 pt pub 500 1991 7 Stone 91 1990 pt mait 100 1992 第 13章 变量输入输出格式 清华大学经管学院 朱世武 Resdat样本数据: SAS论坛: 本章内容包括:  输入格式;  输出格式;  SAS日期时间存贮方式;  日期时间输入格式;  日期时间输出格式;  缺失值处理。 输入格式 输入格式是 SAS系统用来读入数据值的一个指令。 输入格式形式 $ INFORMAT W.D 选项说明: 通用规则:  所有输入格式必须包含一个点 (.)作为名字的一部分;  对于省略 W和 D值的输入格式,使用系统缺省值。 $ 规定为字符输入格式I N F O R M A T 规定有效 S A S 输入格式W 规定输入数据的列数D 规定数值输入格式中保留小数的位数输入格式使用方法  INPUT语句;  INPUT函数;  DATA步中用 INFORMAT或 ATTRIB语句;  PROC步中用 INFORMAT或 ATTRIB语句。 INPUT语句 例 列格式输入。 input @6 date ddmmyy10. @+1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。