O guia completo para loops do em sas
Um loop DO no SAS pode ser usado para executar uma ação um certo número de vezes.
Existem três loops DO básicos no SAS:
1. FAÇA o laço
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
O que faz : Este loop realiza 10 iterações, de i = 1 a 10, onde o valor de cada linha é igual a i multiplicado por 4.
Quando para : Este loop só para após 10 iterações.
2. FAÇA DURANTE o loop
data data2;
x = 0;
do i = 1 to 10 while(x < 20 );
x = i*4;
output ;
end ;
run ;
O que faz : Este loop tentará realizar 10 iterações, de i = 1 a 10, onde o valor de cada linha é igual a i multiplicado por 4.
Quando parar : Este loop irá parar quando o valor de x exceder 20 ou quando 10 iterações forem concluídas, o que ocorrer primeiro.
3. Faça até o loop
data data3;
x = 0;
do i = 1 to 10 until(x > 30 );
x = i*4;
output ;
end ;
run ;
O que faz : Este loop tentará realizar 10 iterações, de i = 1 a 10, onde o valor de cada linha é igual a i multiplicado por 4.
Quando parar : Este loop irá parar quando o valor de x exceder 30 ou quando 10 iterações forem concluídas, o que ocorrer primeiro.
Os exemplos a seguir mostram como usar cada loop DO na prática.
Exemplo 1: loop DO
Podemos usar o seguinte loop DO para criar um conjunto de dados de 10 linhas:
/*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;
O resultado é um conjunto de dados contendo 10 linhas onde os valores na coluna i variam de 1 a 10 e os valores na coluna x variam de 4 a 40.
Observe que você pode usar drop i para eliminar a coluna de índice do conjunto de dados:
/*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;
Exemplo 2: loop DO WHILE
Podemos usar o seguinte loop DO WHILE para criar um conjunto de dados com variável i de i = 1 a 10, onde o valor de cada linha é igual a i multiplicado por 4 enquanto x é menor que 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;
Observe que o loop parou de criar linhas quando xa atingiu 20.
Exemplo 3: loop DO UNTIL
Podemos usar o seguinte loop DO UNTIL para criar um conjunto de dados com variável i de i = 1 a 10, onde o valor de cada linha é igual a i multiplicado por 4 até que x seja maior que 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;
Observe que o loop parou de criar linhas quando x excedeu 30.
Recursos adicionais
Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:
Como normalizar dados no SAS
Como remover duplicatas no SAS
Como substituir valores ausentes por zero no SAS