Uma pergunta que eu já ouvi bastante é: como fazer um loop no SAS? Essa pergunta vale para qualquer linguagem, é uma das coisas mais utilizadas e até agora não tinha escrito nada sobre o tema.
Para quem programa em R vai ser bem intuitivo a sintaxe que será apresentada aqui.
Assim como podemos fazer loops utilizando uma macro no SAS, é possível utilizar a expressão DO no SAS para alterarmos algum índice. Vejamos com um exemplo bem simples:
data teste_loop;
x = 10;
do i = 1 to 10;
x = x + i;
end;
run;
O código acima terá como resultado x = 65, pois terá as seguintes iterações:
- i = 1, x = 10 + 1
- i = 2, x = 11 + 2
- …
- i = 10, x = 55 + 10
Note que você terá 11 iterações, pois o loop irá ocorrer para i = {1,2,3,4,5,6,7,8,9,10}.
E se você quiser utilizar algum intervalo específico, como por exemplo fazer o loop de 2 em 2:
data teste_loop_2;
x = 10;
do i = 1 to 10 by 2;
x = x + i;
end;
run;
O código acima terá como resultado x = 35, pois dessa vez a soma será
x = 10 + 1 + 3 + 5 + 7 + 9 = 35.
Outra alternativa de loop é utilizando o DO WHILE, cuja tradução direta para o português é FAÇA ENQUANTO. Ou seja, o loop ocorrerá até atingir algum limite estabelecido por quem escreveu o código. No trecho demonstrado abaixo, vamos ser mais criativos e imaginar que temos 100 reais investidos em um título que rende 10% ao ano e queremos saber quando o investimento irá atingir o valor de mil reais:
data teste_loop_3;
* x sera o investimento inicial;
x = 100;
* x sera multiplicado por 1,1 (10 porcento);
do while (x <= 1000);
x = x + 1;
ano = ano + 1 * somamos um ano para cada iteracao;
end;
run;
O resultado é de 901 anos.
Essas são as formas mais práticas para se utilizar o DO no SAS e realizar os loops necessários. É possível ainda fazer combinações com o IF e o UNTIL, porém terei que deixar para um post futuro.
Bom proveito!