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 中执行其他常见任务:

如何标准化 SAS 中的数据
SAS中如何删除重复项
SAS中如何用零替换缺失值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注