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