Como usar a instrução retain no sas (com exemplos)


Você pode usar a instrução RETAIN no SAS para especificar uma variável cujo valor não deve ser definido como ausente no início de cada iteração de uma etapa DATA .

A instrução RETAIN pode ser usada para diversas tarefas no SAS, mas aqui estão os três casos de uso mais comuns:

Caso 1: Use RETAIN para calcular uma soma cumulativa

 data new_data;
    set original_data;
    retain cum_sum;
    cum_sum + values_variable;
run ;

Caso 2: use RETAIN para calcular uma soma cumulativa por grupo

 data new_data;
    set original_data;
    by grouping_variable
    retain cum_sum_by_group;
    if first.grouping_variable then cum_sum_by_group = values_variable;
    else cum_sum_by_group = cum_sum_by_group + values_variable;
run ;

Caso 3: Use RETAIN para calcular uma contagem cumulativa por grupo

 data new_data;
    set original_data;
    by grouping_variable
    retain count_by_group;
    if first.grouping_variable then count_by_group = 1 ;
    else count_by_group = count_by_group + 1 ;
run ;

Os exemplos a seguir mostram como usar cada caso na prática com o seguinte conjunto de dados no SAS que mostra as vendas realizadas em dias consecutivos por diferentes lojas:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 4
AT 5
At 2
B 6
B 3
B5
C 3
C 8
C 6
;
run ;

/*view dataset*/
proc print data = original_data; 

Exemplo 1: Use RETAIN para calcular uma soma acumulada

O código a seguir mostra como usar a instrução RETAIN para criar uma nova coluna no conjunto de dados que exibe a soma acumulada das vendas:

 /*calculate cumulative sum of sales*/
data new_data;
    set original_data;
    retain cum_sales;
    cum_sales+sales;
run ;

/*view results*/
proc print data = new_data;

A nova coluna chamada cum_sales contém a soma acumulada dos valores da coluna vendas .

Por exemplo:

  • Soma cumulativa na linha 1: 4
  • Soma cumulativa na linha 2: 4 + 5 = 9
  • Soma cumulativa na linha 3: 4 + 5 + 2 = 11

E assim por diante.

Neste exemplo, a instrução RETAIN define a variável chamada cum_sales como zero e, em cada iteração da etapa DATA , ela simplesmente adiciona o novo valor de vendas ao total acumulado de cum_sales .

Exemplo 2: Use RETAIN para calcular uma soma cumulativa por grupo

O código a seguir mostra como usar a instrução RETAIN para criar uma nova coluna no conjunto de dados que exibe a soma acumulada das vendas por loja:

 /*calculate cumulative sum of sales by store*/
data new_data;
    set original_data;
    by store;
    retain cum_sales_by_store;
    if first.store then cum_sales_by_store = sales;
    else cum_sales_by_store = cum_sales_by_store + sales;
run ;

/*view results*/
proc print data =new_data;

A nova coluna chamada cum_sales_by_store contém a soma acumulada dos valores da coluna vendas , agrupados por loja.

Neste exemplo, a instrução RETAIN define a variável chamada cum_sales_by_store como zero e, em cada iteração da etapa DATA , verifica se o valor na coluna da loja foi a primeira ocorrência desse valor específico.

Caso fosse a primeira ocorrência, o valor de cum_sales_by_store era definido como o valor da coluna vendas. Caso contrário, o valor na coluna sales foi adicionado ao valor existente para cum_sales_by_store .

Exemplo 3: Use RETAIN para calcular uma contagem cumulativa por grupo

O código a seguir mostra como usar a instrução RETAIN para criar uma nova coluna no conjunto de dados que exibe o número cumulativo de vendas por loja:

 /*calculate cumulative count by store*/
data new_data;
    set original_data;
    by store
    retain store_count;
    if first.store then store_count = 1 ;
    else store_count = store_count + 1 ;
run ;

/*view results*/
proc print data = new_data;

A nova coluna chamada store_count contém a contagem cumulativa de cada loja.

Neste exemplo, a instrução RETAIN define a variável chamada store_count como zero e, em seguida, em cada iteração da etapa DATA , verifica se o valor na coluna store foi a primeira ocorrência desse valor específico.

Se esta fosse a primeira ocorrência, o valor de store_count era definido como 1. Caso contrário, um valor 1 era adicionado ao valor existente para store_count .

Recursos adicionais

Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:

Como calcular soma por grupo no SAS
Como calcular a média por grupo no SAS
Como calcular uma média móvel no SAS

Add a Comment

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