Hoe de lag-functie in sas te gebruiken (met voorbeelden)


Je kunt de LAG- functie in SAS gebruiken om verschoven waarden van een variabele op te halen.

Deze functie gebruikt de volgende basissyntaxis:

 lag1_value = lag (value);

Standaard zoekt lag naar de vorige waarde van een variabele.

U kunt echter lag2 , lag3 , lagn , enz. gebruiken. om waarden te berekenen bij 2 vertragingen, bij 3 vertragingen, bij n-vertragingen, enz.

De volgende voorbeelden laten zien hoe u de lag-functie in de praktijk kunt gebruiken.

Voorbeeld 1: Verschoven waarden berekend voor bepaalde variabelen

Laten we zeggen dat we de volgende gegevensset in SAS hebben die de totale omzet van een winkel op opeenvolgende dagen weergeeft:

 /*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; 

De volgende code laat zien hoe u de waarde kunt berekenen van verkopen met een vertraging van 1, 2 en 3 dagen:

 /*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; 

Voorbeeld van SAS-shiftfunctie

De drie nieuwe kolommen (lag1_sales, lag2_sales, lag3_sales) geven de verkopen weer met respectievelijk één, twee en drie dagen vertraging.

Voorbeeld 2: verschoven waarden berekend per groep

Laten we zeggen dat we de volgende gegevensset in SAS hebben die de totale omzet weergeeft die door twee winkels op opeenvolgende dagen is gerealiseerd:

 /*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; 

We kunnen de volgende code gebruiken om 1-dag vertraagde verkoopwaarden per winkel te berekenen:

 /*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; 

SAS-compensatie per groep

De waarden in de kolom lag1_sales geven de 1-dag vertraagde verkoopwaarden voor elke winkel weer.

Houd er rekening mee dat de waarde van lag1_sales in rij 7 leeg is, omdat de lagwaarde van één dag voor deze rij een verkoopwaarde voor een andere winkel vertegenwoordigt.

Aanvullende bronnen

In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:

Gegevens normaliseren in SAS
Hoe duplicaten in SAS te verwijderen
Hoe ontbrekende waarden te vervangen door nul in SAS

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert