BookmarkSubscribeRSS Feed
SAS Programação – Retain
CaioFlorencio
SAS Employee

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

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Article Tags