Цикл DO в SAS может использоваться для выполнения некоторого действия определенное количество раз.
В 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 WHILE Цикл
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;
Обратите внимание, что цикл перестал создавать строки, как только x достиг 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