Você conhece a instrução RETAIN para um DATA STEP?
A instrução RETAIN permite que os valores sejam mantidos entre observações/registros/linhas, permitindo uma complexa manipulação de dados. No Data Step do SAS é bastante simples fazer comparação de variáveis ou cálculos de dados dentro da mesma observaçõe. Porém, às vezes é necessário realizar cálculos entre observações. A instrução RETAIN pode ser usada para manter um dado valor da iteração atual do Data Step para o próximo passo Step. Caso contrário, SAS define automaticamente esses valores como vazios antes cada iteração. A instrução RETAIN, se não usada sabiamente, pode resultar em dados inesperados e muitas vezes despercebidos erros de processamento. Vejamos algums usos do Retain
Exemplo 1: Acumular valores
/* Simples Exemplo */ data novo; set original; retain acum_vendas; acum_vendas+venda; run;
Existem várias abordagens para inicialização de variáveis com a instrução RETAIN, e cada abordagem tem sua utilidade única de acordo com as necessidades da programação. A lista abaixo mostra alguns exemplos de especificação e inicialização de variáveis com a instrução RETAIN:
a) RETAIN var1; define o valor inicial de var1 como vazio(missing).
b) RETAIN var1-var3 0; define os valores iniciais de var1, var2, var3 como 0.
c) RETAIN var1-var3 (0); apenas var1 está definido como 0, var2-3 está definido como vazio.
d) RETAIN var1 0 var2 1 var3 1; define o valor inicial de var1 como 0, var2 e var3 como 1.
e) RETAIN var1-var3 (0 1); define os valores iniciais de var1 como 0; var2 para 1, var3 para vazio.
f) REATIN var1-var3 (1 2 3); ou RETAIN var1-var3 (1,2,3); define var1 como 1, var2 como 2, var3 como 3. A vírgula é opcional.
g) RETAIN; ou RETAIN _ALL_; [ou _CHAR_, _NUMERIC_]; todas as variáveis serão retidas. A diferença é que o primeiro faz com que todas as variáveis sejam retidas, enquanto o segundo afeta apenas aquelas variáveis definidas antes da instrução RETAIN. Se o nome de variável for especificado na instrução RETAIN e um valor inicial não for especificado, a variável não é gravada no dataset e uma nota informando que a variável não é inicializada é gravada no log do SAS. Se um valor inicial for especificado, a variável será gravado no dataset de saída.
Referências: Effective Use of RETAIN Statement in SAS® Programming (Microsoft Word - D14-2009 rough final.doc (mw...
How to Use the RETAIN Statement in SAS (With Examples) - Statology
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.