第二章 SAS语言基础(1)(6)

2019-01-10 12:43

在循环语句DO-END的内部,也可以嵌入另一个 DO-END语句,这就是嵌套循环.

例:在20年间每年增资2000元(年利率7.5%,按自复利每月计息),计算20年后资产总值. data; capital=0; do year=1 to 20; capital=2000+capital; do month= 1 to 12 ;

interest=capital*(0.075/12);

capital+interest; (等价于capital=capital+interest;) end; output; end;

run;

SAS的循环语句比上面所述还要灵活得多,在常见的步长型循环结构中,可以结合While与Until的使用来终止循环。除了上述的三种循环语句外,还有两种比较特殊的循环结构。

枚举型循环语句: DO

item-1<,…item-n>

|

UNTIL(expression)>;

. . . more SAS statements . . . END;

这个语句是SAS比较特殊的循环结构,可以对枚举的项目依次执行,终止循环就是执行完这些列举的项目。

例如:

do count=2,3,5,7,11,13,17; do month='JAN','FEB','MAR';

do i='01JAN2001'd,'25FEB2001'd,'18APR2001'd; Data ;

do i=3,7, 11 to 23,30,50 by 3 while (i**2<200) ; j=i**2 ; put i= j= ; end; run;

循环变量i取3,7,11,14循环体被执行,当i取17时i的平方为289<200,故循环体不被执行,循环结束.

注意WHILE条件只作用于用逗号隔开的最后一项.

专用于数组的循环语句: DO over array-name; . . . more SAS statements . . . END; 例如: data test;

input sc01-sc05; array s sc01-sc05; do over s; s= s*100; end; cards;

0.95 0.88 0.57 0.90 0.65 ; Run;

这个语句也是SAS比较特殊的循环结构,专用于数组,将数组的每一个元素访问一遍。

9.3 语句块 DO;

...more SAS statements... END;

有时候我们需要把很多语句放在一起执行,特别是放在选择结构和循环结构中,这相当于有些语言的一对{}。 9.4 如何跳出选择结构和循环体?

continue语句:用于跳出当次循环,重新执行循环体并计算是否满足条件。 leave语句:用于终止循环和选择结构,不再执行循环语句而转到循环语句之后紧接的语句。

return语句:用于跳出当次data步自循环,重新执行data步。

go to语句与标号:用于跳转到指定标号的语句,但该语句要求与当前语句是在同一个data步中。在大多数情况下,使用go to语句的程序段完全可以用do;...end;程序块或者if…else结构来代替,而且使用go to语句会使程序显得复杂、难以理解和维护,所以建议还是少用。但是这个语句既然存在还是有一些用处的,可以用来跳出某些深层嵌套的结构,如跳出多层循环。 Data ;

do i=3,7, 11 to 23,30,50; j=i**2 ;

if (i**2>200) then goto flag1; put i= j= ; end;

flag1: put \run;

课堂练习:

1.使用编程方法对class数据集进行加工: (1) 生成sex=?f?的子集 ;

(2) 生成只包含name,height,weight的子集(用 数据集选项或SAS语句);

(3) 增加新变量ratio=weight/height; (4) 用SELECT和OUTPUT语句把BCLASS数 据集拆分为性别为男和女的两个数据集

2. 用DO循环语句读入下列数据表: A 1 31.5 A 2 29.8 A 3 32.4 B 1 40.1 B 2 41.1 B 3 42.0 C 1 50.1 C 2 51.2 C 3 50.8

(1) 生成有3个变量(TYPE,GROUP,Y)9个观测的数 据集DABC;

(2) 用条件IF语句或数据集选项where 生成只包含 TYPE=B的数据集DAC. 1.1

data class_f;

set class; if sex=\

Run; 1.2

data class2 ( keep=name height weight );

set class;

Run;

data class2 ;

set class;

keep name height weight;

Run; 1.3

data class3;

set class;

format ratio 8.4; ratio = height/weight;

Run; 1.4

data classf classm;

set class; select (sex);

when('F') output classf;

when('M') output classm; end;

Run;


第二章 SAS语言基础(1)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:校长许祥源在首都师范大学建校50周年庆祝大会上的讲话

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: