Come utilizzare l'istruzione retain in sas (con esempi)
È possibile utilizzare l’istruzione RETAIN in SAS per specificare una variabile il cui valore non deve essere impostato come mancante all’inizio di ogni iterazione di un passaggio DATA .
L’istruzione RETAIN può essere utilizzata per una varietà di attività in SAS, ma ecco i tre casi d’uso più comuni:
Caso 1: utilizzare RETAIN per calcolare una somma cumulativa
data new_data;
set original_data;
retain cum_sum;
cum_sum + values_variable;
run ;
Caso 2: utilizzare RETAIN per calcolare una somma cumulativa per gruppo
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: utilizzare RETAIN per calcolare un conteggio cumulativo per gruppo
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 ;
I seguenti esempi mostrano come utilizzare nella pratica ciascun caso con il seguente set di dati in SAS che mostra le vendite effettuate in giorni consecutivi da diversi negozi:
/*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;
Esempio 1: utilizzare RETAIN per calcolare una somma parziale
Il codice seguente mostra come utilizzare l’istruzione RETAIN per creare una nuova colonna nel set di dati che visualizza la somma parziale delle vendite:
/*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;
La nuova colonna denominata cum_sales contiene la somma cumulativa dei valori nella colonna vendite .
Per esempio:
- Somma cumulativa sulla riga 1: 4
- Somma cumulativa sulla riga 2: 4 + 5 = 9
- Somma cumulativa sulla riga 3: 4 + 5 + 2 = 11
E così via.
In questo esempio, l’istruzione RETAIN imposta la variabile denominata cum_sales su zero, quindi ad ogni iterazione del passaggio DATA aggiunge semplicemente il nuovo valore delle vendite al totale parziale di cum_sales .
Esempio 2: utilizzare RETAIN per calcolare una somma cumulativa per gruppo
Il codice seguente mostra come utilizzare l’istruzione RETAIN per creare una nuova colonna nel set di dati che visualizza la somma cumulativa delle vendite per negozio:
/*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;
La nuova colonna denominata cum_sales_by_store contiene la somma cumulativa dei valori della colonna vendite , raggruppati per negozio.
In questo esempio, l’istruzione RETAIN imposta la variabile denominata cum_sales_by_store su zero e quindi, a ogni iterazione del passaggio DATA , controlla se il valore nella colonna store era la prima occorrenza di quel particolare valore.
Se era la prima occorrenza, il valore di cum_sales_by_store veniva impostato sul valore nella colonna vendite. In caso contrario, il valore nella colonna vendite è stato aggiunto al valore esistente per cum_sales_by_store .
Esempio 3: utilizzare RETAIN per calcolare un conteggio cumulativo per gruppo
Il codice seguente mostra come utilizzare l’istruzione RETAIN per creare una nuova colonna nel set di dati che visualizza il numero cumulativo di vendite per negozio:
/*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;
La nuova colonna denominata store_count contiene il conteggio cumulativo di ciascun negozio.
In questo esempio, l’istruzione RETAIN imposta la variabile denominata store_count su zero e quindi, a ogni iterazione del passaggio DATA , controlla se il valore nella colonna store era la prima occorrenza di quel particolare valore.
Se questa era la prima occorrenza, il valore di store_count veniva impostato su 1. In caso contrario, veniva aggiunto il valore 1 al valore esistente di store_count .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:
Come calcolare la somma per gruppo in SAS
Come calcolare la media per gruppo in SAS
Come calcolare una media mobile in SAS