Loop no SAS com Do + end

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!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *