Sas 中 do 循环的完整指南
SAS 中的DO 循环可用于执行某个操作一定次数。
SAS 中有三种基本的 DO 循环:
1. 制作循环
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
它的作用:此循环执行 10 次迭代,从 i = 1 到 10,其中每行的值等于 i 乘以 4。
何时停止:该循环仅在 10 次迭代后停止。
2. DO DURING 循环
data data2;
x = 0;
do i = 1 to 10 while(x < 20 );
x = i*4;
output ;
end ;
run ;
它的作用:此循环将尝试执行 10 次迭代,从 i = 1 到 10,其中每行的值等于 i 乘以 4。
何时停止:当 x 的值超过 20 或完成 10 次迭代(以先到者为准)时,此循环将停止。
3. 执行直到循环
data data3;
x = 0;
do i = 1 to 10 until(x > 30 );
x = i*4;
output ;
end ;
run ;
它的作用:此循环将尝试执行 10 次迭代,从 i = 1 到 10,其中每行的值等于 i 乘以 4。
何时停止:当 x 的值超过 30 或完成 10 次迭代(以先到者为准)时,此循环将停止。
以下示例展示了如何在实践中使用每个 DO 循环。
示例 1:DO 循环
我们可以使用以下DO 循环来创建 10 行的数据集:
/*use DO loop to create dataset*/
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data1;
结果是一个包含 10 行的数据集,其中 i 列中的值范围为 1 到 10,x 列中的值范围为 4 到 40。
请注意,您可以使用drop i从数据集中删除索引列:
/*use DO loop to create dataset*/
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
drop i;
run ;
/*view dataset*/
proc print data =data1;
示例 2:DO WHILE 循环
我们可以使用以下DO WHILE 循环创建一个变量 i 从 i = 1 到 10 的数据集,其中每行的值等于 i 乘以 4 ,而x 小于 20:
/*use DO WHILE loop to create dataset*/
data data2;
x = 0;
do i = 1 to 10 while (x < 20 );
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data2;
请注意,一旦 xa 达到 20,循环就会停止创建行。
示例 3:DO UNTIL 循环
我们可以使用下面的DO UNTIL 循环创建一个变量 i 从 i = 1 到 10 的数据集,其中每行的值等于 i 乘以 4 ,直到x 大于 30:
/*use DO UNTIL loop to create dataset*/
data data3;
x = 0;
do i = 1 to 10 until (x > 30 );
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data3;
请注意,一旦 x 超过 30,循环就会停止创建行。
其他资源
以下教程解释了如何在 SAS 中执行其他常见任务: