Veröffentlicht am :
Reporting SASHELP

Erstellung eines ODS-Dokuments mit mehreren Ausgaben

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Programm beginnt mit der Erstellung von drei Arbeitstabellen: `class`, `shoes` und `cars`, basierend auf den entsprechenden Tabellen aus der SASHELP-Bibliothek. Die `shoes`-Tabelle wird gefiltert, um nur die Regionen 'Canada' und 'Pacific' zu behalten. Anschließend werden alle offenen ODS-Ziele geschlossen und ein neues ODS-Dokument namens `doc_results` gestartet. Mehrere Berichte werden mit `PROC REPORT` für die verschiedenen Tabellen generiert, wobei einige dynamisch über ein Makro `%loopTroughMake` erstellt werden, das über die Automarken iteriert. Eine Grafik wird ebenfalls mit `PROC SGPLOT` hinzugefügt. Schließlich wird das ODS-Dokument geschlossen, wodurch alle Ausgaben in einer einzigen Datei konsolidiert werden.
Datenanalyse

Type : SASHELP


Die Daten stammen ausschließlich aus der SASHELP-Bibliothek (Tabellen class, shoes, cars).

1 Codeblock
DATA STEP Data
Erklärung :
Erstellt die Tabelle `class` in der WORK-Bibliothek, indem `sashelp.class` kopiert und eine konstante Spalte `const` hinzugefügt wird.
Kopiert!
1DATA class;
2 SET sashelp.class;
3 const = 1;
4RUN;
2 Codeblock
PROC SORT
Erklärung :
Sortiert die Tabelle `class` nach den Variablen `const` und `sex`.
Kopiert!
1PROC SORT DATA=class; BY const sex;RUN;
3 Codeblock
DATA STEP Data
Erklärung :
Erstellt die Tabelle `shoes`, indem `sashelp.shoes` gefiltert wird, um nur die Regionen 'Canada' und 'Pacific' zu behalten.
Kopiert!
1DATA shoes;
2 SET sashelp.shoes;
3 WHERE region in ('Canada', 'Pacific');
4RUN;
4 Codeblock
PROC SORT
Erklärung :
Sortiert die Tabelle `shoes` nach `region` und `product`.
Kopiert!
1PROC SORT DATA=shoes; BY region product; RUN;
5 Codeblock
DATA STEP Data
Erklärung :
Erstellt die Tabelle `cars`, indem `sashelp.cars` kopiert und eine konstante Spalte `const` hinzugefügt wird.
Kopiert!
1DATA cars;
2 SET sashelp.cars;
3 const = 1;
4RUN;
6 Codeblock
ODS
Erklärung :
Schließt alle aktuell geöffneten ODS-Ziele und öffnet dann ein neues `ODS DOCUMENT`-Ziel namens `doc_results` im Schreibmodus.
Kopiert!
1ODS _ALL_ CLOSE;
2 
3* start new ODS DOCUMENT;
4ODS DOCUMENT NAME=doc_results(WRITE);
7 Codeblock
PROC REPORT
Erklärung :
Generiert einen tabellarischen Bericht über Schuhverkäufe (`shoes`), gruppiert nach Region (`region`). Der ODS-Label und der Titel werden zur Identifizierung in der Ausgabe definiert.
Kopiert!
1ODS PROCLABEL="Table 1: By Group Report about shoes";
2TITLE "Table 1: By Group Report about shoes";
3PROC REPORT DATA=shoes CONTENTS="";
4 BY region;
5 COLUMN region product sales;
6 DEFINE region / ORDER NOPRINT;
7 BREAK BEFORE region / CONTENTS="" page;
8RUN;
8 Codeblock
PROC REPORT
Erklärung :
Generiert einen Bericht, der die Schüler der Tabelle `class` auflistet. Ein Seitenumbruch wird vor dem Beginn des Berichts erzwungen.
Kopiert!
1TITLE "Table 2: Table Class Output";
2ODS PROCLABEL "Table 2: Table Class Output";
3PROC REPORT DATA=class CONTENTS="";
4 COLUMN const name sex age height weight;
5 DEFINE const / ORDER NOPRINT;
6 BREAK BEFORE const / CONTENTS="" page;
7RUN;
9 Codeblock
Macro
Erklärung :
Definiert ein Makro `%loopTroughMake`, das einen `PROC REPORT`-Bericht für eine gegebene Automarke (`make`) generiert. Das Makro akzeptiert die Marke und eine Tabellennummer `i` als Parameter, um den Titel und das ODS-Label anzupassen.
Kopiert!
1%MACRO loopTroughMake(make,i);
2 TITLE "Table &i: Multiple outputs - Cars for make = &make";
3 ODS PROCLABEL "Table &i: Multiple outputs - Cars for make = &make";
4 PROC REPORT DATA=cars(WHERE=(make = "&make")) nowd headline spacing=2 CONTENTS="";
5 COLUMN const make model type msrp;
6 DEFINE const / ORDER NOPRINT;
7 BREAK BEFORE const / CONTENTS="" page;
8 RUN;
9 TITLE;
10%MEND;
10 Codeblock
Macro
Erklärung :
Ruft das Makro `%loopTroughMake` dreimal auf, um Berichte für die Marken Acura, Audi und BMW zu generieren.
Kopiert!
1%loopTroughMake(Acura,3);
2%loopTroughMake(Audi,4);
3%loopTroughMake(BMW,5);
4 
11 Codeblock
PROC REPORT
Erklärung :
Generiert einen weiteren Bericht über die Tabelle `class`, ähnlich dem zweiten Bericht, aber mit einem anderen Titel und ODS-Label.
Kopiert!
1ODS PROCLABEL="Table 6: Different label";
2TITLE "Table 6: Different title and label";
3PROC REPORT DATA=class CONTENTS="";
4 COLUMN const name sex age height weight;
5 DEFINE const / ORDER NOPRINT;
6 BREAK BEFORE const / CONTENTS="" page;
7RUN;
12 Codeblock
PROC SGPLOT
Erklärung :
Erstellt ein vertikales Balkendiagramm (`VBAR`) mit `PROC SGPLOT`, das das Alter (`age`) gruppiert nach Geschlecht (`sex`) aus der Tabelle `sashelp.class` zeigt.
Kopiert!
1ODS PROCLABEL="Figure 1: Class graphic";
2PROC SGPLOT DATA = sashelp.class;
3 VBAR age / GROUP = sex;
4 TITLE 'Figure 1: Class overview by sex and age';
5RUN;
13 Codeblock
ODS
Erklärung :
Schließt das `ODS DOCUMENT`-Ziel, wodurch das `doc_results`-Dokument mit allen generierten Ausgaben finalisiert und gespeichert wird.
Kopiert!
1ODS DOCUMENT CLOSE;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Project: SMILE - SAS Macros, Intuitive Library Extension, Author: Katja Glass, License: MIT