Data Step

Wie Daten nach Gruppe aggregiert und summiert werden

Simon 10 vistas

Im täglichen Umgang mit Daten ist es sehr häufig erforderlich, von einer "transaktionalen" Detailebene (mehrere Zeilen pro Kunde) zu einer "synthetischen" Ebene (eine Zeile pro Kunde mit einer Summe) zu wechseln.

1. Das Problem: Salden pro Kunde summieren

Der Benutzer verfügt über einen Datensatz, der Kundennummern, Daten und Beträge (Salden) enthält. Derselbe Kunde (Cust_1) erscheint mehrmals an verschiedenen Daten.


KundeBetragDatum
Cust_1100.0001/01/2008
Cust_1150.0010/01/2008
Cust_1125.0011/01/2008

Ziel: Eine neue Tabelle erstellen, die die Summe der Beträge für jeden Kunden enthält.

  • Erwartetes Ergebnis für Cust_1: 375.00

Note :
In der ursprünglichen Diskussion wurde eine effiziente Lösung mit PROC REPORT bereitgestellt. Obwohl diese Prozedur oft für die Anzeige (Druck) verwendet wird, ist sie sehr leistungsfähig, um Ausgabetabellen zu generieren.
1PROC REPORT DATA=cust nowd out=temp;
2 column cust_no bal;
3 define cust_no / group noprint;
4 define bal / analysis sum noprint;
5RUN;
Code-Analyse:
out=temp: Dies ist die Schlüsseloption. Sie weist SAS© an, den Bericht nicht nur anzuzeigen, sondern das Ergebnis in einer Tabelle namens temp zu speichern.

column cust_no bal: Wählt die zu verwendenden Spalten aus.

define cust_no / group: Zeigt an, dass die Variable cust_no der Gruppierungsschlüssel ist (wie ein "GROUP BY" in SQL).

define bal / analysis sum: Zeigt an, dass die Variable bal analysiert und summiert werden soll.
Note :
PROC SQL (Für SQL-Nutzer)
Dies ist oft die intuitivste Methode, wenn Sie aus der Welt der relationalen Datenbanken kommen.
1PROC SQL;
2 create TABLE temp_sql as
3 select cust_no, sum(bal) as Total_Balance
4 from cust
5 group BY cust_no;
6QUIT;
Hinweis: Die nway-Anweisung ist wichtig, um nur die höchste Zusammenfassungsebene (pro Kunde) beizubehalten und globale Summen zu vermeiden.

Um Daten in SAS© zusammenzufassen:

  1. Verwenden Sie PROC REPORT, wenn Sie Flexibilität benötigen und bereits einen Bericht erstellen.

  2. Verwenden Sie PROC SQL, wenn Sie die Standard-SQL-Syntax bevorzugen.

  3. Verwenden Sie PROC MEANS, wenn die Performance bei sehr großen Datenmengen Ihre Priorität ist.

Expertentipp: Wie Cynthia hervorhebt, zögern Sie nicht, die SAS©-Dokumentation für die Anweisungen OUTPUT (für PROC MEANS) oder die Option OUT= (für TABULATE und REPORT) zu konsultieren. Dort finden Sie oft den Schlüssel, um einen visuellen Bericht in eine Datentabelle umzuwandeln.