Verwendung der retain-anweisung in sas (mit beispielen)
Sie können die RETAIN- Anweisung in SAS verwenden, um eine Variable anzugeben, deren Wert zu Beginn jeder Iteration eines DATA- Schritts nicht als fehlend festgelegt werden soll.
Die RETAIN- Anweisung kann für eine Vielzahl von Aufgaben in SAS verwendet werden, aber hier sind die drei häufigsten Anwendungsfälle:
Fall 1: Verwenden Sie RETAIN, um eine kumulative Summe zu berechnen
data new_data;
set original_data;
retain cum_sum;
cum_sum + values_variable;
run ;
Fall 2: Verwenden Sie RETAIN, um eine kumulative Summe pro Gruppe zu berechnen
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 ;
Fall 3: Verwenden Sie RETAIN, um eine kumulative Anzahl pro Gruppe zu berechnen
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 ;
Die folgenden Beispiele zeigen, wie die einzelnen Fälle in der Praxis mit dem folgenden Datensatz in SAS verwendet werden können, der die an aufeinanderfolgenden Tagen von verschiedenen Geschäften getätigten Verkäufe zeigt:
/*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;
Beispiel 1: Verwenden Sie RETAIN, um eine laufende Summe zu berechnen
Der folgende Code zeigt, wie Sie mit der RETAIN- Anweisung eine neue Spalte im Datensatz erstellen, die die laufende Summe der Verkäufe anzeigt:
/*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;
Die neue Spalte namens cum_sales enthält die kumulative Summe der Werte in der Umsatzspalte .
Zum Beispiel:
- Kumulierte Summe in Zeile 1: 4
- Kumulierte Summe in Zeile 2: 4 + 5 = 9
- Kumulierte Summe in Zeile 3: 4 + 5 + 2 = 11
Und so weiter.
In diesem Beispiel setzt die RETAIN- Anweisung die Variable „ cum_sales“ auf Null und fügt dann bei jeder Iteration des DATA- Schritts einfach den neuen Umsatzwert zur laufenden Summe von „cum_sales“ hinzu.
Beispiel 2: Verwenden Sie RETAIN, um eine kumulative Summe pro Gruppe zu berechnen
Der folgende Code zeigt, wie Sie mit der RETAIN- Anweisung eine neue Spalte im Datensatz erstellen, die die kumulierte Summe der Verkäufe nach Filiale anzeigt:
/*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;
Die neue Spalte mit dem Namen cum_sales_by_store enthält die kumulative Summe der Werte in der Verkaufsspalte , gruppiert nach Filiale.
In diesem Beispiel setzt die RETAIN- Anweisung die Variable „ cum_sales_by_store“ auf Null und prüft dann bei jeder Iteration des DATA- Schritts, ob der Wert in der Store-Spalte das erste Vorkommen dieses bestimmten Werts war.
Wenn es das erste Vorkommen war, wurde der Wert von cum_sales_by_store auf den Wert in der Spalte „Sales“ gesetzt. Andernfalls wurde der Wert in der Verkaufsspalte zum vorhandenen Wert für cum_sales_by_store hinzugefügt.
Beispiel 3: Verwenden Sie RETAIN, um eine kumulative Anzahl pro Gruppe zu berechnen
Der folgende Code zeigt, wie Sie mit der RETAIN- Anweisung eine neue Spalte im Datensatz erstellen, die die kumulierte Anzahl der Verkäufe pro Geschäft anzeigt:
/*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;
Die neue Spalte namens „store_count“ enthält die kumulative Anzahl jedes Geschäfts.
In diesem Beispiel setzt die RETAIN- Anweisung die Variable namens „ store_count“ auf Null und prüft dann bei jeder Iteration des DATA- Schritts, ob der Wert in der Spalte „store“ das erste Vorkommen dieses bestimmten Werts war.
Wenn dies das erste Vorkommen war, wurde der Wert von store_count auf 1 gesetzt. Andernfalls wurde ein Wert von 1 zum vorhandenen Wert für store_count hinzugefügt.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in SAS ausführen:
So berechnen Sie die Summe pro Gruppe in SAS
So berechnen Sie den Durchschnitt pro Gruppe in SAS
So berechnen Sie einen gleitenden Durchschnitt in SAS