Come utilizzare la funzione lag in sas (con esempi)


È possibile utilizzare la funzione LAG in SAS per recuperare i valori spostati di una variabile.

Questa funzione utilizza la seguente sintassi di base:

 lag1_value = lag (value);

Per impostazione predefinita, lag trova il valore precedente di una variabile.

Tuttavia, puoi utilizzare lag2 , lag3 , lagn , ecc. per calcolare i valori a 2 ritardi, a 3 ritardi, a n-lag, ecc.

Gli esempi seguenti mostrano come utilizzare nella pratica la funzione lag.

Esempio 1: valori spostati calcolati per determinate variabili

Supponiamo di avere il seguente set di dati in SAS che mostra le vendite totali effettuate da un negozio in giorni consecutivi:

 /*create dataset*/
data original_data;
    input day $sales;
    datalines ;
1 14
2 19
3 22
4 20
5 16
6 26
7 40
8 43
9 29
10 30
11 35
12 33
;
run ;

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

Il codice seguente mostra come calcolare il valore delle vendite ritardate di 1, 2 e 3 giorni:

 /*create new dataset that shows lagged values of sales*/
data new_data;
    set original_data;
    lag1_sales = lag(sales);
    lag2_sales = lag2(sales);
    lag3_sales = lag3(sales);
run ;

/*view new dataset*/
proc print data = new_data; 

Esempio di funzione di spostamento SAS

Le tre nuove colonne (lag1_sales, lag2_sales, lag3_sales) mostrano le vendite ritardate rispettivamente di uno, due e tre giorni.

Esempio 2: valori spostati calcolati per gruppo

Supponiamo di avere il seguente set di dati in SAS che mostra le vendite totali effettuate da due negozi in giorni consecutivi:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 14
At 19
At 22
At 20
At 16
At 26
B40
B43
B29
B 30
B35
B 33
;
run ;

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

Possiamo utilizzare il seguente codice per calcolare i valori delle vendite ritardate di 1 giorno per negozio:

 /*create new dataset that shows lagged values of sales by store*/
data new_data;
	set original_data;
	by store;
	lag1_sales = lag(sales);
	if first.store then lag1_sales = .;
run ;

/*view new dataset*/
proc print data = new_data; 

Compensazione SAS per gruppo

I valori nella colonna lag1_sales mostrano i valori delle vendite ritardate di 1 giorno per ciascun negozio.

Tieni presente che il valore di lag1_sales nella riga 7 è vuoto perché il valore del ritardo di un giorno per questa riga rappresenta un valore di vendita per un altro negozio.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:

Come normalizzare i dati in SAS
Come rimuovere i duplicati in SAS
Come sostituire i valori mancanti con zero in SAS

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *