Hoe de retain-instructie in sas te gebruiken (met voorbeelden)
U kunt de instructie RETAIN in SAS gebruiken om een variabele op te geven waarvan de waarde niet mag worden ingesteld als ontbrekend aan het begin van elke iteratie van een DATA- stap.
De RETAIN- instructie kan voor verschillende taken in SAS worden gebruikt, maar hier zijn de drie meest voorkomende gebruiksscenario’s:
Geval 1: Gebruik RETAIN om een cumulatief bedrag te berekenen
data new_data;
set original_data;
retain cum_sum;
cum_sum + values_variable;
run ;
Geval 2: gebruik RETAIN om een cumulatief bedrag per groep te berekenen
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 ;
Geval 3: Gebruik RETAIN om een cumulatief aantal per groep te berekenen
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 ;
De volgende voorbeelden laten zien hoe u elke case in de praktijk kunt gebruiken met de volgende gegevensset in SAS, waarin de verkopen op opeenvolgende dagen door verschillende winkels worden weergegeven:
/*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;
Voorbeeld 1: Gebruik RETAIN om een lopende som te berekenen
De volgende code laat zien hoe u de RETAIN- instructie gebruikt om een nieuwe kolom in de gegevensset te maken waarin de lopende som van de verkopen wordt weergegeven:
/*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;
De nieuwe kolom genaamd cum_sales bevat de cumulatieve som van de waarden in de verkoopkolom .
Bijvoorbeeld:
- Cumulatief bedrag op regel 1: 4
- Cumulatieve som op regel 2: 4 + 5 = 9
- Cumulatieve som op regel 3: 4 + 5 + 2 = 11
Enzovoort.
In dit voorbeeld stelt de instructie RETAIN de variabele cum_sales in op nul, en voegt vervolgens bij elke iteratie van de DATA- stap eenvoudigweg de nieuwe verkoopwaarde toe aan het lopende totaal van cum_sales .
Voorbeeld 2: Gebruik RETAIN om een cumulatief bedrag per groep te berekenen
De volgende code laat zien hoe u de RETAIN- instructie gebruikt om een nieuwe kolom in de gegevensset te maken waarin de cumulatieve som van de verkopen per winkel wordt weergegeven:
/*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;
De nieuwe kolom genaamd cum_sales_by_store bevat de cumulatieve som van de waarden in de verkoopkolom , gegroepeerd per winkel.
In dit voorbeeld stelt de instructie RETAIN de variabele cum_sales_by_store in op nul, en vervolgens wordt bij elke iteratie van de DATA- stap gecontroleerd of de waarde in de winkelkolom de eerste keer was dat die specifieke waarde voorkomt.
Als dit de eerste keer was, werd de waarde van cum_sales_by_store ingesteld op de waarde in de verkoopkolom. Anders werd de waarde in de verkoopkolom toegevoegd aan de bestaande waarde voor cum_sales_by_store .
Voorbeeld 3: Gebruik RETAIN om een cumulatief aantal per groep te berekenen
De volgende code laat zien hoe u de RETAIN- instructie gebruikt om een nieuwe kolom in de gegevensset te maken waarin het cumulatieve aantal verkopen per winkel wordt weergegeven:
/*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;
De nieuwe kolom met de naam store_count bevat het cumulatieve aantal van elke winkel.
In dit voorbeeld stelt de instructie RETAIN de variabele store_count in op nul en controleert vervolgens bij elke iteratie van de DATA- stap of de waarde in de store-kolom de eerste keer was dat die specifieke waarde voorkomt.
Als dit de eerste keer was, werd de waarde van store_count ingesteld op 1. Anders werd een waarde van 1 toegevoegd aan de bestaande waarde voor store_count .
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:
Hoe de som per groep in SAS te berekenen
Hoe het gemiddelde per groep in SAS te berekenen
Hoe een voortschrijdend gemiddelde in SAS te berekenen