80
Universitätsrechenzentrum Johannes Gogolok 40 60 80 100 120 0 1 2 3 4 5 6 7 8 100 300 500 700 900 100 300 500 700 900 Einführung in das Statistiksystem SAS B/027/9705 © J.Gogolok URZ / FeU

Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

  • Upload
    vukien

  • View
    216

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

Universitätsrechenzentrum

Johannes Gogolok

40

60

80

100

120

0

1

23

45

67

8

100

300

500

700

900

100

300

500

700

900

Einführung in das Statistiksystem SAS

B/027/9705 © J.Gogolok URZ / FeU

Page 2: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

2

Page 3: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

3

Inhaltsverzeichnis:

1 DAS SAS-SYSTEM ............................................................................................................................................ 5

2 DAS SAS-PROGRAMM.................................................................................................................................... 5

2.1 DATEN................................................................................................................................................................ 62.2 EIN SAS-BEISPIELPROGRAMM............................................................................................................................ 62.3 DIE SAS-SYSTEMOBERFLÄCHE........................................................................................................................ 10

3 DIE SAS-SYNTAX ........................................................................................................................................... 12

3.1 SAS-ANWEISUNGEN......................................................................................................................................... 123.2 SAS-VARIABLENNAMEN .................................................................................................................................. 133.3 SPEZIELLE VARIABLENNAMEN ......................................................................................................................... 14

3.3.1 Auswahlnamen.......................................................................................................................................... 143.3.2 Variablenlisten ......................................................................................................................................... 14

4 DER PROGRAMMAUFBAU ......................................................................................................................... 15

4.1 DER DATA-STEP............................................................................................................................................. 154.1.1 Die DATA-Anweisung............................................................................................................................... 154.1.2 Datendefinition - INPUT-Anweisung ....................................................................................................... 164.1.3 Instream-Daten - CARDS-Anweisung ...................................................................................................... 234.1.4 Daten aus externen Dateien ..................................................................................................................... 244.1.5 Missing-Werte (Die MISSING-Anweisung) .............................................................................................. 25

4.2 DAS SAS-DATEIENSYSTEM.............................................................................................................................. 274.2.1 Temporäre Dateien................................................................................................................................... 274.2.2 Permanente Dateien (SAS-Systemfiles) .................................................................................................... 28

4.3 DATENMODIFIKATION ....................................................................................................................................... 304.3.1 Bildung neuer Variablen, Wertzuweisung ................................................................................................ 30

4.4 DATENSELEKTION ............................................................................................................................................ 314.4.1 Auswahl von Beobachtungen über die FIRSTOBS- und OBS-Option...................................................... 324.4.2 IF-THEN-ELSE-Strukturen ...................................................................................................................... 324.4.3 Selektierendes IF ("subsetting-IF") .......................................................................................................... 354.4.4 Die DELETE-Anweisung.......................................................................................................................... 364.4.5 Die WHERE-Anweisung ........................................................................................................................... 374.4.6 Bildung von Subfiles - SET-Anweisung .................................................................................................... 39

5 DER PROC-STEP (AUSWERTUNGSPROZEDUREN) .............................................................................. 43

5.1 SAS-PROZEDUREN........................................................................................................................................... 435.1.1 Ausgewählte Aufrufparameter .................................................................................................................. 44

6 VARIABLEN- UND WERTEETIKETTEN .................................................................................................. 46

6.1 VARIABLENLABELS - DIE LABEL-A NWEISUNG................................................................................................ 466.2 VALUE-LABELS - DIE PROZEDUR FORMAT.................................................................................................... 47

6.2.1 Formatdefinition....................................................................................................................................... 476.2.2 Verwendung von Formaten (FORMAT-Anweisung) ................................................................................ 49

7 OUTPUT-GESTALTUNG (OPTIONS-ANWEISUNG) ............................................................................... 51

7.1 SEITENLÄNGE................................................................................................................................................... 517.2 SEITENBREITE................................................................................................................................................... 517.3 SEITENAUSRICHTUNG....................................................................................................................................... 517.4 TITEL UND FUßNOTEN...................................................................................................................................... 52

7.4.1 Titel........................................................................................................................................................... 527.4.2 Fußnoten................................................................................................................................................... 52

7.5 UNTERDRÜCKEN VON SEITENELEMENTEN UND -FORMATEN............................................................................. 53

8 ABSCHLIEßENDES PROGRAMMBEISPIEL ............................................................................................ 54

9 AUFRUF DES SAS-SYSTEMS....................................................................................................................... 55

9.1 WINDOWS-VERSION...................................................................................................................................... 559.2 UNIX-VERSIONEN........................................................................................................................................... 55

Page 4: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

4

9.2.1 VT100/VT200-Modus ............................................................................................................................... 559.2.2 X-Windows-Modus.................................................................................................................................... 55

10 ARBEITEN MIT DEM SAS-EDITOR......................................................................................................... 55

11 ANHANG: BEISPIELE ZUR PROZEDURSYNTAX................................................................................. 55

11.1 PROC FACTOR............................................................................................................................................ 5511.2 PROC FREQ ................................................................................................................................................. 5511.3 PROC MEANS.............................................................................................................................................. 5511.4 PROC PRINCOMP ....................................................................................................................................... 5511.5 PROC PRINT ................................................................................................................................................ 5511.6 PROC REG.................................................................................................................................................... 5511.7 PROC SIMLIN.............................................................................................................................................. 5511.8 PROC SORT ................................................................................................................................................. 5511.9 PROC SUMMARY ....................................................................................................................................... 5511.10 PROC SYSLIN............................................................................................................................................ 5511.11 PROC TTEST.............................................................................................................................................. 5511.12 PROC UNIVARIATE ................................................................................................................................. 55

12 LITERATURLISTE....................................................................................................................................... 55

Page 5: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

5

1 Das SAS-System

SAS ("Statistical Analysis System") ist ein für Statistik-Anwender aus denunterschiedlichsten Bereichen geeignetes Programmsystem zur Datenverwaltung undDatenanalyse, das darüberhinaus Eigenschaften einer problemorientierten höherenProgrammiersprache besitzt.Es ist für viele verschiedene Rechner verfügbar, sowohl für Großrechner als auch fürArbeitsplatzrechner. Es kann unter verschiedenen Betriebssystemen gefahren werden, soz.B. unter AOS/VS, CMS, DOS (MS-DOS bzw. PC-DOS), WINDOWS, MVS, PRIMOS,UNIX, VMS oder VSE.Das Programmsystem SAS besteht aus mehreren Komponenten, die je nach Bedarfmodular installiert und implementiert werden können:

• SAS/BASE enthält die Basissoftware für alle Zusatzpakete und grundlegende Utilities undAuswertungsprozeduren für deskriptive statistische Analysen und Aufbereitung vonDaten.

• SAS/STAT enthält Prozeduren für univariate und multivariate statistische Analysen.

• SAS/GRAPH enthält Prozeduren zur Grafik.

• SAS/FSP enthält Prozeduren für interaktives Datenhandling und menügesteuerteAnwendungen.

• SAS/ETS enthält Prozeduren für Zeitreihenanalyse und ökonometrische Modelle.

• SAS/IML enthält Prozeduren zur Matrixverarbeitung.

• SAS/OR enthält Prozeduren zum Projektmanagement und linearen Programmierung. • SAS/QC enthält Prozeduren zur statistischen Qualitätskontrolle. • SAS/ASSIST ermöglicht die menügesteuerte Benutzung von SAS auch ohne Kenntnisse

der SAS-Syntax. • SAS/AF ermöglicht die Generierung eigener SAS-Fenster. • SAS/CONNECT für die Micro-Host-Kommunikation.

Das SAS-System ist ein sehr mächtiges und damit auch sehr umfangreichesAuswertungsinstrument. Die Beschreibung aller Komponenten und Möglichkeiten, die SASbietet, würde den Rahmen einer Einführung sprengen, wie sie diese Broschüre bietet. DieAuswahl der im folgenden beschriebenen Verfahren, die dem Anfänger einen guten Einstiegbieten sollen, wurde auf Grund von Erfahrungen in Seminaren zur Einführung in SAS sowiein der Benutzerberatung des URZ getroffen. Für das problemlose Arbeiten mit SAS sindeventuell zusätzlich die Originalhandbücher des Herstellers oder entsprechende deutschePublikationen zu SAS erforderlich (siehe Literaturverzeichnis).Der Aufruf des Programmsystems SAS ist unabhängig vom Rechnersystem an der FeUweitestgehend gleich, die Dateiverwaltung sowie die Druck- und Graphikausgabe sindrechner- und betriebssystemabhängig. Auf die unterschiedlichen Varianten wird im Text,soweit nötig, gesondert verwiesen.

2 Das SAS-Programm

Page 6: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

6

2.1 Daten

Auszuwertende Daten werden an Programme i.d.R. als rechteckige Datenmatrizenübergeben. Die meisten Datensammlungen setzen sich aus mehreren solchen Datenwerten(numerisch und/oder alphanumerisch) zusammen. Man befragt beispielsweise Mitgliedereiner Gruppe nach bestimmten persönlichen Merkmalen und trägt die Antworten in eineTabelle ein. Alle befragten Personen haben unterschiedliche Antworten auf die Fragengegeben; nicht beantwortete Fragen wurden vom Interviewer mit besonderen Markierungen,den fehlenden Werten (missing), versehen. Es ergibt sich daraus die folgende, rechteckigeDatenstruktur, auch Datenmatrix (m x n - Datenmatrix) genannt:

Name Geschlecht Alter Größe GewichtBarbara w 23 168 58Claudia w 27 165 53Frank m 31 179 .Heinz m 44 181 79Anne w . 170 60

Joachim m 26 191 87Thomas m 51 178 80Ursula w 49 . 49

Diese Matrix enthält für jeden Merkmalsträger oder "Beobachtung" (engl. observation) einenMeßwert (engl. value) in einer Variablen (engl. variable). Merkmalsträger (observations) sinddie befragten Personen, Merkmale (variables) sind die Ausprägungen der Eigenschaften.

Die Variablen (Merkmale) können numerisch sein (Zahlen) oder auch in eineralphanumerischen Form vorliegen (Buchstaben mit oder ohne Zahlen).Merkmale, die nur durch Zahlen dargestellt werden, heißen numerische Variablen (engl.numeric variables); Merkmale, deren Ausprägungen auch Buchstaben enthalten, heißenZeichenvariable (engl. character variables).

Übertragen auf die Tabelle gilt also:

• Die Gesamtheit aller Werte bildet die Daten (Rohdaten), in der EDV oft auchAuswertungsdatensatz genannt (nicht zu verwechseln mit dem physikalischen Satz =Datenzeile = Beobachtung).

• Die einzelnen Spalten der Tabelle bilden als Bündel von Datenwerten jeweils eineVariable (Geschlechtsvariable, Größenvariable usw.).

• Die komplette Information über eine Person ist eine Beobachtung (Zeile).• Jede Beobachtung der Tabelle besteht aus 5 Variablen - Name, Geschlecht, Alter, Größe

und Gewicht.• Die einzelnen erhobenen Werte - Claudias Geschlecht, Annes Alter, Joachims Größe

usw. sind sog. Datenwerte oder Variablenausprägungen .• Abgespeichert auf einem Speichermedium bilden die Daten eine Datei (Rohdatendatei).

Vor der Auswertung durch ein EDV-Programm muß eine solche Rohdatendatei vorliegen.Ob sie allerdings durch die Erfassung von gemessenen, erhobenen oder anders ermitteltenWerten oder über die Erstellung mittels anderer EDV-Programme entstand, ist daherunerheblich.Zum Zwecke der Auswertung muß sie programmspezifisch eingelesen und verarbeitetwerden.Wie dies am Beispiel von SAS funktioniert, sei, ohne zuerst genauer auf die SAS-Syntaxeinzugehen, am Beispiel erläutert.

2.2 Ein SAS-Beispielprogramm

Page 7: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

7

Ein SAS-Programm besteht aus einer Folge von Anweisungen (commands), die inunterschiedlichen Modi (interactive mode, batch mode u.a.) an SAS zur Verarbeitungübergeben werden können. Die Anweisungen müssen den Regeln der SAS-Sprachegenügen.

Das SAS-Programm wird zeilenweise über einem Texteditor oder über den SAS-eigenenEditor in eine Datei geschrieben und SAS zur Bearbeitung übergeben. Das SAS-Systemführt die Anweisungen der Reihe nach aus und erstellt ein Protokoll mit Meldungen undErgebnissen. Die eigentliche Auswertung erfolgt durch eine Statistikprozedur - hier dieProzedur MEANS (Aufruf: PROC MEANS), die eine Mittelwertberechnung für Alter, Größeund Gewicht (siehe Musterdatenmatrix auf S. 6) vornimmt.

Ein typisches SAS-Programm besteht mindestens aus zwei Teilen (Steps):• DATA-Step - zur Datenbeschreibung und Modifikation• PROC-Step - Aufruf einer Auswertungsprozedur zur Auswertung der Daten

data ein;title 'SAS - Beispielprogramm';filename daten 'c:\work\rohdat.dat';infile daten;input name $ 1-7 geschl $ 9 alter 11-12 groesse 14-16 gewicht 18-19;

proc means; var alter groesse gewicht;run;

Die Daten werden in der Form einer Matrix eingelesen:

Barbara w 23 168 58

Claudia w 25 165 53

Frank m 31 179 91

Heinz m 44 181 79

Anne w 39 170 60

Joachim m 26 191 87

Thomas m 51 178 80

Ursula w 49 167 58

DATA EIN benennt und definiert eine SAS-Arbeitsdatei namens EIN.TITLE definiert die Seitenüberschrift für das SAS-Ergebnisprotokoll.FILENAME verkettet den Betriebssystem-Dateinamen (physikalischer Dateiname) mit einemDateizugriffsnamen für SAS (mnemonischer Dateiname).INFILE ordnet die einzulesende Datei zu.Mit INPUT wird SAS eine Beschreibung des einzulesenden Datensatzes geliefert.PROC ruft die Auswertungsprozedur auf (hier MEANS)RUN bewirkt den Start des SAS-Programms.

Page 8: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

8

Die aufgerufene Prozedur liefert die folgende Ausgabe:

SAS - Beispielprogramm 1 16:39 Thursday, November 2, 1995

Variable N Mean Std Dev Minimum Maximum-------------------------------------------------------------------ALTER 8 36.0000000 11.2249722 23.0000000 51.0000000GROESSE 8 174.8750000 8.9032498 165.0000000 191.0000000GEWICHT 8 70.7500000 15.0404217 53.0000000 91.0000000 -------------------------------------------------------------------

Nach der mit TITLE definierten Seitenüberschrift, die von SAS zusätzlich mit einerSeitennummer und Laufdatum versehen wird, folgt die Ausgabe der Prozedur MEANS.Diese berechnet für die drei angegebenen Variablen den Mittelwert (Mean),Standardabweichung (Std Dev) das Maximum und Minimum (bei 8 eingelesenenDatensätzen - N=8).

Das Beispielprogramm ist mit Absicht relativ einfach gefasst, um dem Leser einen Überblicküber die Codierung zu geben. Daß ein solches Programm durchaus umfangreicher werdenkann, ohne daß es zusätzliche Aufgaben erfüllt, wird weiter unten im Text demonstriert.Zusätzlich zur Prozedurausgabe wird eine sog. SAS-Log erzeugt, die Meldungen desSystems (Ausführungsmeldungen, Warnungen und/oder Fehlermeldungen) enthält. Im Falledes obigen (fehlerfreien) Programms hat diese die folgende Form:

NOTE: Copyright(c) 1989 by SAS Institute Inc., Cary, NC USA.NOTE: SAS (r) Proprietary Software Release 6.08 TS404 Licensed to UNIVERSITAET DORTMUND LANDESLIZENZ NRW, Site 0080582011.

1 data ein;2 title 'SAS - Beispielprogramm';3 filename daten 'c:\work\rohdat.dat';4 infile daten;5 input name $ 1-7 geschl $ 96 alter 11-127 groesse 14-168 gewicht 18-19;

NOTE: The infile DATEN is: FILENAME=c:\work\rohdat.dat, RECFM=V,LRECL=132

NOTE: 8 records were read from the infile DATEN. The minimum record length was 19. The maximum record length was 19.NOTE: The data set WORK.EIN has 8 observations and 5 variables.NOTE: The DATA statement used 6.8 seconds.

9 proc means;10 var alter groesse gewicht;11 run;

NOTE: The PROCEDURE MEANS used 2.02 seconds.

Die hier gezeigte SAS-Log enthält nur Ausführungsmeldungen des Beispielprogramms(siehe NOTE im obigen Output-Beispiel).In der LOG-Datei werden alle Programmanweisungen aufgelistet und durchnumeriert.Treten Probleme auf, wird die Anweisung, die zum Auftreten des Problems beigetragen hat,kenntlich gemacht und eine Meldung ausgegeben. In der Regel werden die Meldungen inder LOG-Datei unmittelbar nach der dazugehörigen Anweisung oder in ihrer unmittelbarerNähe ausgegeben.Es gibt unterschiedliche Arten von Meldungen.• Ist das SAS-Programm ohne Fehler abgelaufen, enthält die SAS-LOG nur rein

informative Meldungen, die mit dem String NOTE: beginnen (s.o.) Trotz des rein informativen Inhalts dieser Meldungen sollte man sie dennoch nicht außer

Acht lassen, denn oft enthalten sie wichtige Informationen zu Dateiinhalten, zum

Page 9: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

9

Programmablauf oder, wie im obigen Beispiel, zu Dateizuordnungen oder dem Umfangder ausgewerteten Daten.

• Treten während der Verarbeitung Fehler auf, die jedoch nicht so schwerwiegend sind,daß sie sich auf den weiteren Programmablauf und die statistischen Auswertungenauswirken, werden Warnungen (WARNING) ausgegeben und in der LOG-Dateiprotokolliert:

144 proc freq data=ausdat;

145 title 'Grundauszählung der Variablen';

146 labels f1g1=Wert der eingelesenen Verkaufsfläche

------

14

147 tables f1g1 -- f1g4;

151 format f1g1 -- f1g4 f1fmt.;

153 run;

WARNING 14-169: Assuming the symbol LABEL was misspelled as

LABELS.

Der Programmablauf wird nicht abgebrochen.Im obigen Beispiel wird im Programm statt des Schlüsselwortes LABEL das nicht definierteWort LABELS benutzt. SAS ignoriert die falsche Angabe ersetzt sie durch das richtigeSchlüsselwort und setzt die Verarbeitung fort.

• Eine nicht ausführbare Anweisung führt zur Ausgabe einer Fehlermeldung (ERROR) inder LOG-Datei und in der Regel mindestens zum Abbruch der Verarbeitung eines DATA-oder PROC-Steps oder des gesamten Programms (insbesondere dann, wenn dasProgramm aus nur einem DATA- und/oder PROC-Step besteht):

98 proc freq

99 title 'Grundauszählung der Variablen';---- ---------------------------------202 200100101 tables f1g1 -- f1g4;105 format f1g1 -- f1g4 f1fmt.;107 run;

ERROR 202-322: The option or parameter is not recognized.ERROR 200-322: The symbol is not recognized.

NOTE: The SAS System stopped processing this step because oferrors.NOTE: The PROCEDURE FREQ used 0.88 seconds.

Das Beispiel enthält eine PROC-Anweisung, die nicht durch ein Semikolon

abgeschlossen ist und dadurch mit der folgenden TITLE-Anweisung zusammenfällt. DieTITLE-Anweisung wird vom System als eine unbekannte Option oder Parameter derPROC-Anweisung interpretiert und das Programm daraufhin abgebrochen.

• Bei Fehlern in den einzulesenden Daten wird ebenfalls eine Fehlermeldung in die LOG-Datei ausgegeben:

Page 10: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

10

NOTE: Invalid data for F1G3 in line 7 8-8.NOTE: Invalid data for S9 in line 8 31-31.NOTE: Invalid data for S10 in line 8 32-32.NOTE: Invalid data for S11 in line 8 33-34.RULE: ----+----1----+----2----+----3----+----4----+----5----+7 1 42x22222 222222332423 1234 551472 1 1 1 7 3 7 5 1 56 1666221226524 688 22000010000000 60 32 00000000 acd2 1400 0 1 9999696 2 54ID=1 F1G1=4 F1G2=2 F1G3=. F1G4=2 F2G5=2 F2G6=2 F2G7=2 F2G8=2F3U1=2 F3U2=2 F3U3=2 F3U4=2 F3U5=2 F3U6=2 F4U7=3 F4U8=3 F4U9=2F4U10=4 F4U11=2 F4U12=3 F5P1=1 F5P2=2 F5P3=3 F5P4=4 F6P5=5 F7P6=5F7P7=1 F7P8=4 F7P9=7 F8P10=2 F9A1=1 F10A2=1 F10A3=1 F10A4=7F10A5=3 F10A6=7 F10A7=5 F10A8=1 F10A9=1 F11A10=6 F11A11=6F11A12=6 F12A13=2 F12A14=2 F12A15=1 F12A16=2 F13A17=2 F13A18=6F13A19=5 F14A20=2 F15A21=4 S1=2 S2=2 S3B1=0 S3B2=0 S3B3=0 S3B4=0S3B5=1 S3B6=0 S3B7=0 S3B8=0 S3B9=0 S3B10=0 S3B11=0 S3B12=0 S4=6S5=0 S6=3 S7=2 S8P1=0 S8P2=0 S8P3=0 S8P4=0 S8P5=0 S8P6=0 S8P7=0S8P8=0 S9=. S10=. S11=. S12=1400 S13=0 S14=1 S15=99996 S16=96S17=2 _ERROR_=1 _N_=4

Der Meldungstext gibt in einem solchen Fall Auskunft darüber, welche Variablen in welchenZeilen und Spalten der Daten als fehlerhaft (abweichend von der Definition in der INPUT-Anweisung) erkannt wurden. Im obigen Beispiel sind es die Variablen F1G3 in (Zeile 7,Spalte 8), S9 (Zeile 8, Spalte 31), S19 (Zeile 8, Spalte 32) und S11 (Zeile 8, Spalte 33-44).Zusätzlich wird der Inhalt der kompletten fehlerhaften Beobachtung ausgegeben, in derForm, daß jeder definierten Variablen der eingelesene Wert zugewiesen wird (F1G1=1,F1G2=...usw). Dieses ermöglicht oft die Kontrolle, ob die Daten tatsächlich fehlerhaft sindoder ob in der INPUT-Anweisung nur eine falsche Spalte oder falscher Datentyp angegebenwurden.Wird ein fehlerhafter Datensatz beim Einlesen identifiziert, setzt SAS den Wert derSystemvariablen _ERROR_ um 1 nach oben (siehe Beispiel _ERROR_=1). Dabei ist esunerheblich, ob einer oder mehrere Datenfehler in diesem Datensatz entdeckt wurden. Wirdder maximal zulässige Wert dieser Variablen erreicht (durch mehrere fehlerhafteDatensätze), bricht SAS die Verarbeitung ab. Die maximale Anzahl möglicher fehlerhafterDatensätze, die zu einer Fehlermeldung führen sollen, kann über die SystemoptionERRORS= spezifiziert werden. Wird beispielsweise ERRORS=10 angegeben, so werden fürdie ersten 10 fehlerhaften Datensätze entsprechende Fehlermeldungen ausgegeben. Sindmehr fehlerhafte Datensätze vorhanden, wird die Verarbeitung fortgesetzt, aber keineFehlermeldung mehr ausgegeben.Bei der Fehlerkorrektur (außer bei Datenfehlern) ist es empfehlenswert, die Fehlersystematisch der Reihe nach, mit dem ersten beginnend, zu beheben. Häufig sind weiter imProgramm liegende Fehler Folgefehler eines vorhergehenden; wird dieser behoben,verschwindet oft ein oder mehrere dahinterliegende.Mit der Überprüfung der Daten sollte auf jeden Fall erst dann begonnen werden, wenn dasProgramm syntaktisch vollkommen fehlerfrei ist.

2.3 Die SAS-Systemoberfläche

Alle drei an der FeU verfügbare Versionen von SAS (DOS, Windows, UNIX) arbeiten miteiner Fensteroberfläche, die aus drei Grundfenstern besteht:

• dem Editor-Fenster - zum Editieren (Erstellen und Ändern) eines SAS-Programms;• dem Output-Fenster - für die Ausgabe der Ergebnisse der SAS-Prozeduren;• dem Log-Fenster - für die Ausgabe von Systemmeldungen.

Der Vorteil des Fenstersystems, insbesondere des Editor-Fensters, liegt darin, daß alleBearbeitungsvorgänge (sowohl für Programme als auch für Daten) sowieSicherungsvorgänge in einer Oberfläche abgewickelt werden können und somit das Erlernender Bedienung eines oder mehrerer zusätzlicher Editoren überflüssig ist.

Page 11: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

11

Der gesamte Programmablauf inclusive der Ergebnisse und Systemmeldungen kann überdie Fensteroberfläche jederzeit überwacht und gesteuert werden.

Die Inhalte aller genannten Fenster lassen sich auf externen Dateien sichern, wodurch einepermanente Speicherung von Programmen, Daten und Auswertungsergebnissen ohneProbleme möglich ist.

Das Arbeiten mit diesen Fenstersystemen wird weiter im Text beschrieben.

Page 12: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

12

3 Die SAS-Syntax

3.1 SAS-Anweisungen

Ein SAS-Programm besteht aus einer Reihe von SAS-Anweisungen. Jede Anweisungbeginnt mit einem Schlüsselwort, welches die Anweisungsart spezifiziert. Für alle SAS-Anweisungen gelten einige allgemeine Grundregeln:

• Jede SAS-Anweisung muß mit einem Semikolon (;) abgeschlossen werden.

• Die Anweisungen können formatfrei angegeben werden, d.h., sie können an beliebigerStelle einer Zeile beginnen und enden.

• In einer Programmzeile können mehrere Anweisungen stehen.

• Die Schreibweise der Anweisungen ist beliebig - Groß- oder Kleinschreibung (in denBeispielen dieses Kurses wird aus Gründen der besseren Lesbarkeit die Großschreibungbenutzt).

Beispiel:

DATA WERT; INPUT ALTER GESCHL GEWICHT; PROC PRINT;RUN;

oderDATA WERT; INPUT ALTER GESCHL GEWICHT PROC PRINT; RUN;

• Zwischen den Anweisungselementen muß mindestens ein Leerzeichen („blank“) alsTrennung stehen. Aus Lesbarkeitsgründen können auch mehrere Leerzeichen verwendetwerden. Diese werden von SAS immer als ein Leerzeichen interpretiert.

• Eine SAS-Anweisung kann auch über mehrere Zeilen fortgesetzt werden. Als Anweisunggilt immer eine Wortfolge zwischen zwei Semikolonzeichen (;).

Beispiel:

DATA WERT; INPUT ALTER GESCHL GEWICHT; PROC PRINT;RUN;

• Zwischen einzelnen Anweisungen können Leerzeilen verwendet werden. Zusammen mitder Möglichkeit, die Anweisungen an beliebiger Stelle einer Zeile beginnen und enden zulassen und der beliebigen Verwendung von Leerzeichen ergeben sich dadurch vielfältigeMöglichkeiten, ein SAS-Programm zu gliedern und damit lesbarer zu gestalten,insbesondere dann, wenn das Programm einen größeren Umfang einnimmt.

• Die Lesbarkeit eines SAS-Programms kann zusätzlich durch Kommentarzeilen erhöhtwerden. Es werden zwei Formen von Kommentarzeilen akzeptiert:

⇒ mit einem Stern (*) beginnend und mit einem Semikolon endend:

*BERECHNUNG DES MITTELWERTES;Eine solche Kommentaranweisung muß in der Spalte 1 der Anweisungszeile beginnen,kann allerdings über mehrere Zeilen fortgesetzt werden:

Page 13: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

13

*----------------------------------+ | BERECHNUNG DES MITTELWERTES | +----------------------------------+;

⇒ mit der Zeichenfolge Schrägstrich-Stern (/*) beginnend und mit „*/“ endend:

/* BERECHNUNG DES MITTELWERTES */

Hierbei ist ein Semikolon als Abschluß nicht notwendig:

IF WERT1 < 55 /* Prüfen Wert Variable WERT1 */ THEN FEHLER1 = 1; /* Setzen Fehlerwert */

Eine solche Kommentaranweisung darf nicht in der Spalte 1 beginnen, da die Zeichenfolge/* als ENDSAS-Kommando interpretiert wird und die SAS-Sitzung beendet.

3.2 SAS-Variablennamen

Zur eindeutigen Kennzeichnung von Variablen werden ihnen Namen gegeben. FürVariablennamen gelten ebenfalls einige Grundregeln:

• SAS-Variablennamen dürfen maximal 8 Zeichen lang sein.

• Sie müssen alphanumerisch (mit einem Buchstaben) beginnen, dürfen außer denZeichen A-Z, a-z und den Ziffern 0-9 keine Sonderzeichen enthalten, mit Ausnahme desUnterstrichs („_“).

• Leerzeichen innerhalb von Variablennamen sind nicht zulässig.

Beispiele:

X Y ALTER GESCHL VAR1 VAR01 V_1

V01_1 ALT_ER A_LTER ALTE_R V001 V002

Zu vermeiden sind Variablennamen, die als erstes und/oder letztes Zeichen einenUnterstrich („_“) enthalten, da diese Form von SAS für automatisch generierteProgrammvariablen benutzt wird.

Beispiele:

_N_ _TYPE_ _ERROR_

Page 14: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

14

3.3 Spezielle Variablennamen

3.3.1 Auswahlnamen

Für Dateien, die sehr viele Variablen enthalten, gibt es die Möglichkeit, eine Auswahldefinierter Variablen mittels Auswahlnamen vorzunehmen. Dieses setzt allerdings voraus,daß die auszuwählenden Variablen vorher im Programm definiert (den Typ numerisch oderalphanumerisch zugeordnet) wurden. Dazu siehe INPUT-Anweisung -Abschnitt 5.1.2.

Es gibt drei Auswahlnamen:

• _ALL_ bezeichnet alle definierten Variablen einer Datei;

• _CHARACTER_ bezeichnet alle alphanumerischen (Zeichen-)Variablen einer Datei;

• _NUMERIC_ bezeichnet alle numerischen Variablen einer Datei.

3.3.2 Variablenlisten

Werden Variablen bei ihrer Definition (siehe INPUT-Anweisung) fortlaufend durchnumeriert -mit dem gleichen Namensstamm und einer fortlaufenden Nummer- , können zu ihrerAuswahl Namenslisten benutzt werden. Diese bestehen aus der Nennung der ersten undder letzten auszuwertenden Variablen, verbunden durch einen einfachen Bindestrich.

Beispiel:

Eine Datei enthalte die Variablen VAR1 bis VAR5; dann gilt:

VAR1-VAR5 entspricht VAR1 VAR2 VAR3 VAR4 VAR5

Besitzen die Variablen keinen gemeinsamen Namensstamm, können ebenfals Namenslistenbenutzt werden, allerdings dann in Verbindung mit einem doppelten Bindestrich („- -“).

Beispiel:

Eine Datei enthalte die Variablen A1, B1, VAR1 ALTER GESCHL W1. Dann sind folgendeSchreibweisen äquivalent:

A1--W1 oder A1 B1 VAR1 ALTER GESCHL W1oder _ALL_ (da alle Variablen gemeint sind)

A1--ALTER oder A1 B1 VAR1 ALTER

Näheres zur Anwendung - siehe Prozeduraufrufe.

Page 15: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

15

4 Der Programmaufbau

4.1 Der DATA-Step

4.1.1 Die DATA-Anweisung

Der DATA-Step beginnt grundsätzlich mit einer DATA-Anweisung. Jedes SAS-Programmmuß mindestens einen DATA-Step und somit auch eine DATA-Anweisung enthalten. DieseAnweisung hat zwei Funktionen:

• Eröffnen des DATA-Steps.• Benennen der zu erstellenden SAS-Arbeitsdatei(en).

Sie hat die allgemeine Form:

DATA [ SAS-dateiname [( optionen )]];

SAS-dateiname ist ein vom Benutzer zu vergebender Name für die SAS-Systemarbeitsdatei(ein sog. mnemonischer Dateiname). Dieser Name muß den SAS-Namenskonventionen genügen, d.h.:

• Maximal 8 Zeichen lang sein,• alphanumerisch beginnen,• außer dem Unterstrich "_" keine Sonderzeichen enthalten.

Beispiele:

DATA AUSWAHL1;DATA A1_K22;

Wird kein SAS-dateiname vergeben, generiert SAS nach der sog. DATAn-Konventioneigene Dateinamen in der Form DATA1, DATA2,...,DATAn. Es ist jedoch empfehlenswert,eigene Dateinamen für die System-Arbeitsdateien zu vergeben, um die spätere Zuordnungdieser Dateien zu Auswertungsprozeduren zu vereinfachen. Dieses wird insbesondere dannwichtig, wenn in einem Programm mehrere Arbeitsdateien unterschiedlichen Inhalts erstelltund von mehreren Auswertungsprozeduren bearbeitet werden sollen.

Page 16: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

16

4.1.2 Datendefinition - INPUT-Anweisung

Auf die DATA-Anweisung folgt die INPUT-Anweisung, welche die Funktion hat, deneinzulesenden Variablen Namen zuzuordnen und ihre Positionen in den Sätzen derEingabedateien zu bestimmen. Über die INPUT-Anweisung können die unterschiedlichstenDatenformate eingelesen werden; wir beschränken uns hier jedoch nur auf die einfachstenund gebräuchlichsten Formen dieser Anweisung.

4.1.2.1 Formatfreie Eingabe ('list input')

Die formatfreie, nicht spaltengebundene Eingabe ist anwendbar wenn:

• In den Eingabezeilen die einzelnen Datenwerte durch ein oder mehrere Leerzeichenvoneinander getrennt sind,

• fehlende Datenwerte durch einen Punkt "." gekennzeichnet sind,• alphanumerische Werte nicht länger als 8 Byte sind.

Die Anweisung hat die Form:

INPUT variable_1 [$] [...[ variable_n [$] ]];

mit:

variable Name der einzulesenden VariablenKennung für einen alphanumerischen Variablenwert

Allen Variablen der einzulesenden Datei müssen Namen zugeordnet werden. Bei derVergabe der Namen ist zu beachten, daß die Variablen in der Reihenfolge eingelesenwerden, in der ihre Namen in der INPUT-Anweisung stehen. Auslassungen sind nichtmöglich.

Beispiele:

DATA PROBE1;INPUT VAR1 VAR2 VAR3;

liest drei numerische Variablen VAR1, VAR2 VAR3 ein.

DATA PROBE2;INPUT VAR1 VAR2 $ VAR3;

liest zwei numerische Variablen VAR1 und VAR3, sowie eine alphanumerische VariableVAR2 ein.

Page 17: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

17

4.1.2.2 Spaltengebundene Eingabe ('column input')

Diese Eingabeart wird verwendet wenn:

• Werte gleicher Variablen in den Datensätzen immer in den gleichen Spalten stehen.• Die Werte numerisch oder alphanumerisch sind.

Die Variablenwerte müssen in den Datensätzen nicht durch 'blanks’ voneinander getrenntsein. Wichtig ist ihre konstante relative Zeilenposition.

Die INPUT-Anweisung hat in der spaltengebundenen Eingabe die Form:

INPUT variable_1 [$] startspalte [-endspalte] [.dezimalstellen][...[variable_n [$] startspalte [-endspalte] [.dezimalstellen]];

mit:

variable Name der einzulesenden Variablen$ Indikator für einen alphanumerischen Wertstartspalte die erste Spalte des Datenwertes-endspalte die letzte Spalte des Datenwertes. Entfällt, wenn die Variable nur

eine Spalte im Datensatz belegt.Trennstrich zwingend !dezimalstellen Anzahl Dezimalstellen im Datenwert, wobei der

Dezimalpunkt nicht im Datenwert markiert werden muß.

Beispiele:

INPUT WERT 3-7 .1;ergibt:

Daten Resultat

01 456 4.5032.543 2.54312-34 -3.412 67 6.7

oderINPUT VAR1 1-4 VAR2 5-6 VAR3 7-10 .2 VAR4 $ 11-16 VAR5 17;

Eingelesen werden die numerischen Variablen VAR1 in den Spalten 1-4, VAR2 in denSpalten 5-6, VAR3 in den Spalten 7-10 mit zwei Dezimalstellen in den beiden rechtenSpalten (9 und 10), die alphanumerische Variable VAR4 in den Spalten 11-16 und dienumerische Variable VAR5 in der Spalte 17.

Die spaltengebundene Eingabe bietet einige Variationsmöglichkeiten beim Einlesen derDaten:

• Die Variablen können in beliebiger Reihenfolge eingelesen werden:

INPUT VAR1 1-3 VAR2 21-25 VAR3 7-8 VAR4 30-33 VAR5 15-19 .1;

• Gleiche Spalten können mehrfach gelesen werden und die Werte unterschiedlichenVariablen zugeordnet werden:

INPUT VAR1 $ 1-7 VAR2 8-9 KENN 1-9 KENN2 5-9;

Page 18: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

18

• Alphanumerische Variablen können maximal die Länge 200 haben. • Alphanumerische Variablen dürfen Leerzeichen enthalten. • Fehlende Werte werden erkannt ('missing'), wenn sie durch Leerzeichen oder Punkt "."

gekennzeichnet sind.

4.1.2.3 Formatierte Eingabe ('formatted input')

Die formatierte Eingabe ermöglicht das Einlesen von Variablen in unterschiedlichenFormaten. Insbesondere ermöglicht sie die Benutzung gruppierter Format- undVariablenlisten.

Die einfache Anweisung zum formatierten Einlesen hat die Form:

INPUT variable_1 format [...[ variable_n format ]];oder

INPUT ( variablenliste ) ( formatliste );

variable Name der einzulesenden Variablenvariablenliste Liste einzulesender Variablen (in Klammern)format SAS-Format für einzulesende Variable (abgeschlossen durch

einen Punkt !)formatliste Liste von SAS-Formaten (in Klammern !). Formatangaben

innerhalb der Liste können durch Leerzeichen oder Kommatavoneinander getrennt werden.

In der einfachen Form der formatierten Eingabe muß die Reihenfolge der Variablennamen inder INPUT-Anweisung der Reihenfolge der Variablenwerte in den Daten entsprechen.Sprünge beim Einlesen sind nicht möglich (siehe spaltengebundene Eingabe). Durch dieKombination der formatierten Eingabe mit Zeigern (pointern) kann jedoch in jedergewünschten Reihenfolge eingelesen werden (siehe weiter unten im Text).

Beispiele:

INPUT (VAR1 VAR2 VAR3) (3. 3. 3.);INPUT (VAR1 VAR2 VAR3) (3.);INPUT (VAR1-VAR3) (3.);INPUT (VAR1-VAR3) (3*3.)

Alle vier Anweisungen sind äquivalent. Zu beachten ist die Möglichkeit der Benutzung einesWiederholungsfaktors n*.

Möglich sind gemischte Formatlisten:

INPUT (VORN NAME VAR1-VAR5) (2*$20. 5*3.);Achtung:

INPUT (VAR1 VAR2) ($,5.);

liest VAR1 alphanumerisch und VAR2 fünfstellig numerisch einaber:

INPUT (VAR1 VAR2) ($ 5.)

ordnet beiden Variablen das Format $5. zu!

Page 19: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

19

4.1.2.4 Verwendung von Zeigern (vereinfachte Darstellung)

Beim Einlesen von Daten verwendet SAS generell Zeiger (pointer) für die eingelesenenSpalten (column pointer) und Zeilen (line pointer). In diesen Zeigern werden Informationenzur aktuellen Position des Systems während des Einlesens festgehalten.Es gibt Möglichkeiten, diese Zeiger direkt anzusprechen bzw. zu beeinflußen, um beimEinlesen von Daten beliebige Datenzeilen oder -spalten anzusprechen. Aus einer größerenAuswahl seien hier vier Möglichkeiten angesprochen:

@n+n Spaltenzeiger

#n/ Zeilenzeiger

Zeigerspezifikationen müssen in der INPUT-Anweisung direkt vor den Namen der Variablengesetzt werden, auf die sie sich beziehen sollen.

Spaltenzeiger

Ein Spaltenzeiger kann durch sog. 'column pointer controls' beeinflußt werden. Dabei wirddie Leseposition innerhalb der Datenzeile auf bzw. um den angegebenen Wert verändert.

@n bewegt den Spaltenzeiger innerhalb der Zeile auf die Position n; n muß ganzzahlig positiv sein.

Beispiel:

INPUT VAR1 $ @15 VAR2 3.;

liest vom Anfang des Datensatzes die Variable VAR1 ein, wechselt dann zur Position 15 desDatensatzes und liest von da an die Variable VAR2 dreistellig ganzzahlig ein.

+n bewegt den Spaltenzeiger um n Positionen nach rechts; n muß ganzzahlig positiv sein.

Beispiel:

INPUT VAR1 $10. +3 VAR2;

liest am Anfang des Datensatzes die zehnstellige alphanumerische Variable VAR1 ein, gehtdanach um drei Positionen (Zeichen) weiter und liest die numerische Variable VAR2.

Für die Verwendung von column pointer controls gilt:

• Wird zusammen mit dem Zeichen "@" ein negativer Wert angegeben, so wird derSpaltenzeiger auf den Wert 1 gesetzt.

• Der Spaltenzeiger kann in beide Richtungen der Datenzeile bewegt werden.

Page 20: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

20

Beispiel:

INPUT @20 VAR1 $10. @5 KENN;

beginnt in der Spalte 20 mit dem Einlesen der zehnstelligen alphanumerischen VariablenVAR1, springt dann zurück zur Spalte 5 des Datensatzes und liest dort die numerischeVariable KENN ein.

• Die Formen der INPUT-Anweisung können gemischt angewandt werden.

Beispiel:

INPUT NAME $ 1-20 @30 VAR1 5. +3 VAR2 $5. @21 VAR5;

Zeilenzeiger

Zeilenzeiger enthalten Informationen über absolute Zeilennummern, aus denen Datengelesen werden. Werden die Zeiger (mittels line pointer controls) beeinflußt, kann gezielt zubestimmten Zeilen gesprungen werden.Line pointer controls müssen angewandt werden, wenn die Daten für eine Beobachtungmehrere Datenzeilen umfassen.

#n bewegt den Zeiger auf die Zeile n der Beobachtung. n muß ganzzahlig positiv sein.

Beispiel:

INPUT VAR1 VAR2 #2 VAR3 $5. #3 VAR4 3. VAR5;

liest vom ersten Satz der Beobachtung die Variablen VAR1 und VAR2, vom zweitenDatensatz die Variable VAR3 und vom dritten die Variablen VAR4 und VAR5.

/ setzt den Zeilenzeiger auf die Spalte 1 der nachfolgenden Zeile.

Beispiel:

INPUT VAR1 VAR2 / VAR3 / VAR5;

liest vom ersten Datensatz die Variablen VAR1 und VAR2, vom zweiten (ab Spalte 1) dieVariable VAR3 und vom dritten (ab Spalte 1) die Variable VAR5.Für die Verwendung von 'line pointer controls' gilt:

• Das Schlüsselwort INPUT impliziert die Angabe #1, alle anderen Zeilen einerBeobachtung müssen gezielt angesprungen werden.

• Die Anzahl Datensätze pro Beobachtung ergibt sich aus dem maximalen Wert von n.• Die Datensätze einer Beobachtung müssen nicht alle eingelesen werden; es können

Sätze übersprungen werden.

Beispiel:

INPUT VAR1 #2 (VAR2-VAR5) (4*2.) #5 VAR25;

Page 21: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

21

• Wird nur aus den Anfangssätzen gelesen und die Endsätze ausgelassen, muß mit #n diemaximale Anzahl Sätze pro Beobachtung angezeigt werden.

Beispiel:

INPUT VAR1 #2 (VAR5-VAR7) (4.) #5;

• Die Sätze einer Beobachtung müssen nicht in numerischer Reihenfolge eingelesenwerden. Rücksprünge sind möglich.

Beispiel:

INPUT VAR1 #3 VAR2 VAR3 #2 VAR11 #4 VAR51;

• Bei der Verwendung von / und einem Rücksprung mittels #n muß am Ende der INPUT-Anweisung die maximale Anzahl Sätze pro Beobachtung angezeigt werden.

Beispiel:

INPUT VAR1/VAR2/VAR3#1 @20 VAR4#3;

4.1.2.5 Festhalten von Zeilen (line hold specifiers)

Wie schon weiter oben erwähnt, steht in der Regel in den Datenzeilen ein physikalischerSatz oder ein Block von Datensätzen pro Beobachtung. Jede INPUT-Anweisung liest dannnormalerweise im DATA-Step eine komplette Information pro Beobachtung (Einzelsatz oderBlock von Sätzen) ein. Es gibt allerdings Situationen, in denen in den Rohdaten entwedermehrere physikalische Datensätze pro Beobachtung stehen, ohne daß sie als Block zubetrachten sind oder in einem physikalischen Datensatz Informationen zu mehrerenBeobachtungen untergebracht sind. Um in diesen Spezialfällen Daten ohne Problemeeinlesen zu können, bedient man sich im SAS einer speziellen Einlesetechnik über sog. linehold specifiers. Als Kennung für die line hold specifiers werden die Zeichen @ und @@benutzt - im Unterschied zu deren Funktion als column pointer control jedoch nicht inmitteneiner INPUT-Anweisung sondern an deren Ende.

@ am Ende einer INPUT-Anweisung bewirkt, daß der Zeilenzeiger nach dem Einlesen einerDatenzeile auf der aktuellen Position verbleibt, bis eine (mehrere) weitere INPUT-Anweisung(en) im gleichen DATA-Step ausgeführt werden. Besonders nützlich ist dieseEinlesetechnik, wenn das Einlesen von Folgevariablen eines Datensatzes von denWerten zuvor eingelesener Variablen abhängig gemacht werden soll (und somit dasEinlesen des kompletten Datensatzes nicht über eine einzige INPUT-Anweisungerfolgen kann).

Page 22: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

22

Beispiel:

In den auszuwertenden Datensätzen seien gemischt und ungeordnet entweder numerischeoder alphanumerische Variablenwerte abgespeichert, der jeweilige Einzeldatensatz trägtjedoch am Satzanfang eine Kennung für numerischen (Zeilentyp A) oder alphanumerischenInhalt (Zeilentyp B):

CARDS;a 111 225b BMW Opela 224 228b Ford Toyotab VW Porschea 331 331a 411 451b Mitsubishi Seat;

In Abhängigkeit vom Zeilentyp sollen die Variablen typengerecht eingelesen werden:

DATA;INPUT TYPZ $ 1 @; IF TYPZ = ’a’ THEN INPUT WERT1 WERT2; IF TYPZ = ’b’ THEN INPUT NAME1 $ NAME2 $;

Mit der ersten INPUT-Anweisung wird der Zeilentyp (TYPZ) eingelesen und die Zeile durchdas nachgestellte @-Zeichen in der Anweisung an der Einleseposition festgehalten. InAbhängigkeit vom Wert der Variablen TYPZ ( a oder b) wird anschließend über eine zweiteoder dritte INPUT-Anweisung der Rest der Zeile entweder in der Form zweier numerischeroder zweier alphanumerischer Variablen eingelesen.

@@ am Ende einer INPUT-Anweisung ermöglicht Einlesevorgänge für mehrere Beobach-tungen in derselben Datenzeile (abweichend von Grundprinzip - pro Beobachtung eineZeile). Eine Datenzeile wird erst dann freigegeben, wenn beim Einlesen ihr Ende erreichtist. Diese Einlesetechnik wird insbesondere bei Datensätzen benutzt, die für eineBeobachtung nur wenige Variablen aufweisen und deshalb aus Platzgründen in denDaten in einem physikalischen Satz mehrere Beobachtungen untergebracht werden.

Achtung:

⇒ Das nachgestellte @@ sollte nur bei list input verwendet werden !

Beispiel:

DATA;INPUT NAME $ WERT @@;CARDS;Opel 111 BMW 225 Ford 224 Seat 331 Toyota 228;

Die Datenzeile dieses Beispiels enthält 5 Beobachtungen.Ist die Anzahl der Datenwerte in einer Datenzeile nicht ohne Rest durch die Anzahldefinierter Variablen teilbar, gibt SAS eine Meldung (NOTE) im SAS-Log-File aus und liestdie Daten des Falles mit dem fehlenden Wert nicht ein.

Page 23: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

23

4.1.3 Instream-Daten - CARDS-Anweisung

In bestimmten Situationen (Testzwecke, kleiner Datenumfang) werden SAS-Programmanweisungen und Daten zusammen eingegeben. Es handelt sich in solchenFällen um sog. 'instream-Daten'.Um dem System anzuzeigen, daß 'instream-Daten' vorliegen, wird eine CARDS-Anweisungverwendet. Sie hat die Form:

CARDS;

Die CARDS-Anweisung ist die letzte Anweisung des DATA-Steps und muß unmittelbar vorden Datensätzen stehen. Ein DATA-Step darf nur eine CARDS-Anweisung enthalten.Daraus ergibt sich die folgende Programmstruktur:

DATA EINGABE; INPUT ..........; . . SAS-Anweisungen zur

Datenselektion und/oder Modifikation

. .CARDS; . . Datensätze

. .;

Die Datensätze dürfen keine SAS-Anweisungen enthalten.Das Ende der Datensätze muß durch ein Semikolon ";" in der Spalte 1 einer gesondertenZeile angezeigt werden.Nach der CARDS-Anweisung und den nachfolgenden Datensätzen darf nur ein neuerDATA-Step (beginnend mit dem Schlüsselword DATA) oder ein PROC-Step (Aufruf einerProzedur) folgen; andere SAS-Anweisungen sind nicht zulässig.Die Datenzeilen der 'instream-Daten' dürfen nicht länger als 80 Zeichen sein (in manchenSystemen sogar nur 72).Bei größeren Datenmengen ist es umständlich und unhandlich, Daten innerhalb einesProgramms zu halten, daher werden Rohdaten meistens in externen Dateien erfasst unddem SAS-Programm mittels entsprechender Anweisungen zur Verarbeitung übergeben.

Page 24: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

24

4.1.4 Daten aus externen Dateien

4.1.4.1 Die INFILE-Anweisung

Eine externe Datei, deren Daten nach der Beschreibung in der INPUT-Anweisungeingelesen werden sollen, kann über die INFILE-Anweisung identifiziert werden. DieseAnweisung muß vor der INPUT-Anweisung stehen.

Sie hat die allgemeine Form:

INFILE dateispezifikation [optionen];

dateispezifikation ist die obligatorische Angabe des externen Dateinamens in der Form:‘dateiname’ vollständiger physikalischer Name der externen Datei. Der Name muß

in Hochkommata eingeschlossen sein. Die Syntax der Angabe ist systemabhängig, daher sollten näher Angaben den entsprechenden Systemhandbüchern entnommen werden. Im SAS/PC (DOS-/ WINDOWS-Version von SAS) wird hier der vollständige DOS-Dateiname incl. Verzeichnispfad angegeben (UNIX analog),z.B.:

INFILE 'C:\DATEN\AUSWERT\ROH.DAT'; (DOS)INFILE '/EXPORT/HOME/BEN2/DATEN.ROH.DAT'; (UNIX)

fileref mnemonischer Name der externen Datei. Anwendbar nur, wenn vorher in einer FILENAME-Anweisung zugeordnet (s.weiter unten).

4.1.4.2 Die FILENAME-Anweisung

Eine andere Möglichkeit der Identifikation einer externen Rohdatendatei ist die Kombinationder INFILE-Anweisung mit der FILENAME-Anweisung.

Die FILENAME-Anweisung hat die allgemeine Form:

FILENAME fileref 'physikalischer Name';

fileref ist ein mnemonischer Name (symbolischer Bezugsname) für die externeDatei. Er muß den SAS-Namenskonventionen genügen, d.h. max. 8 Zeichenlang, alphanumerisch beginnend, keine Sonderzeichen außer "_".

physikalischer name siehe 'dateiname' bei der INFILE-Anweisung

Die FILENAME-Anweisung muß vor der INFILE-Anweisung stehen. Bei der genanntenKombination beider Anweisungen, wird in der FILENAME-Anweisung dem mnemonischenNamen der physikalische Name der externen Datei zugeordnet und in der INFILE-Anweisung nur der mnemonische Name benutzt.

Beispiel:

DATA EING;FILENAME DAT1 'C\DATEN\ALLBUS88\ROH.DAT';INFILE DAT1;INPUT ID 1-4 (GAST1-GAST4) (1.) .......

Page 25: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

25

Optionen der INFILE-Anweisung (Auswahl):

DELIMITER = 'zeichen'DLM = 'zeichen'

definiert Zeichen (von blank verschieden) die alsTrennzeichen zwischen Variablenverten in der Dateiauftreten.

FIRSTOBS=n gibt die Nummer (n) des Satzes an, mit dem dasEinlesen begonnen werden soll (Voreingestellt 1).

LINESIZE = mLS = m

gibt die maximale Satzlänge an, mit der in der INPUT-Anweisung gearbeitet werden soll.

LRECL = n spezifiziert die logische Satzlänge (n) einer Datei.N = k gibt die Anzahl (k) Sätze pro Beobachtung an

(Voreingestellt 1)OBS = n gibt die Nummer des letzten Satzes, der eingelesen

werden soll, an.

4.1.5 Missing-Werte (Die MISSING-Anweisung)

Fehlende Werte in den Rohdaten (missing values) können unterschiedlich gekennzeichnetwerden:

• Sind die Variablenwerte in den Rohdaten durch Leerzeichen (blanks) voneinandergetrennt, werden fehlende Datenwerte durch einen Punkt (.) gekennzeichnet.

Beispiel:

DATA T1;INPUT VAR1 VAR2 VAR3;CARDS;10 aaaa 11120 bbbbb .. cc 3340 . .50 . 5515;

• Sind Daten spaltengebunden erfasst, werden fehlende Werte durch Leerzeichengekennzeichnet. Dabei richtet sich die Anzahl der Leerzeichen nach der definiertenVariablenlänge.

Beispiel:

DATA T1; INPUT VAR1 $ 1-3 VAR2 5-6 var3 8;CARDS;abc 12 3 21 3def 5xyz 4;

Enthalten die Daten nur numerische Werte, können über die MISSING-AnweisungErsatzzeichen für Variablenwerte definiert werden, mit denen 'missings' gekennzeichnetwerden können.

Page 26: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

26

Die MISSING-Anweisung hat die allgemeine Form:

MISSING zeichen_1 [...[zeichen_n]];

zeichen ist das Zeichen zur Kenntlichmachung des missing-Wertes. Es können alleBuchstaben und der Unterstrich "_" benutzt werden.

Beispiel:DATA T1;MISSING n N;INPUT VAR1 VAR2;CARDS;10 111 n12 215 N;

• Oft werden für missing-Werte numerischer Variablen keine Buchstaben oderUnterstriche, sondern numerische Werte außerhalb des Gültigkeitsbereichs desVariablenwertes angegeben z.B.:

Zustimmungsgrade:

1:"stimme nicht zu".

5:"stimme ganz zu",aber7:"Angabe verweigert",8:"Angabe entfällt",9:"Frage ausgelassen".

Sollen beispielsweise die letzten drei Kategorien (7-9) als missing verarbeitet werden,müssen sie durch eine IF THEN-Anweisung ( s.weiter unten) dazu umkodiert werden:

IF ZUST=7 OR ZUST=8 OR ZUST=9 THEN ZUST=.;oderIF ZUST >= 7 THEN ZUST =.

Page 27: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

27

4.2 Das SAS-Dateiensystem

Die von SAS verarbeiteten Rohdaten werden für die Dauer der Verarbeitung in eine System-Arbeitsdatei übernommen. Die Übernahme geschieht nach der Beschreibung des Benutzersin der INPUT-Anweisung. Alle Datenmanipulationen finden auf den Arbeitsdateien statt, dieOriginal-Rohdaten bleiben unverändert bestehen. Normalerweise stehen derartigeArbeitsdateien nur für die Dauer des Programmlaufs zur Verfügung, es sei denn, sie werdenim Programm implizit als permanent deklariert. Die Entscheidung, ob eine SAS-Systemdatei(SAS-Datei) permanent oder temporär angelegt wird, hängt von der Benennung dieser Dateiab. Nachfolgend wird die implizite Vorgehensweise genauer erklärt.

4.2.1 Temporäre Dateien

Die Generierung einer temporären Arbeitsdatei wird im DATA-Step mittels der DATA-Anweisung bewirkt. Jedes SAS-Programm muß mindestens einen DATA-Step und somitauch eine DATA-Anweisung enthalten. Die Anweisungssyntax wurde schon im Abschnitt5.1.1 beschrieben.In dieser Anweisung ist es insbesondere zulässig, einstufige Namen für SAS-Dateien zubenutzen. In solchen Fällen wird nur Dateiname angegeben, was zur Folge hat, daß dieSAS-Datei unter dem angegebenen Namen als temporäres Mitglied (Member) einer SAS-Bibliothek WORK zugeordnet, angelegt, benutzt und nach Programmende gelöscht wird.

Beispiele:

DATA AUSW1; . . weitere Anweisungen

.DATA AUSW2; .

bewirkt die Generierung zweier temporärer SAS-Dateien AUSW1 und AUSW2 als Memberder SAS-Bibliothek WORK (WORK.AUSW1, WORK.AUSW2).

DATA; . weitere Anweisungen

.DATA; .

bewirkt die Generierung zweier temporärer SAS-Dateien DATA1 und DATA2 (nach derDATAn-Regel - WORK.DATA1, WORK.DATA2).

Page 28: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

28

4.2.2 Permanente Dateien (SAS-Systemfiles)

Die bisher beschriebenen, mittels der DATA-Anweisung generierten SAS-Dateien, sindtemporärer Natur, d.h. nach Ablauf des Programms, in dem sie generiert wurden, stehen sienicht mehr zur Verfügung. Da jedoch in solchen Dateien nicht nur die Werte dereingelesenen Variablen sondern evtl. auch die Ergebnisse aller Selektions- undModifikationsanweisungen enthalten sind, wäre es durchaus sinnvoll, den Inhalt dieserDateien für eventuelle spätere Anwendungen (Auswertungen) zu retten. Außerdemunterscheiden sich diese Dateien wesentlich von den Rohdatendateien - es sind SAS-Systemdateien, deren Verarbeitung wesentlich schneller vonstatten geht und dieWiederholung vieler Programmschritte (Labeln von Variablen und ihren Ausprägungen,Berechnen neuer Variablen, Variablenselektion, Anwendung von Funktionen usw.) vor denAuswertungen überflüssig macht.Eine permanente Speicherung ist in permanenten Systemdateien (Systembibliotheken)möglich. Für die Generierung und Benennung solcher Bibliotheken gilt generell folgendes:

• Ein SAS-Dateiname für eine permanente Systemdatei besteht grundsätzlich aus zwei,durch einen Punkt voneinander getrennten, Teilen (zweistufiger Name):

libref.dateiname

♦ libref ('library reference') ist der logische Name einer SAS-Bibliothek ('SAS datalibrary'), zu der die Datei gehört.

♦ dateiname ist der Dateiname im engeren Sinne, der die Datei als Member der imlibref genannten Bibliothek bezeichnet.

• Wird für eine SAS-Systemdatei ein einstufiger Name verwendet (siehe DATA-Anwei-sung), so wird dieser intern zwar in einen zweistufigen umgewandelt, allerdings auch in-tern als temporär gekennzeichnet.

• Wird in der DATA-Anweisung für den Dateinamen ein zweistufiger Name angegeben, so

erwartet das System eine permanente SAS-Systemdatei, wobei die Bibliothek, in der sieangelegt werden soll oder schon vorhanden ist, über eine LIBNAME-Anweisung vorherspezifiziert werden muß.

Diese Anweisung hat die allgemeine Form:

LIBNAME libref 'physikalischer name';

libref ist der symbolische Bezugsname (mnemonischer Name) der Bibliothek. Ermuß den SAS-Namenskonventionen genügen.

'physikalischer name' gibt an, unter welchem Namen die Bibliothek demBetriebssystem bekannt ist. Die Syntax ist rechnerabhängig, auf DOS- undUNIX-Rechnern ist es der Name eines Verzeichnisses, in dem dieSystemlibrary angelegt werden soll oder schon existiert. Der Name muß inHochkommata eingeschlossen werden.

Page 29: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

29

Beispiel:

FILENAME ROHDAT 'C:\DATEN\AWERTE\ROH.DAT';LIBNAME AUSW 'C:\DATEN\AUSWERT\'; DATA AUSW.TEIL1; INFILE ROHDAT; INPUT ID 1-4 (GAST1-GAST3) (1.); . weitere Anweisungen

. DATA AUSW.TEIL2; INFILE ROHDAT; INPUT ID 1-4 GAST1 1. +2 GAST4 1.;

bewirkt die Generierung zweier permanenter SAS-Dateien AUSW.TEIL1 und AUSW.TEIL2in einer SAS-Bibliothek mit dem logischen Namen AUSW, die das Betriebssystem unterC:\DATEN\AUSWERT findet. In beide Dateien werden Daten einer externen RohdatendateiROH.DAT nach den unterschiedlichen Beschreibungen in den INPUT-Anweisungeneingelesen.

• In einem SAS-Programm können mehrere permanente SAS-Dateien in unterschiedlichenBibliotheken angelegt bzw. vorhandene angesprochen werden, wenn diese vorher mittelsLIBNAME-Anweisung definiert wurden.

Beispiel:

LIBNAME BIB1 'C:\DATEN\TEIL1\';LIBNAME BIB2 'C:\DATEN\TEIL2\';DATA BIB2.AUSW1; . . weitere Anweisungen .DATA BIB1.AUSW5;

bewirkt den Zugriff auf die permanente SAS-Datei BIB2.AUSW1 in der Bibliothek BIB2 (inC:\DATEN\TEIL1) und die Datei BIB1.AUSW5 (ebenfalls permanent) in der Bibliothek BIB1(in C:\DATEN\TEIL2).

Page 30: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

30

4.3 Datenmodifikation

4.3.1 Bildung neuer Variablen, Wertzuweisung

Eingelesene Variablenwerte können durch eine Reihe von SAS-Anweisungen verändertwerden oder es können im SAS-Datensatz neue Variablen generiert werden. SolcheModifikationsanweisungen müssen im SAS-Programm immer im DATA-Step nach derINPUT-Anweisung stehen.Für das Verändern von Variablenwerten bzw. Hinzufügen neuer Variablen steht im SAS eineReihe von Operatoren zur Verfügung:

• Arithmetische Operatoren.

• Vergleichsoperatoren (siehe IF-Anweisungen).

• Logische Operatoren (siehe IF-Anweisungen).

Eine Vielzahl von SAS-Funktionen ergänzt das Instrumentarium zur Variablenbehandlung.Werteveränderungen von Variablen und die Bildung neuer Variablen ergeben sich im SASals Ergebnisse von Zuweisungsoperationen (assigment statements) mit der allgemeinenForm:

ergebnisvariable = ausdruck;

Diese Anweisung beginnt im Unterschied zu anderen SAS-Anweisungen nicht mit einemanweisungsspezifischen Schlüsselwort.

ergebnisvariable eine Variable, der der Wert von ausdruck zugewiesen wird.Es kann eine bereits definierte oder eine neue Variablesein. Auch SAS-Systemvariablen (_N_ oder _ERROR_u.a.) können verwendet werden.

ausdruck ein gültiger SAS-Ausdruck, bestehend aus einem odermehreren durch Operatoren verbundenen Operanden.Eindeutigkeiten der Verarbeitungsreihenfolge können ggf.durch Klammerungen erreicht werden.

In Zuweisungsoperationen werden meistens arithmetische Operatoren benutzt:

Operator Beispiel+ Addition V1 = V22 + Z1;- Subtraktion WERT1 = V2 - VAR7;/ Division V2 = WERT1 / WERT3;* Multiplikation ERG = Z21 * Z1;** Exponentiation Y = X ** 3;

Zusätzlich bietet SAS eine große Menge an integrierten Funktionen für Anwendungen ausvielen Statistik-, Mathematik- und anderen Bereichen. An dieser Stelle sei nur eine minimaleAuswahl vorgestellt, um insbesondere die Verwendung in Programmanweisungen zudemonstrieren, ansonsten sei bezüglich Auswahl und Verwendung auf die Sekundärliteraturverwiesen:

Page 31: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

31

Funktion BeispielABS Absolutbetrag X = ABS(X);COS Cosinus Y = COS(X);EXP Exponentialfunktion Y = EXP(X); entspricht ex

INT Integerbildung X = INT(X);LOG natürlicher Logarithmus XE = LOG(V1);LOG10 dekadischer Logarithmus X10 = LOG10(V1);MEAN Mittelwert GES = MEAN(V1,V2,V3,V5);ROUND Auf- bzw. Abrunden V2 = ROUND(X);SIN Sinus Z = SIN(X);SQRT Quadratwurzel Z = SQRT(X);TAN Tangens Z = TAN(X);

In Zuweisungsoperationen sind selbstverständlich auch Kombinationen von Operatoren undFunktionen möglich:

SUMM_END = SU1 + SU2 + INT(SU3);

ALTGR = INT(ALTER / 10);

Y = SQRT(ROUND((A + B / 2) * (X ** 2 - 1)));

Die arithmetischen Operatoren werden nach den arithmetischen Vorrangregeln abgearbeitet(Punkt vor Strich), die Abarbeitungsreihenfolge kann jedoch durch geeignete Klammerungbeeinflußt werden; Klammern werden von links nach rechts abgearbeitet.

4.4 Datenselektion

Bei der Verarbeitung bestehender Dateien besteht oft die Notwendigkeit, nicht alle zurVerfügung stehenden Datensätze zu verarbeiten, sondern nur eine Untermenge. Dies kannsowohl beim Testen eines Programms zweckmäßig sein als auch bei manchen Analysenund Fragestellungen, bei denen es sinnvoll ist, nur Beobachtungen, die bestimmteVoraussetzungen erfüllen, auszuwählen (z.B. nur weibliche Probanden, bestimmteAltersgruppen u.s.w.).Das SAS-System bietet mehrere Möglichkeiten, Beobachtungen gezielt aus einer Dateiauszuwählen:

• Dateioptionen FIRSTOBS= und OBS=• FIRSTOBS- und OBS-Option der INFILE-Anweisung• "subsetting-IF"• IF in Verbindung mit der DELETE-Anweisung• WHERE-Anweisung• WHERE-Dateioption

Page 32: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

32

4.4.1 Auswahl von Beobachtungen über die FIRSTOBS- und OBS-Option

Sollen Beobachtungen einer SAS-Datei verarbeitet werden, indem ab einer bestimmtenBeobachtungsnummer und/oder bis zu einer bestimmten Beobachtungsnummerausgewertet werden soll, können die FIRSTOBS=- und/oder OBS=-Dateioptionen verwendetwerden. Mit Beobachtungsnummer ist hier die relative Position einer Beobachtung in derSAS-Datei gemeint. Zur der Beobachtung können dabei mehrere physikalische Datensätzegehören.Mit der FIRSOBS=-Option wird die Nummer der Beobachtung angegeben, mit der dieVerarbeitung beginnen soll, mit OBS= die Nummer der letzten zu berücksichtigendenBeobachtung. Bei der Angabe können beide Optionen oder eine von beiden spezifiziertwerden. Die Optionenangabe ist in Klammern hinter den Dateinamen zu setzen:

DATA E2;SET E1 (FIRSTOBS=20 OBS=40);

bedeutet, daß aus der Datei E1 21 Beobachtungen in die Datei E2 übernommen werden,beginnend mit der 20. Beobachtung und endend mit der 40. .Ist die zu verarbeitende Datei eine externe Datei (keine SAS-Systemdatei), die über dieINFILE-Anweisung eingelesen werden soll, können analog die FIRSTOBS- und/oder dieOBS-Option der INFILE-Anweisung verwendet werden:

FILENAME DATEN '........';DATA NEU;INFILE DATEN OBS=50;INPUT .....;

liest aus der Datei mit dem Fileref DATEN die Beobachtungen bis zur Beobachtungsnummer50 in die SAS-Datei NEU ein.

Hinweis:

Die FIRSTOBS- und die OBS-Dateioptionen beziehen sich auf die Nummer der ersten undletzten Beobachtung (mehrere physikalische Sätze pro Beobachtung möglich!).Dagegen beziehen sich die FIRSTOBS- und OBS-Optionen der INFILE-Anweisung auf dieerste und letzte Nummer des einzulesenden physikalischen Datensatzes. Enthält eineBeobachtung mehrere Datensätze, ist es bei der Spezifikation der Optionswerteentsprechend zu berücksichtigen. Gehören beispielsweise in einer externen Datei zu einerBeobachtung 2 Sätze und sollen Daten von der 5. bis zur 50. Beobachtung eingelesenwerden, müßte in der INFILE-Anweisung FIRSTOBS=9 und OBS=100 spezifiziert werden.

4.4.2 IF-THEN-ELSE-Strukturen

Soll eine Anweisung oder Anweisungsgruppe in Abhängigkeit von einer Bedingungausgeführt werden, ist es mittels einer IF-THEN-ELSE-Konstruktion zu realisieren. Diedazugehörige Anweisung hat die folgende allgemeine Form:

IF ausdruck THEN anweisung_1 ; [ELSE anweisung_2 ;]

In Abhängigkeit von der Bedingung im ausdruck wird anweisung_1 ausgeführt. In einemoptionalen ELSE-Zweig kann noch eine alternative Anweisung definiert werden, die nur dannauszuführen ist, wenn die Bedingung im ausdruck nicht erfüllt ist. Die IF-Anweisung wirdsukzessiv für alle eingelesenen Beobachtungen abgearbeitet.

Page 33: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

33

Die IF-THEN-ELSE-Anweisung wird im DATA-Step verwendet unabhängig davon, ob Datenfür die Beobachtung INFILE/INPUT aus einer externen Datei eingelesen werden sollen, überINPUT/CARDS instream-Daten übernommen werden oder ob es sich bei der zuverarbeitenden Datei um eine schon bestehende SAS-Datei handelt.

ausdruck ist ein gültiger SAS-Ausdruck (s. Abschnitt 5.3), der ausgewertet wird und alsErgebnis einen Wert 0, ungleich 0 oder 'missing' liefert. Ist der Wert gleich 0(Bedingung erfüllt), wird die Anweisung hinter THEN ausgeführt; ist der Wertungleich 0 oder 'missing' (Bedingung nicht erfüllt), wird die THEN-Anweisungnicht erfüllt. In solchen Fällen wird die Anweisung des ELSE-Zweigesausgeführt (soweit vorhanden).

anweisung ist jede ausführbare SAS-Anweisung, die im DATA-Step benutzt werden darf.

Die IF-Bedingung kann aus einem einfachen Vergleich zwischen einer Variablen und einemZahlenwert bestehen:

IF S13 > 5 THEN.....;

oder dem Vergleich von Variablenwerten:

IF SUMME1 > SUMME5 THEN ......;

Sie kann mehrere, durch die Operatoren AND und/oder OR verknüpfte Vergleichsoperatio-nen einbeziehen:

IF S5 > 7 and S16 < 5 THEN .......;IF IF F8P10 < 4 OR F8P10 =8 THEN ......;

Zur Bildung von Relationen kann auf eine Reihe von Vergleichsoperatoren zugegriffenwerden:

EQ oder = equal gleichNE oder ^= not equal ungleichGT oder > greater then größer alsGE oder >= greater equal größer gleich

^> not greater nicht größerLT oder < less than kleiner alsLE oder <= less equal kleiner gleichNL ^< not less nicht kleinerIN gleich einem Listenelement

Sollen Relationen in geschachtelter Form definiert werden, stehen die beiden logischenOperatoren AND und OR, die zusätzlich durch NOT verneint werden können, zur Verfügung:

AND oder & undOR oder | oderNOT oder ^ nicht

Beispiele:

1) IF F6P5 = 99 THEN FEHLER1 = 1;

Hat die Variable F6P5 der Wert 99, wird die Variable FEHLER1 auf den Wert 1 gesetzt.

Page 34: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

34

2) IF S1 = 1 THEN GESCHL='Mann';

Hat die Variable S1 den Wert 1, erhält die Variable GESCHL als Wert die Zeichenkette"Mann".

3) IF S1 = 1 THEN GESCHL = 'Mann'; ELSE GESCHL = 'Frau';

Hat S1 den Wert 1, erhält GESCHL den Wert "Mann" sonst (bei allen von 1 verschiedenenWerten) erhält GESCHL den Wert "Frau" zugewiesen.

Hinweis:

Vor solchen Wertzuweisungen ist sicherzustellen, daß die angesprochenenen Variablenplausible Werte enthalten (missings beachten !) - im obigen Beispiel dürfte die Variable S1nur die Werte 1 und 2 haben. Ist dies nicht der Fall, ist dafür zu sorgen, daß keine falschenCodierungen entstehen. Im Falle der Variablen S1 aus dem obigen Beispiel wäre es durchdie folgende Anweisungsgruppe möglich:

IF S1 = 1 THEN GESCHL = 'Mann'; ELSE IF S1 = 2 THEN GESCHL = 'Frau'; ELSE GESCHL = 'fehl';

Bei verschachtelten Vergleichs- und logischen Operatoren ist sehr oft Vorsicht geboten,insbesondere wenn mit Verneinungen gearbeitet wird. Die durchaus mögliche gemischteSchreibweise der Operatoren (z.B. NE oder ^=) macht manchmal eine IF-Konstruktion rechtunübersichtlich, wie das folgende Beispiel zeigt:

IF (VAR1 < B) & NOT ((VAR3 = VAR4) | (VAR5 - VAR6) >= 7) THEN VAR1 = VAR4 + 7;

Bei Abfragen, in denen eine Variable bestimmte Werte einer Liste aufweisen soll, können mitOR verbundene Ausdrücke oder der IN-Operator im IF-Ausdruck verwendet werden:

IF ORT EQ 'Berlin' OR ORT EQ 'Bonn' OR ORT EQ 'Köln' THEN .....;

oder alternativ:

IF ORT IN ('Berlin','Bonn';'Köln') THEN .......;

Neben der oben beschriebenen IF-THEN-ELSE-Anweisung gibt es noch die 'subsetting'-IF-Anweisung zur Auswahl von Beobachtungen, die weiter unten beschrieben wird.

Page 35: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

35

4.4.3 Selektierendes IF ("subsetting-IF")

Sollen aus einer bestehenden SAS-Datei Beobachtungen in eine Teildatei übernommenwerden, die einer bestimmten Bedingung genügen,oder solen beim Einlesen von Rohdatennur Sätze eingelesen werden, die eine bestimmte Bedingung erfüllen, kann es mittels eines"subsetting-IF" realisiert werden.Die Bedingung wird in einer IF-Schleife (ohne ELSE-Zweig) definiert.

Die "subsetting-IF"-Anweisung hat die allgemeine Form:

IF ausdruck;

ausdruck spezifiziert die Auswahlbedingung und kann unterschiedliche Formen haben:

• Angabe eines Variablenwertes

DATA MANN; SET GESAMT; IF S1 = 1;

wählt aus der Gesamtheit der Daten die Sätze, für die die Variable S1 den Wert 1 hat (z.B.männliche Untersuchungspersonen, wenn „1“ in der Geschlechtsvariablen S1 für „männlich“steht).

• Komplexere Form:

DATA AUS; SET EIN; IF (V1 + V2) > 25;

wählt nur Sätze, für die die Summe der Variablen V1 und V2 größer als 25 ist, aus.

• Logische Verknüpfungen (AND, OR) oder Verneinungen (NOT, NE):

IF (S1 EQ 1) AND (S2 EQ 5);IF (S5 NE 9) OR (S4 NE 9);IF NOT (F13A17 LE 1);IF (S2 < 5) AND ((S4 = 4) OR 0 < S13 <= 4));

Ist die im ausdruck angegebene Bedingung erfüllt, wird die Beobachtung in die (Teil)-Dateiübernommen und eventuelle nachfolgende Anweisungen des DATA-Steps auf derBeobachtung ausgeführt; ist die Bedingung nicht erfüllt, wird die Beobachtung nichtübernommen, das System springt zurück zum Beginn des DATA-Steps und liest die nächsteBeobachtung ein.Bei Verneinungen (NOT oder NE) ist die Behandlung fehlender Werte zu beachten. Fehlenbeispielsweise in der Variablen S1 (Geschlecht, mit den Werten "1" für "Mann" und "2" für"Frau") bei einigen Beobachtungen die Werte, so hat die Bedingung:

IF S1 NE 1;

zur Folge, daß alle Sätze weiblicher Probanden und alle Sätze mit fehlenden Werten derVariablen S1 ausgewählt werden. Wollte man es ausschliessen, müßte man

IF (S1 NE 1) AND (S1 NE .);

kodieren oder im Falle gerade dieser Variablen (zweistufig) viel einfacher:

IF S1 EQ 2;

Page 36: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

36

Ähnlich verhält es sich bei falschen Codierungen:

IF S1 NE 1;

wählt alle Sätze aus, für die S1 nicht den Wert 1 hat, also neben den o.g. Missingsbeispielsweise auch Sätze mit S1 = 0 oder S1 > 1. Wurden die Datensätze vorher bereinigt,so daß man sicher sein kann, daß sie nur richtige Codierungen enthalten, müssen beiVerneinungen nur, wie schon oben erwähnt, die missing-Werte beachtet werden.

4.4.4 Die DELETE-Anweisung

Sollen in einer bestehenden Datei (SAS-Datei oder externe Datei) bestimmteBeobachtungen von der Auswertung ausgeschlossen und nicht in eine neue SAS-Teildateioder die aus der externen Rohdatendatei zu erstellende SAS-Datei übernommen werden,kann dies auch mit Hilfe der DELETE-Anweisung erreicht werden.

Die DELETE-Anweisung hat die allgemeine Form:

DELETE;

Sie bewirkt, daß die Verarbeitung der Anweisungen des DATA-Steps für die aktuellbearbeitete Beobachtung abgebrochen und die Beobachtung nicht übernommen wird. DasSystem springt zur Bearbeitung der nächsten Beobachtung an den Anfang des DATA-Stepszurück. Die DELETE-Anweisung wird als THEN-Zweig einer mit einer Bedingungversehenen IF-Anweisung benutzt:

IF ausdruck THEN DELETE;

ausdruck ist eine Bedingung, bei deren Gültigkeit eine Beobachtung nicht in die Dateiübernommen werden soll.

Beispiel:

IF (S1 = .) AND (0 < S11 > 97) THEN DELETE;

schließt alle Beobachtungen aus, die eine fehlende Angabe bei S1 haben und bei denen derWert von S11 höher ist als 0 und kleiner als 97 ist.Ob bei der Auswahl von Beobachtungen das subsetting-IF oder die Form IF-THEN-ELSEgewählt wird, ist von der Frage abhängig, in welcher der beiden Formen dieAuswahlbedingung am einfachsten zu formulieren ist.Analog zum subsetting-IF ist die Behandlung fehlender Werte und falscher Kodierungenbesonders zu beachten:

IF S1 NE 1 THEN DELETE;

liefert mit der DELETE-Anweisung ein anderes Ergebnis als im subsetting-IF - hier werdentatsächlich nur Sätze mit dem Wert 1 der Variablen S1 übernommen, beim subsetting-IF(ohne DELETE) wären alle von 1 verschiedenen Werte berücksichtigt und auch die Sätzemit Missings und falschen Codierungen übernommen worden.

Page 37: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

37

4.4.5 Die WHERE-Anweisung

Während die subsetting-IF-Anweisung nur die Auswahl von Beobachtungen innerhalb desDATA-Steps zuläßt, ist es mit Hilfe der WHERE-Anweisung möglich, sowohl im DATA- alsauch im PROC-Step Selektionen durchzuführen.

Die WHERE-Anweisung hat die allgemeine Form:

WHERE ausdruck;

ausdruck ist ein aus arithmetischen und/oder logischen Operanden und Operatorengebildetes Selektionskriterium, welches auch zusätzliche WHERE-spezifischeOperatoren enthalten kann.

Die WHERE-Anweisung gehört nicht zu den ausführbaren (executable) Anweisungen unddarf daher nicht im ELSE-Zweig einer IF-THEN-Anweisung verwendet werden. Sie darf nurauf SAS-Dateien angewandt werden (nicht für die Selektion von Datensätzen externerDateien anwendbar). Sie darf ebenfalls nicht zusammen mit Anweisungen, die sich auf dieBeobachtungsnummer beziehen, angewandt werden (FIRSTOBS=, OBS=). Bei ihrerVerwendung wird vom System immer FIRSTOBS=1 angenommen.

Beispiele:

WHERE S11 > 50;

DATA ZWEI; SET GESAMT; WHERE F1G1 = 7 AND S1 = 2;

PROC PRINT; WHERE NAME='Müller';

Als Operanden der WHERE-Anweisung können auch isoliert stehende Variablennamenbenutzt werden:

WHERE S6;

DATA AUSW; SET GESAMT; WHERE S9 AND S17;

Dabei gilt bei numerischen Variablen die Bedingung als "wahr", wenn die genannte Variableeinen nicht fehlenden Wert ungleich 0 hat; "falsch" gilt für Variablenwerte 0 und fehlendeWerte.Bei alphanumerischen Variablen gilt "wahr" für von blank verschiedene Werte, "falsch" fürdurch Leerzeichen gekennzeichnete missings.Die WHERE-Anweisung kann alle im SAS gültigen logischen, arithmetischen undVergleichsoperatoren enthalten. Die Verwendung von SAS-Funktionen ist nicht erlaubt.Zusätzlich gibt es eine Reihe WHERE-spezifischer Operatoren, die nur in dieser Anweisungbenutzt werden dürfen:

IS NULL | IS MISSING

für die Auswahl aller Beobachtungen (numerisch oder alphanumerisch), deren Variablenwertmissing ist:

WHERE S1 IS MISSING;

Page 38: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

38

wählt alle Beobachtungen mit fehlendem Wert bei S1 aus.

BETWEEN WERT1 AND WERT2;

für die Auswahl von Werten innerhalb definierter Grenzen WERT1 und WERT2.

WHERE S13 BETWEEN 9 AND 12;

wählt Beobachtungen mit S13 zwischen 9 und 12 aus.

Für Zeichenvariablen stehen zusätzliche Operatoren zur Verfügung:

CONTAINS | ? für die Auswahl von Beobachtungen, deren Zeichenvariablen einespezifizierte Zeichenkette enthalten. Die Position der Zeichenkette imVariablenwert ist beliebig; es wird zwischen Groß- und Kleinschreibungunterschieden.

WHERE NAME ? 'mei'; wählt Datensätze aus, in denen die Variable NAME dieZeichenkette "mei" enthält z.B. Vormeier, Turnmeiner, Gemeiner; der Name"Meibach" wird aber beispielsweise nicht auswählt (wegen Groß-/Kleinschreibung).

LIKE für die Auswahl von Beobachtungen in denen Werte von alphanumerischenVariablen mit einem vorgegebenen Muster übereinstimmen. Für die Definitiondes Musters stehen zwei Ersatzzeichen (Joker) zur Verfügung - dasProzentzeichen (%) und der Unterstrich (_). % steht dabei für eine beliebigeFortsetzung, der Unterstrich gilt als Ersatz für einzelne Zeichen. Im definiertenMuster wird nach Groß- und Kleinschreibung unterschieden.

WHERE NAME LIKE 'S%' wählt Beobachtungen aus, in denen die Variable NAME einemit S (groß !) beginnende und beliebig fortgesetzte Zeichenkette enthält.

WHERE NAME LIKE 'H_u_' wählt Beobachtungen aus, die in der Variablen NAME einevierstellige Kette enthalten, welche mit H beginnt, das zweite Zeichen istbeliebig, das dritte Zeichen ist ein "u" und das vierte wiederum beliebig.

WHERE NAME LIKE 'D_r__m%' wählt Beobachtungen aus, in denen der Wert derVariablen NAME mit "D" beginnt, das zweite Zeichen ist beliebig, das dritte ein"r", die folgenden zwei beliebig, das sechste ist "m" und der Rest derZeichenkette (Fortsetzung) beliebig.

=* wählt phonetisch ähnliche Zeichenketten nach dem Soundex-Algorithmus aus.Da dieser jedoch scheinbar auf amerikanische Sprachverhältnissezugeschnitten ist, funktioniert er im deutschen Sprachbereich zum Teil nichtrichtig oder liefert mindestens unvorhergesehene Ergebnisse.

WHERE NAME =* 'Meier' würde beispielsweise alle Beobachtungen auswählen, in denendie Variable NAME eine Zeichenkette enthält, die phonetische Ähnlichkeit mitder angegebenen Vergleichskette ("Meier") hat, also z.B. Meier, Meyer, Maier.

Page 39: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

39

SAME AND erlaubt das Erweitern einer WHERE-Anweisung:

WHERE bedingung_1; . SAS-Anweisungen

. WHERE SAME AND bedingung_2; . SAS-Anweisungen

. WHERE SAME AND bedingung_n; .

Die bedingung_1 wird durch die erste SAME AND-Konstruktion um die bedingung_2erweitert, die erweiterte Bedingung durch die nächste SAME AND-Konstruktion undbedingung_3 u.s.w. bis zur bedingung_n.

Achtung:

Die o.g. 3 Operatoren für Zeichenvariablen und der SAME AND_Operator stehen in denälteren PC-Versionen von SAS nicht zur Verfügung.Statt der WHERE-Anweisung kann auch die analoge WHERE=-Dateioption verwendetwerden. Sie wird in Klammern hinter den dazugehörigen Dateinamen gesetzt:

DATA AUS2; SET D1 (WHERE= (S1 = 1)) D2 (WHERE= (F8P10 = 1));

In die Datei AUS2 werden aus der Datei D1 nur Beobachtungen mit S1=1 und aus der DateiD2 nur Beobachtungen, bei denen die Variable F8P10 den Wert 1 hat, übernommen.

4.4.6 Bildung von Subfiles - SET-Anweisung

Zur Erinnerung:

SAS liest alle zu verarbeitenden Datensätze, unabhängig davon, ob sie über dieKombination INFILE-INPUT (externe Daten) oder CARDS-INPUT (instream-Daten -s.Abschnitt 5.1.2) eingelesen werden in eine eigene System-Arbeitsdatei (SAS-Datei), derenName am Beginn des DATA-Steps spezifiziert wird, ein:

DATA EIN; INFILE DATEN '........'; INPUT ......;

oder

INFILE DATEN '........'; DATA EIN; INPUT ........;

Page 40: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

40

oder

DATA EIN; INPUT ..........; CARDS; . . ;

In allen drei Fällen werden die Rohdaten in eine SAS-Datei namens EIN eingelesen. ÜberSelektionsanweisungen (s.o.) kann die Auswahl der einzulesenden Datensätze definiertwerden.Mit Hilfe der SET-Anweisung können Beobachtungen aus existierenden SAS-Dateiengelesen und an andere SAS-Dateien übergeben oder angefügt werden. Über die SET-Anweisung werden standardmäßig alle Beobachtungen und alle Variablen einer SAS-Dateiübernommen, es sei denn, die Anzahl wird durch entsprechende Optionen oderAnweisungen eingeschränkt.Die SET-Anweisung kann u.a. benutzt werden, um:

• Den Inhalt einer Datei an eine andere zu übergeben, wobei evtl. Selektionen den Umfangder übergebenen Daten einschränken können.

• Mehrere Dateien miteinander zu verketten.• Dateien in sortierter Reihenfolge zu verketten.

In einem DATA-Step können mehrere SET-Anweisungen benutzt werden.

Die SET-Anweisung hat die allgemeine Form:

SET datei_1 [(dateioptionen)] [datei_2 [(dateioptionen)]] [...[datei_n [(dateioptionen)]]];

datei ist der Name einer SAS-Datei, deren Inhalt übertragen werden soll. Sie kanntemporär oder permanent sein (s. SAS-Dateisystem). In Abhängigkeit von derArt sind entsprechende Namenskonventionen zu beachten.

Beispiel:

DATA AUSW1; SET GESAMT;

Die Datei AUSW1 wird mit dem kompletten Inhalt der Datei GESAMT belegt (alleBeobachtungen und alle Variablen - Datei wird kopiert).

DATA MANN; SET GESAMT; IF S1 = 1; . . SAS-Anweisungen

. DATA FRAU; SET GESAMT; IF S1 = 2; . . SAS-Anweisungen

Page 41: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

41

Hier werden zwei neue SAS-Dateien erzeugt - MANN und FRAU. Beide werden mit Inhaltender Datei GESAMT belegt, allerdings die Datei MANN nur mit Beobachtungen, für die dieVariable S1 den Wert 1 hat und die Datei Frau mit Beobachtungen mit S1 = 2. BeideDateien haben den kompletten Variablensatz der Datei gesamt, allerdings die erste (MANN)nur für "männliche" Beobachtungen und die zweite (FRAU) nur für die "weiblichen". Aufbeiden Dateien können anschließend unterschiedliche SAS-Anweisungen ausgeführtwerden.

DATA MANN; SET GESAMT; WHERE S1 = 1;DATA FRAU; SET GESAMT; WHERE S1 = 2;

wie oben, jedoch mit der WHERE-Anweisung.

dateioptionen sind Optionen, mit deren Hilfe u.a. Beobachtungen und/oder Variablenausgewählt werden können (DROP=, KEEP= (s.u.); WHERE, FIRSTOBS=,OBS= (s.o.)). Sie müssen in Klammern hinter dem dazugehörigenDateinamen gesetzt werden.

DATA AUSW2; SET MANN (OBS=20); DATA AUSW3; SET FRAU (FIRSTOBS=50 OBS=20);

Die SAS-Datei AUSW2 erhält 20 Beobachtungen der Datei MANN, mit der erstenbeginnend; die Datei AUSW3 erhält 20 Beobachtungen der Datei FRAU, allerdings mit der50. Beobachtung beginnend.

4.4.6.1 Verknüpfen von Teildateien

Werden in der SET-Anweisung mehrere Dateinamen nacheinander genannt, so werden dieentsprechenden Dateien in der Zieldatei hintereinander gesetzt. Die Reihenfolge derNennung entscheidet über die Reihenfolge der Verkettung. Werden keineAuswahlbedingungen definiert, ist die Anzahl der Beobachtungen der aus der Verkettungresultierenden Datei gleich der Summe der Beobachtungen der verketteten Dateien.

DATA GESAMT; SET DAT1 DAT2 DAT3;

Die Datei GESAMT enthält die Beobachtungen von DAT1, dahinter die von DAT2, gefolgtvon Beobachtungen der Datei DAT3.

DATA GESAMT; SET DAT3 DAT1 DAT2;

Die Datei GESAMT enthält die Beobachtungen von DAT3, dahinter die von DAT1, gefolgtvon den Beobachtungen der Datei DAT2.

Achtung:

Enthalten die zu verketteten Dateien nicht die gleichen Variablen, erhalten dieBeobachtungen in der verketteten Datei für die Variablen, die in einer Teildatei nichtvorhanden waren, fehlende Werte zugewiesen. Hat beispielsweise die Datei DAT1 eineVariable X1, die Datei DAT2 neben X1 nach eine Variable X2 und die Datei DAT3 außer X1

Page 42: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

42

und X2 auch noch eine Variable X3, so erhält die verkettete Datei GESAMT (s. Beispieloben) in den Beobachtungen aus DAT1 fehlende Werte für X2 und X3 und für dieBeobachtungen aus DAT2 fehlende Werte für X3 zugewiesen.Auch bei der Verkettung können Selektionen von Beobachtungen vorgenommen werden:

DAT GESAMT; SET DAT1 (OBS = 10) DAT2 (FIRSTOBS = 20 OBS = 20) DAT3 (WHERE= (S1 = 1)) DAT4;

Die Datei GESAMT erhält 10 Beobachtungen von DAT1 (mit der ersten beginnend), 20Beobachtungen von DAT2 (beginnend mit der 20.) alle Beobachtungen von DAT3 mit S1=1und den kompletten Inhalt von DAT4.Sind die zu verkettenden Dateien nach einer gemeinsamen Variablen sortiert, können sie sozusammengeführt werden, daß die resultierende Datei ebenfalls nach dieser Variablensortiert ist:

DATA AUSW3; SET DAT1 DAT2; BY F8P10;

Die Datei AUSW3 enthält die Beobachtungen von DAT1 und DAT2 sortiert nachAusprägungen der Variablen F8P10. Vorher müssen allerdings die Dateien DAT1 und DAT2nach F8P10 sortiert werden (siehe PROC SORT).

4.4.6.2 Daten aus permanenten SAS-Dateien

Permanente SAS-Dateien (s. SAS-Dateiensystem) können bei der Auswahl vonBeobachtungen wie temporäre behandelt werden. Es müssen i.A. nur dieSyntaxkonventionen für permanente SAS-Dateien beachtet werden (zweistufiger Name,Verwendung der LIBNAME-Anweisung).

LIBNAME DATEN1 'C:\ROHDAT'; DATA DATEN1.NEU; SET MANN; IF S4 = 1;

Die neu zu erstellende permanente SAS-Datei DATEN1.NEU erhält aus der temporärenSAS-Datei MANN alle Sätze mit S4=1.

LIBNAME DATEN1 'C:\ROHDAT'; DATA AUSW; SET DATEN1.GES; IF S1 = 1;

Die temporäre SAS-Datei AUSW erhält aus der permanenten SAS-Datei DATEN1.GES alleBeobachtungen mit S1=1.

LIBNAME AUSW 'C:\ROHDAT'; DATA AUSW.NEU; SET AUSW.ALT; IF S2 = 7;

Die neu zu erstellende permanente SAS-Datei AUSW.NEU erhält aus der schonbestehenden permanenten SAS-Datei AUSW.ALT alle Beobachtungen mit S2=7.

Page 43: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

43

5 Der PROC-Step (Auswertungsprozeduren)

SAS-Prozeduren sind integrierte Programme, die Daten einer Datei einlesen,prozedurspezifisch verarbeiten und die Ergebnisse ausgeben. Während die bisherbeschriebenen Programmtechniken lediglich der Vorbereitung der Daten dienten, ohne eineAuswertung zu veranlassen, beginnt mit dem Aufruf eines PROC-Steps die eigentlicheVerarbeitung und Auswertung. Das gesamte SAS-Programm ist prinzipiell eine Folge vonDATA- und PROC-Steps, mindestens aber eine Gruppe bestehend aus einem DATA- undeinem PROC-Step:

DATA PROC .. PROC DATA ......... PROC DATA .. PROC ... DATA

5.1 SAS-Prozeduren

Die Anwendung der im SAS-Programmsystem zur Verfügung stehendenAuswertungsprozeduren ist vom Aufruf her recht einfach. Komplizierter kann je nachProzedur die Anwendung prozedureigener Parameter sein. Hier sei evtl. in diesemZusammenhang auf entsprechende Handbücher verwiesen (siehe Literaturverzeichnis).Eine Prozedur wird mittels einer PROC-Anweisung aufgerufen. Die erste PROC-Anweisungnach einem DATA-Step beendet diesen automatisch.

Die PROC-Anweisung hat die allgemeine Form:

PROC prozedurname [aufrufparameter]; prozeduranweisungen [/ prozedurparameter];

mit:

prozedurname Name der Auswertungsprozedur - i.d.R. ein Kürzel desProzedurnamens.

aufrufparameter Spezielle Anweisungen zur Steuerung des Datenflusses, Variablenauswahl bzw. Untergruppenbildung (S. Abschnitt 6.1.1)

prozeduranweisungenprozedurspezifische Schlüsselwörter zur Wahl der Untersuchungsart, Untersuchungsmethode, Modellspezifikation, Definition der Berechnungen und allgemeinen Prozedursteuerung.

/prozedurparameter zusätzliche prozedurspezifische Angaben zur erweiterten Steuerung des Prozedurablaufs.

Beispiel:

PROC FREQ DATA=AUSW2; TABLES VAR2 VAR3 / NOCUM;

Page 44: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

44

Aufgerufen wird hier die Prozedur FREQ (Frequencies) zur Berechnung von einfachenHäufigkeiten. Der Aufruf besteht aus:

Schlüsselwort PROC ProzeduraufrufFREQ ProzedurnameDATA=AUSW2 AufrufparameterTABLES VAR2 VAR3 ProzeduranweisungNOCUM Prozedurparameter

5.1.1 Ausgewählte Aufrufparameter

Bei fast allen SAS-Prozeduren gibt es drei generelle Anweisungen, die den Ablauf derjeweiligen Prozedur beeinflußen:

1. DATA= - Anweisung Beim Aufruf einer Auswertungsprozedur nimmt das System an, daß die zuletzt erstellte

SAS-Systemdatei (siehe DATA-Step) ausgewertet werden soll. Ist dieses nicht der Fall,muß direkt hinter dem Prozedurnamen die Anweisung:

DATA=dateiname

folgen, um den Bezug zur gewünschten SAS-Systemdatei herzustellen. Beispiel:

DATA DAT1; INFILE DATEN ´C:\DATEN\ROH1.DAT´; INPUT V1 V2 V3 V4;DATA DAT2; SET DAT1; IF V1 = 1;PROC FREQ; TABLES V2 V3;PROC FREQ DATA=DAT1; TABLES V2 V3;RUN;

Die erste Prozedur FREQ verarbeitet die Daten der SAS-Systemdatei DAT2 (letzte im

Job erstellte Datei). Wäre die zweite FREQ-Prozedur ohne den AufrufparameterDATA=DAT1 aufgerufen worden, hätte sie die gleiche Datei (DAT2) verarbeitet, derangegebene Parameter ermöglicht die Verarbeitung einer vorher im Job generiertenSAS-Datei (DAT1).

2. VAR=- Anweisung Um nicht alle Variablen einer SAS-Systemdatei in eine Auswertung einbeziehen zu

müssen, kann man mittels der VAR=-Anweisung eine einschränkende Auswahl treffen:

VAR=variablenliste;

Ohne die VAR=-Anweisung werden in einigen SAS-Prozeduren alle Variablen der

angesprochenen SAS-Systemdatei ausgewertet, bei anderen wiederum nur allenumerischen.

Page 45: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

45

Beispiel:

DATA DAT1; INFILE DATEN ´C:\DATEN\ROH1.DAT´; INPUT V1 V2 $ V3 V4; PROC PRINT; VAR=V1 V3; RUN;

Die Prozedur PRINT würde ohne die VAR=-Anweisung die Werte aller eingelesenen

Variablen ausgeben, mit der Anweisung beschränkt sich die Ausgabe nur auf dieVariablen V1 und V3.

3. BY=- Anweisung Sollen bei Auswertungen Untergruppen nach den Ausprägungen bestimmter Variablen

gebildet werden, ist dies mittels der Anweisung:

BY=variablenliste;

im Prozeduraufruf möglich. Die Anweisung bewirkt, daß die Prozedurauswertungen für so

viele Untergruppen separat durchgeführt werden, wie die angegebene(n) Variable(n)Ausprägungen aufweisen (siehe auch BY-Option bei Prozeduren).

Beispiel: DATA DAT1;

INFILE DATEN ´C:\DATEN\ROH1.DAT´; INPUT V1 V2 $ V3 V4; PROC PRINT; VAR=V1 V3; BY=V4; RUN;

Page 46: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

46

6 Variablen- und Werteetiketten

Nach SAS-Konventionen gebildete Variablennamen sind oft recht verwirrend und seltenselbsterklärend. Bei Variablenausprägungen (Werten), die vor der Dateneingabe oft ver-schlüsselt werden, insbesondere wenn die erhobenen Daten nicht numerisch sind, ist dieInterpretierbarkeit oft auch erheblich erschwert, wodurch die Wahrscheinlichkeit einerFehlinterpretation steigt. Um die durch solche zwar notwendigen, aber oft recht hinderlichenVerschlüsselungs- und Benennungsprobleme erhöhte Fehlerwahrscheinlichkeit bei Interpre-tationen von Ergebnissen zu reduzieren, bittet SAS die Möglichkeit, mittels geeigneter An-weisungen bzw. Prozeduren, sowohl die Variablennamen als auch die Ausprägungen vonVariablen mit geeigneten Etiketten (Labels) zu versehen. Beide Anwendungen sollen nun imfolgenden beschrieben werden.

6.1 Variablenlabels - die LABEL-Anweisung

SAS-Variablennamen sind aufgrund eingeschränkter Namenskonventionen nicht immerselbsterklärend. Insbesondere bei hoher Anzahl einzulesender Variablen ist es oftproblematisch, ihre Namen selbsterklärend zu gestalten.Um die Lesbarkeit von Auswertungsprotokollen zu erhöhen, ist es allerdings oft sinnvoll, dieVariablennamen mit Etiketten (Beschriftungen, Labels) zu versehen. BenutzerdefinierteVariablenetiketten werden von vielen SAS-Prozeduren verwendet.

Der Definition von Variablenetiketten (Labels) dient die LABEL-Anweisung. Sie hat dieallgemeine Form:

LABEL variable_1='etikett' ...[variable_n='etikett'];

variable ist der Name der Variablen, der ein Label zugewiesen werden soll.

etikett ist eine maximal 40 Zeichen umfassende Zeichenkette, die in Hochkommataeingeschlossen werden muß. Beinhaltet das Label selbst Hochkommata, soist die Zeichenkette entweder in doppelte Einführungszeichen zu setzten oderdas zur Zeichenkette gehörende Hochkomma als doppeltes Hochkomma zukennzeichnen.

Beispiele:

LABEL VAR1 = 'Monatlicher Verdienst';LABEL VAR1 = 'Kandel''s Tau';LABEL VAR1 = "Kandel's Tau";

In einer LABEL-Anweisung können beliebig viele Variablen mit Labels versehen werden.

Beispiel:

LABEL GAST1 = 'Mehr Lebensstilanpassung' GAST2 = 'Gastarb.: Heim bei knapper Arbeit' GAST3 = 'Gastarb.: Polit. Betätigung verbieten' GAST4 = 'Gastarb.: Sollten unter sich heiraten';

Die LABEL-Anweisung kann im DATA- und im PROC-Step verwendet werden.• Wird die Label-Zuweisung zu einem Variablennamen im DATA-Step vorgenommen, ist

sie permanent.

Page 47: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

47

• Eine im PROC-Step vorgenommene Zuweisung ist temporär für die Dauer der Prozedurund überschreibt für diese Dauer eine evtl. früher für die gleiche Variable definierte Label-Belegung.

Beispiel:

DATA E1; INPUT ID VAR1 VAR2; LABEL ID = ' Kennung' VAR1 = 'Geschlecht' VAR2 = 'Alter';PROC PRINT; LABEL VAR2 = 'Alter in Jahren';PROC FREQ;

Das der Variablen VAR2 im DATA-Step zugeordnete Label Alter wird für die Dauer derersten Prozedur (PROC PRINT) in den Wert Alter in Jahren geändert, in der zweitenProzedur (PROC FREQ) hat die Variable wieder ihr ursprüngliches Label.

6.2 Value-Labels - Die Prozedur FORMAT

Variablenwerte (Ausprägungen, Labels) werden, insbesondere wenn die erhobenen Datennicht numerisch sind, oft verschlüsselt. Dadurch wird die Interpretierbarkeit der Ergebnisseoft erschwert, die Wahrscheinlichkeit einer Fehlinterpretation steigt.Um dies zu vermeiden, bietet SAS analog zur Etikettierung von Variablennamen auch dieMöglichkeit, Variablenausprägungen mit Etiketten (value labels) zu versehen.Für die Etikettierung von Variablenausprägungen wird eine eigene Prozedur verwendet -PROC FORMAT. Mir ihrer Hilfe ist es nicht nur möglich, einzelnen Variablenausprägungenjeweils ein Etikett zuzuordnen; mehrere Werte können zu einer Kategorie mit einemgemeinsamen Etikett zusammengefaßt oder aber Wertebereiche gebildet und mit Etikettenversehen werden.Die Prozedur bietet zusätzlich die Möglichkeit, der Bildung von sog. Bildformaten für dieAusgabe numerischer Variablen sowie recodierender Einleseformate; hier sei jedoch nur dieWerteetikettierung beschrieben.

6.2.1 Formatdefinition

Die Prozeduranweisung hat die folgende Form:

PROC FORMAT;VALUE formatname

wertebereich_1 = 'etikett_1'...wertebereich_n = 'etikett_n';

Die VALUE-Anweisung definiert die Werteetiketten der Variablenausprägungen alsAusgabeformate.

formatname ist ein benutzerdefinierter Name des Formats (Labelgruppe für eine Variable).Er muß den SAS-Namenskonventionen genügen (max. 8 Zeichen lang,alphanumerisch beginnend).

Page 48: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

48

Zusätzlich gilt:

• formatname darf kein reserviertes SAS-Wort oder Name eines SAS-Standardformatssein.

• formatname darf nicht numerisch sein.• formatname für alphanumerische Variablen muß mit einem Dollarzeichen ($) beginnen ($

zählt bei der maximalen Länge von 8 Zeichen mit !).

Beispiel:

PROC FORMAT; VALUE GESCHL 1 = 'Mann' 2 = 'Frau';

PROC FORMAT; VALUE $GESCHL 'm' = 'männlich' 'w' = 'weiblich' 'x' = 'keine Angabe';

wertebereich definiert einen einzelnen Variablenwert, eine Liste von Variablenwerten, einenBereich von Werten oder eine Liste von Bereichen, denen ein Etikettzugeordnet werden soll.

Mindestens ein wertebereich muß definiert werden.Eine Übersicht der möglichen Formen bietet die folgende Tabelle:

Form Beispielwert Einzelwert 21wert,..,wert Einzelwertliste 19,21,24,27wert-wert Wertebereich 13-18bereich,...,bereich Liste von Bereichen 5-10,11-15

Für die wertebereich-Angaben gelten folgende Regeln:

• Jede wert-Angabe kann maximal 16 Zeichen umfassen, bei Überschreitung wird ab dem17. Zeichen abgeschnitten,es erfolgt die Augabe einer Fehlermeldung in die SAS-LOG.

• Werte alphanumerischer Variablen sind in Hochkommata einzuschließen (siehe Beispieloben).

• Wertebereiche dürfen sich nicht überlappen:

VALUE WERT1 1-10 = 'unterdurchschn.' 10-20 = 'überdurchschn.';

• Zur Definition von Wertebereichen können zusätzlich drei Schlüsselwörter benutztwerden:

LOW und HIGH für den kleinsten und größten Wert (auch bei alphanumerischenVariablen - hier Sortierreihenfolge entscheidend),OTHER für alle Variablenwerte, die nicht den spezifizierten Wertebereichenzugeordnet werden.

Page 49: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

49

Beispiel:

VALUE TEST LOW-3 = 'tief' 5-7 = 'hoch' OTHER = 'ungültiger Wert';

würde bei einer Variablen mit den markierten Werten 1-8 die Werte 1-3 der Kategorie 'tief',die Werte 5-7 der Kategorie 'hoch', die Werte 4 und 8 (aber auch etwaige 'missings') derKategorie 'ungültiger Wert' zuordnen.

Beispiele zur Kategorienbildung:

wert 1 = 'ja'wert1,wert2,... 1,2,3,7,= 'stimme zu'wert1-wert2 18-21 = 'unter 21 Jahren'

'a'-'d' = 'richtig'LOW-wert LOW-17 = 'nicht vollj.’wert-HIGH 65-HIGH = 'rentenberecht.'bereich-bereich 14-17,18-25 = 'in der Ausbildung'OTHER OTHER = 'sonstige Angaben'

etikett ist der dem Wertebereich zugeordnete formatierte Wert (label). In derAusgabe werden die Werte im wertebereich durch das etikett ersetzt.

Für das etikett gelten die folgenden Regeln:

• etikett ist generell in Hochkommata zu setzen.• etikett darf maximal 40 Zeichen lang sein, manche Auswertungsprozeduren verwenden

jedoch nur die ersten 8 bzw. 16 Zeichen.• Wird einem oder mehreren Variablenwerten kein Etikett zugeordnet, werden ihre

codierten Werte in der Ausgabe verwendet.

Beispiel:

PROC FORMAT; VALUE MONAT 1 = 'Januar' 2 = 'Februar' 4 = 'April' 5 = 'Mai';

In den Monatsangaben (numerisch kodiert) würden die mit 3 und 6-12 codierten Monate inder Ausgabe keine Monatsnamen erhalten.

6.2.2 Verwendung von Formaten (FORMAT-Anweisung)

Die in der PROC FORMAT definierten Werteetiketten werden von Auswertungsprozedurennur dann benutzt, wenn sie im PROC-Step (Prozedurenaufruf) über eine FORMAT-Anweisung den jeweiligen Variablen zugeordnet werden.

Die Anweisung hat die Form:

FORMAT variable [format] ...variable [format];

Page 50: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

50

variable ist der Name der Variablen, der ein zuvor definiertes Format zugeordnetwerden soll. Es können mehreren Variablen gleiche Formate zugewiesenwerden (siehe Beispiel).

format der Name des zuzuordnenden, in der VALUE-Anweisung der PROC FORMATdefinierten Formats. Hinter dem Formatnamen muß ein Punkt (.) gesetztwerden !

Beispiel:

DATA TEST; INPUT (GAST1-GAST4) (1.) AINFO 40 #2 SEX;PROC FORMAT; VALUE GESCHL 1='männlich' 2='weiblich'; VALUE GAST 1='ja' 2='nein' 9='keine Angabe';PROC FREQ; FORMAT SEX GESCHL. GAST1 AINFO GAST.; TABLES SEX GAST1 AINFO;RUN;

In der PROC FORMAT werden die Formate GESCHL und GAST definiert. In derAuswertungsprozedur (PROC FREQ) werden mittels FORMAT-Anweisung der VariablenSEX das Format GESCHL und den Variablen GAST1 und AINFO das gemeinsame FormatGAST zugeordnet ( beachte jeweils den Punkt (.) nach dem Formatnamen in der FORMAT-Anweisung !).Soll ein im PROC-Step einer Variablen zugewiesenes Format aufgehoben werden, wird dieVariable in einer zusätzlichen FORMAT-Anweisung ohne Formatnamen genannt.

Beispiel:

PROC FREQ; FORMAT SEX GESCHL. GAST1 AINFO GAST.; TABLES SEX GAST1 AINFO;

FORMAT AINFO; TABLES SEX*AINFO;RUN;

Die Variable AINFO wird einmal mit einem Format versehen ausgewertet, zugewiesen durchdie erste FORMAT-Anweisung. Die 'leere' FORMAT-Anweisung (vorletzte Zeile) hebt dieFormatzuordnung auf, so daß die Variable im zweiten Auswertungsschritt mit ihren codiertenAusprägungen ausgegeben wird.

Page 51: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

51

7 Output-Gestaltung (OPTIONS-Anweisung)

Die Gestaltung der Ausgabeseiten eines SAS-Programms kann über die OPTIONS-Anweisung vorgenommen werden. Diese Anweisung sollte, wenn sie für die gesamteAusgabe gelten soll, (unabhängig davon für welche Angaben sie verwendet wird) möglichstam Anfang eines SAS-Programms (oberste Zeile) stehen. Sollen Optionen zur Output-Gestaltung nur für Teile der Ausgabe gelten, kann die OPTIONS-Anweisung im SAS-Jobauch direkt vor dem gewünschten Programmteil (z.B. Prozeduraufruf) benutzt werden.

7.1 Seitenlänge

Die Seitenlänge der SAS-Ausgabe kann mittels der oben genannten Option definiertwerden. Der gewünschte Wert wird hinter die OPTIONS-Anweisung gesetzt:

OPTIONS PAGESIZE = n;

n gibt die Anzahl Zeilen pro Outputseite des SAS-Ausgabe an und kann Wertezwischen 15 und 32767 annehmen. Der Defaultwert ist installationsabhängig undkann daher hier nicht angegeben werden.

Beispiel:OPTIONS PAGESIZE = 47;

7.2 Seitenbreite

Die Seitenbreite wird, wie die Seitenlänge, über eine Systemoption gesetzt. Dies kannzusammen mit der Definition der Seitenlänge in einer Anweisung geschehen. Auch hier gilt,daß die Definition der Seitenbreite möglichst am Anfang eines SAS-Programmsvorgenommen werden sollte:

OPTIONS LINESIZE = n;

n spezifiziert die Länge einer Outputzeile im Ausgabeprotokoll (Anzahl Druckzeichen pro Zeile) und kann Werte zwischen 64 und 256 annehmen.

Beispiel:

OPTIONS LINESIZE = 65;oder

OPTIONS PAGESIZE = 75 LINESIZE = 65;

7.3 Seitenausrichtung

Prozeduroutputs der SAS-Auswertungsprozeduren werden standardmäßig zentriertausgegeben. Das führt manchmal zu unerwünschten Effekten bei relativ breiten Outputs -die Ausgabe wird evtl. in mehrere Teile „zerhackt“. Es ist jedoch mittels geeigneter Optionenmöglich, diesen Effekt zu unterbinden:

OPTIONS NOCENTER;

Page 52: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

52

7.4 Titel und Fußnoten

7.4.1 Titel

Das Programmprotokoll und die Auswertungsprotokolle können mit Überschriften versehenwerden. Hierzu wird die TITLE-Anweisung benutzt.

Die TITLE Anweisung hat die allgemeine Form:

TITLE[ n] [' text ' | " text "];

n ist die relative Zeilennummer der Titelzeile. Es kann Werte zwischen 1 und 10 annehmen. 1 für TITLE1 kann ausgelassen werden.

'text'"text" Text der Titelzeile. Maximal 132 Zeichen lang.

Wird nur TITLE ohne zusätzliche Argumente gesetzt, werden alle davor definiertenTitelzeilen auf 'blank' gesetzt.Die TITLE-Anweisung kann beliebig oft und an beliebigen Stellen des SAS-Programmsgesetzt werden. Jede TITLE[n]-Anweisung setzt eine neue Überschriftenzeile und setztetwaige vorher für den Wert n definierte Zeilen außer Kraft.Die Numerierung der Titelzeilen muß nicht fortlaufend sein. Zeilen mit nicht genanntenrelativen Nummern werden auf 'blank' gesetzt.Alle definierten Überschriftenzeilen werden zentriert innerhalb der für die Ausgabedefinierten Zeilenlänge gesetzt.

Beispiel:

TITLE 'Ein SAS-Beispielprogramm';TITLE2 'Probeauswertung';TITLE5 'Häufigkeitstabellen';TITLE6 '===> Kreuztabelle 1 <===';

7.4.2 Fußnoten

Ähnlich wie mit Überschriften kann der SAS-Output mit Fußnoten versehen werden. Mit Hilfeder FOOTNOTE-Anweisung können bis zu 10 Fußnoten definiert werden.

Die Anweisung hat die allgemeine Form:

FOOTNOTE[n] [' text ' | " text "];

n relative Zeilennummer der Fußnotenzeile. Kann Werte zwischen 1 und 10annnehmen. Wird kein Wert angegeben, nimmt das System 1 an.

'text' Text der gewünschten Fußnotenzeile.

Wird FOOTNOTE ohne zusätzliche Argumente gesetzt, werden alle davor definiertenFußnoten gelöscht ( auf 'blank' gesetzt).

Page 53: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

53

Fußnoten können, wie Titel, an beliebiger Stelle des Programms gesetzt und geändertwerden.

Beispiel:

FOOTNOTE 'Auswertung vom:';FOOTNOTE2 ' 15.10.92';

7.5 Unterdrücken von Seitenelementen und -formaten

Neben selbst definierten Elementen (Titel, Fußnoten) enthalten die Ausgabe-SeitenStandard-Elemente, wie Datum, eine automatisch generierte erste Titelzeile mit einem SAS-Schriftzug oder vordefinierte Längenangaben für Zeilen- und Seitenlängen. Einige dieserElemente können über die OPTIONS-Anweisung verändert oder unterdrückt werden. Wirddiese Anweisung beispielsweise mitten im SAS-Job verwendet, können auch selbstdefinierte Werte für Teile der Ausgabe festgelegt werden.

Beispiele:

OPTIONS NODATE NOCENTER LINESIZE=65 PAGESIZE=75;

unterdrückt die Ausgabe von Datum, die Ausgabe wird linksbündig positioniert, dieSeitenlänge auf 75 Zeilen und die Zeilenlänge auf 65 Zeichen festgelegt.

OPTIONS PAGESIZE=70 NOCENTER;DATA DAT1;INPUT V1 V2 V3;..weitere Anweisungen.OPTIONS PAGESIZE=120;PROC PRINT; TITLE ´Liste der eingelesenen Werte´;OPTIONS PAGESIZE=65 LINESIZE=70 CENTER;PROC FREQ; TABLES .......;

die an Jobanfang gesetzten Optionen (Seitenlänge 70, linksbündige Ausgabe) werden fürdie Ausgabe der Prozedur PRINT geändert (Seitenlänge 120, linksbündige Ausgabe bleibt),vor der Prozedur FREQ wird die Seitenlänge auf 65 und die Zeilenlänge auf 70 gesetzt, dieAusgabe der Prozedurergebnisse erfolgt zentriert.

Page 54: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

54

8 Abschließendes Programmbeispiel

Am Beispiel eines vollständigen SAS-Programms soll hier die Anwendung möglichst vielerbeschriebener Syntaxelemente der SAS-Sprache demonstriert werden. Das Beispielprogramm sollDaten verarbeiten und auswerten, die einen Ausschnitt der in der Tabelle im Kap. 3.1 vorgestelltenMusterdaten darstellen. Die zu verarbeitenden Daten sind der Übersichtlichkeit halber als instream-Daten im Programmtext enthalten. Das Programm soll Mittelwerte des Einkommens und der Zeitdauerdes Schulbesuchs der befragten Personen errechnen, ausgeben und für eine Untergruppe von Datenauf eine permanente SAS-Datei speichern. Die Numerierung am linken Rand ist nicht Bestandteil desProgramms, sondern bezeichnet Programmteile, die im folgenden genauer kommentiert werden:

1) DATA BSP;

2) OPTIONS NODATE LINESIZE=64 PAGESIZE=52;

3) LIBNAME DATAUS ´C:\AUSWERT\DATEN´;

4) INPUT FAMSTD 1 SEX 2 ALTR 3 EINK 4-7 STT 8´ VORS 9 KNSW 10 SB 11-12;

5) LABEL FAMSTD=´Familienstand´ SEX=´Geschlecht ALTR=´Alter in Jahren´ EINK=´Einkommen´ SB=´Schulbesuch in Jahren´;

6) CARDS;111150011 0711218003221011322004240721118504241021222506471321326506381531117002131031221203131031224504130812118001340812221001210812320504341322119002 1022228003 513223140012108321200022408322175033706323350055 1125003261012 0800 1115

7) ;

8) PROC FORMAT; VALUE ALTRFMT 1 = ´18 - 21 Jahre´ 2 = ´22 - 35 Jahre´ 3 = ´36 - 45 Jahre´ OTHER = ´über 45 Jahre´; VALUE SEXFMT 1 = ´weiblich´ 2 = ´maennlich´;

9) PROC MEANS FW=9 MAXDEC=2; TITLE ´Ausgabe der Prozedur MEANS´; VAR EINK SB; CLASS SEX;

10) FORMAT SEX SEXFMT.;

11) OUTPUT OUT=BSP2 MEAN=;

12) PROC PRINT DATA=BSP2; TITLE1 ´Ausgabe der Prozedur PRINT´; TITLE2 ´Inhalt der OUT-Datei´;

13) RUN;

14) DATA DATAUS.MANN; SET BSP; IF SEX = 2;RUN;

Das Programm besteht aus folgenden Schritten:

Page 55: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

55

1) DATA-Anweisung. Definiert wird eine temporäre SAS-Arbeitsdateimit dem Namen BSP. Nach Beenden des SAS-Programms stehtdiese Datei nicht mehr zur Verfügung.

2) Programmoptionen (wahlfrei). Die Ausgabe des Tagesdatums imProtokoll wird unterdrückt, die Seitenlänge auf 52 Zeilen und dieZeilenlänge auf 64 Zeichen gesetzt.

3) Definition des Zugriffspfades zu einer SAS-Datenbibliothek mit demmnemonischen Namen DATAUS (für permanente Speicherung vonSAS-Systemdaten - hier DOS-spezifisch für DOS-SAS oder Win-SAS, UNIX-Angabe analog)

4) INPUT-Anweisung zur Beschreibung des einzulesenden Datensat-zes. Hier werden die Variablen definiert (benannt) und ihre relativePosition im Datensatz beschrieben.

5) Labeling (Ettiketierung) der Variablennamen - die unter 4) definier-ten Variablennamen werden für die Auswertungen durch die Eti-ketten ersetzt. Bei Speicherung in permanenten SAS-Dateien bleibtdas Labeling erhalten.

6) CARDS-Anweisung - Beginn der instream-Daten. Hier pro Beob-achtung eine Zeile, missings = Leerzeichen.

7) Semikolon in eigener Zeile als Kennung für Datenende.

8) Aufruf der Prozedur FORMAT zum value labeling - die Variablen-ausprägungen der Variablen ALTR und SEX werden mit Etikettenversehen. Die Formatnamen enden jeweils mit dem String FMT,um sie im weiteren Jobverlauf von Variablennamen unterscheidenzu können (Erfahrungswert, nicht zwingend, jedoch dürfen dieFormatnamen nicht dem Variablennamen gleich sein!)

9)

10)

11)

Aufruf der Prozedur MEANS zur Mittelwertberechnung.mit denParametern FW= und MAXDEC= (prozedurspezifisch). FW=9 legtdie Feldlänge für die Ausgabe von Variablenwerten auf 9 Zeichenfest, MAXDEC=2 legt die Anzahl von Dezimalstellen für die Aus-gabe der Werte auf 2 fest. Der Prozeduroutput wird mit einemgeeigneten Titel versehen.Gerechnet wird für die Variablen EINK und SB (VAR EINK SB),klassiert nach Ausprägungen der Variablen SEX (CLASS SEX), derbei der Ausgabe der errechneten Werte wird das in 8) definierteFormat zugewiesen (FORMAT SEX SEXFMT.).Zusätzlich wird eine Ausgabe der errechneten Mittelwerte über denParameter MEAN= in die SAS-Datei BSP2 (temporär) veranlasst.

12) Aufruf der Prozedur PRINT zur Ausgabe des Inhalts der unter 11)erstellten SAS-Datei BSP2.Über TITLE2 wird ein zusätzlicher Titel in einer zweiten Titelzeiledefiniert. Der in 9) definierte Titel bleibt bestehen.

13) Start des Prozedurblocks.

14) DATA-Step zum Generieren einer permanenten SAS-SystemdateiMANN in der unter 3) definierten SAS-Bibliothek DATAUS.Die Datei MANN wird mit allen Sätzen der Datei BSP belegt, für diedie Auswahl SEX=2 zutrifft.

Werden die auszuwertenden Daten nicht als instream-Daten im Programmtext gehalten(was eigentlich der Regelfall bei größeren Datenumfängen ist), sondern sollen sie aus einer,

Page 56: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

56

vom SAS-Programm aus gesehen, externen Rohdatendatei eingelesen werden, so hat dasobige Programm eine etwas andere Form. Es muß um die Definitionsteile der externen Dateierweitert werden (im nachfolgenden Beispiel durch * gekennzeichnet), die instream-Daten(incl. CARDS-Anweisung und abschließendem Semikolon) müssen entfernt werden:

DATA BSP;OPTIONS NODATE LINESIZE=64 PAGESIZE=52;

* FILENAME DATEN ´C:\ROHDAT\AUSWERT.DAT´;LIBNAME DATAUS ´C:\AUSWERT\DATEN´;

* INFILE DATEN;INPUT FAMSTD 1 SEX 2 ALTR 3 EINK 4-7 STT 8´ VORS 9 KNSW 10 SB 11-12;LABEL FAMSTD=´Familienstand´ SEX=´Geschlecht ALTR=´Alter in Jahren´ EINK=´Einkommen´ SB=´Schulbesuch in Jahren´;PROC FORMAT; VALUE ALTRFMT 1 = ´18 - 21 Jahre´ 2 = ´22 - 35 Jahre´ 3 = ´36 - 45 Jahre´ OTHER = ´über 45 Jahre´; VALUE SEXFMT 1 = ´weiblich´ 2 = ´maennlich´;PROC MEANS FW=9 MAXDEC=2; TITLE ´Ausgabe der Prozedur MEANS´; VAR EINK SB; CLASS SEX; FORMAT SEX SEXFMT.; OUTPUT OUT=BSP2 MEAN=;PROC PRINT DATA=BSP2; TITLE1 ´Ausgabe der Prozedur PRINT´; TITLE2 ´Inhalt der OUT-Datei´;RUN;DATA DATAUS.MANN; SET BSP; IF SEX = 2;RUN;

Beide Programmversionen arbeiten (bis auf das Einlesen der Rohdaten) identisch, jedoch istdie Verarbeitung über eine externe Rohdaten-Datei für das Handling des Programmtextes,wie schon dieses kleine Programmbeispiel sicherlich deutlich zeigt, wesentlich vorteilhafter.

Page 57: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

57

Der Vollständigkeit halber sei noch der Prozeduroutput und die vom Programm erzeugteSAS-Log hier angelistet:

Programmoutput: Ausgabe der Prozedur MEANS 1

SEX N Obs Variable Label N Mean----------------------------------------------------------------weiblich 10 EINK Einkommen 10 2102.00 SB Schulbesuch in Jahren 10 10.00

maennlich 10 EINK Einkommen 10 2010.00 SB Schulbesuch in Jahren 9 9.89----------------------------------------------------------------

SEX N Obs Variable Label Std Dev ------------------------------------------------------------ weiblich 10 EINK Einkommen 378.65 SB Schulbesuch in Jahren 2.49

maennlich 10 EINK Einkommen 731.36 SB Schulbesuch in Jahren 3.06

SEX N Obs Variable Label Minimum ------------------------------------------------------------ weiblich 10 EINK Einkommen 1500.00 SB Schulbesuch in Jahren 7.00

maennlich 10 EINK Einkommen 800.00 SB Schulbesuch in Jahren 6.00 ------------------------------------------------------------

SEX N Obs Variable Label Maximum ------------------------------------------------------------ weiblich 10 EINK Einkommen 2650.00 SB Schulbesuch in Jahren 15.00

maennlich 10 EINK Einkommen 3500.00 SB Schulbesuch in Jahren 15.00 ------------------------------------------------------------

Ausgabe der Prozedur PRINT 2 Inhalt der OUT-Datei

OBS SEX _TYPE_ _FREQ_ EINK SB

1 . 0 20 2056 9.9474 2 weiblich 1 10 2102 10.0000 3 maennlich 1 10 2010 9.8889

Page 58: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

58

SAS-LOG:

1 DATA BSP;2 OPTIONS NODATE LINESIZE=64 PAGESIZE=52;3 LIBNAME DATAUS 'C:\AUSWERT\DATEN';NOTE: Libref DATAUS was successfully assigned as follows: Engine: V608 Physical Name: C:\AUSWERT\DATEN4 INPUT FAMSTD 1 SEX 2 ALTR 3 EINK 4-7 STT 85 VORS 9 KNSW 10 SB 11-12;6 LABEL FAMSTD='Familienstand'7 SEX='Geschlecht'8 ALTR='Alter in Jahren'9 EINK='Einkommen'10 SB='Schulbesuch in Jahren';11 CARDS;

NOTE: The data set WORK.BSP has 20 observations and 8 variables.NOTE: The DATA statement used 10.71 seconds.

32 ;33 PROC FORMAT;34 VALUE ALTRFMT 1 = '18 - 21 Jahre'35 2 = '22 - 35 Jahre'36 3 = '36 - 45 Jahre'37 OTHER = 'über 45 Jahre';NOTE: Format ALTRFMT has been output.38 VALUE SEXFMT 1 = 'weiblich'39 2 = 'maennlich';NOTE: Format SEXFMT has been output.NOTE: The PROCEDURE FORMAT used 2.95 seconds.

40 PROC MEANS FW=9 MAXDEC=2;41 TITLE 'Ausgabe der Prozedur MEANS';42 VAR EINK SB;43 CLASS SEX;44 FORMAT SEX SEXFMT.;45 OUTPUT OUT=BSP2 MEAN=;

NOTE: The data set WORK.BSP2 has 3 observations and 5 variables.NOTE: The PROCEDURE MEANS used 5.26 seconds.

46 PROC PRINT DATA=BSP2;47 TITLE2 'Inhalt der OUT-Datei';48 RUN;

NOTE: The PROCEDURE PRINT used 1.87 seconds.

49 DATA DATAUS.MANN;50 SET BSP;51 IF SEX = 2;52 RUN;

NOTE: The data set DATAUS.MANN has 10 observations and 8 variables.NOTE: The DATA statement used 1.04 seconds.

Page 59: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

59

9 Aufruf des SAS-Systems

Je nach benutzter Version, sind die Aufrufe der SAS-Software auf den Anlagen desUniversitätsrechenzentrums unterschiedlich. Für die Lizenzsoftware auf Privatrechnern (inden meisten Fällen SAS für WINDOWS) oder Zugriffe auf URZ-Rechner (UNIX) vonprivaten Rechnern aus gelten die weiter im Text beschriebenen Bedingungen ebenfalls.Für alle SAS-Versionen sind mindestens rudimentäre Kenntnisse der jeweiligenBetriebssysteme unumgänglich. Dieses trifft insbesondere auf die UNIX-Versionen zu, woneben Kenntnissen des Betriebssystems auch noch Kenntnisse aus dem Bereich desHandlings von Computer-Netzen, Verbindungsaufbau und Datentransfer in Netzenerforderlich sind. Entsprechende Einführungs- und weiterführende Seminare findenregelmäßig im Universitätsrechenzentrum statt (Anmeldung über die Benutzerberatung desURZ, Tel. 2847).

9.1 WINDOWS-Version

Die WINDOWS-Version von SAS wird über ein eigenes Programmsymbol aufgerufen. Aufden Netzen des URZ ist dieses Symbol in der Programmgruppe Mathe/Statistik desProgrammanagers von WINDOWS zu finden.Bei lokalen Installationen wird für SAS vom Installationsprogramm eine eigeneProgrammgruppe eingerichtet.Die Standardoberfläche besteht aus drei Fenstern:

• dem Editor-Fenster• dem Output-Fenster• dem Log-Fenster.

Die Fenster werden als Pop-Up-Oberfläche generiert (ohne Funktionsleisten). Für denEinsteiger bzw. Anfänger, aber auch für WINDOWS-erfahrene Anwender ist esempfehlenswert, über die Funktion Options und deren Unterfunktion Preferences desHauptfensters von SAS, die Menu-Bar-Version (mit Funktionsleisten) einzustellen, die einArbeiten im gewohnten Windows-Standard ermöglicht:

Page 60: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

60

Empfehlenswert ist ebenfalls das Einblenden von Zeilennummern in die Editoroberläche(möglich über die Funktion Edit des Editorfensters, Unterfunktion Options, Option Numbers),da dadurch das Auffinden der SAS-Programmstatements in der SAS-Log erleichtert wird.Die Bedienung der SAS-Oberfläche erfolgt über die Funktionsleisten der Fenster oder überdie Tasten F1 bis F12, deren Belegung (auch individuell möglich) über die HELP-Funktionder Fenster abzufragen ist. Für Standardfunktionen gibt es eine Standardbelegung derFunktionstasten:

Taste Funktion BeschreibungF1 Help Online-HilfeF3 end Schließen eines FenstersF4 recall Wiedereinblenden eines Programmtextes oder

Programmteils in das Editorfenster (ab Cursor-Position)

F5 pgm Wechsel zum EditorfensterF6 log Wechsel zum Log-FensterF7 output Wechsel zum Output-FensterF8 zoom off /submit Verkleinern des Editorfensters und Übergabe des

SAS-Programms zur VerarbeitungF9 keys Information über die Belegung der F-TastenF11 command window Öffnen eines DOS-Eingabe-Fensters

9.2 UNIX-Versionen

9.2.1 VT100/VT200-Modus

Die SAS-Oberfläche im VT100/VT200-Modus (Line-Modus) der UNIX-Version bestehtebenfalls aus den drei schon oben genannten Fenstern, allerdings in einer anderenDarstellung - sichtbar sind nach dem Aufruf nur zwei Fenster - Editor und Log, das Output-Fenster erscheint erst nach Jobausführung.Um diese Version aufzurufen, ist zuerst über TelNet eine Verbindung zum UNIX-RechnerBonsai des URZ aufzunehmen, dort ein ordnungsgemäßes Login durchzuführen und dannüber das Kommando SAS die SAS-Software zu aktivieren. Voraussetzung dafür istallerdings eine gültige Benutzerkennung auf dem UNIX-Rechner. Für Studentinnen undStudenten der FeU gibt es eine Möglichkeit, eine solche Benutzerkennung in der Form einesDirekteintrags in den Rechner zu „beantragen“. Die Modalitäten des Vorgehens sind in derBroschüre Z021/9503 des URZ mit dem Titel „Broschürensammlung zur dezentralenRechnernutzung“ genau beschrieben (erhältlich beim Dispatch des URZ, Tel. 2825 oder2844). Die genante Broschüre enthält zusätzlich noch Informationen zumVerfbindungsaufbau, Arbeiten im UNIX-System, Datentransfer und Informationsdiensten.

Page 61: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

61

Durch die Eingabe des Kommandos PMENU in der Command-Zeile eines Fensters kanneine Menu-Bar-ähnliche Oberfläche (mit Funktionsleiste) der Fenster erreicht werden,wodurch eine WINDOWS-ähnliche Arbeitstechnik möglich wird:

Die Bedienung der Oberfläche erfolgt dann hauptsächlich über eine Funktionsleiste.Für Standardfunktionen gibt es auch hier eine Standardbelegung der Funktionstasten mitden Werten:

Taste Funktion BeschreibungF1 Help Online-HilfeF2 zoom Zoomen eines FenstersF3 submit / pgm Übergabe des SAS-Programms zur

VerarbeitungF4 pgm / recall Wechsel zum Editorfenster und

Einblenden von Programmen/Programmteilen

Ctrl / F6 output Wechsel zum Output-FensterCtrl / F7 page up

Page 62: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

62

Ctrl / F8 page downCtrl / L log Wechsel zum Log-FensterCtrl / U home Wechsel auf Pos 1 eines Fensters

9.2.2 X-Windows-Modus

Die äußere Bild der SAS-Oberfläche im X-Windows-Modus ist fast analog dem derWINDOWS-Version. Verfügbar ist diese Version auf dem UNIX-Rechner Bonsai des URZ(Benutzerkennung erforderlich - s. oben). Sie wird nur auf Geräten in lokalen Netzen desURZ in Hagen angeboten und kann dort in der hier dargestellten Form nach dem Eröffneneiner Bonsai-Sitzung aufgerufen werden:

Die Oberfläche besteht ebenfalls aus den schon oben genannten drei Fenstern und kann aufdem UNIX-Rechner Bonsai über das Kommando xsas aufgerufen werden. Es empfiehltsich, beim Aufruf den entsprechenden Prozess in den Hintergrund zu stellen (SAS alsHintergrundprozess aufrufen) - möglich über das Kommando.

xsas &

Auch in dieser SAS-Oberfläche ist eine kombinierte Bedienung über die Funktionsleisteund/oder Funktionstasten möglich.

Page 63: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

63

Für Standardfunktionen steht auch hier eine Standardbelegung der F-Tasten zur Verfügung(wie in den übrigen Versionen individuell konfigurierbar):

Taste Funktion BeschreibungF1 Help Online-HelpF2 keys Belegung der F-TastenF7 backward „Blättern“ nach oben (Editor)F8 forward „Blättern“ nach unten (Editor)F9 zoom off /submit Übergabe eines Programms zur

Verarbeitung und Verkleinern des Editor-Fensters

F10 left „Blättern“ nach links (Editor)F11 clear Löschen des Fensterinhalts

Ctrl / x insert Einfügen von Zeichen (Editor)

10 Arbeiten mit dem SAS-Editor

Unabhängig von der benutzten SAS-Version (s.o.) ist das Handling des Programm-Editorsnahezu gleich. Die Oberflächen des Editors besitzen eine Funktionsleiste, die unter anderemdie Funktionen File, Edit und View enthält, mittels derer über die drag und drop-Arbeitstechnik innerhalb der Editor-Oberfläche über Markierungen mit der Maus und dieBenutzung der entsprechenden Funktionsbefehle (z.B. Paste, Cut, Delete usw.) ein SAS-Programm aufgebaut (editiert) oder nach Anforderungen der Einzelauswertungen verändertwerden kann d.h. vorhandene oder zu generierende Programmteile können nach Bedarf anbeliebige gewünschte Positionen des Editor-Fensters gebracht werden können. Beikleineren, übersichtlichen Programmen ist diese Arbeitstechnik durchaus effektiv und auchempfehlenswert. Bei größeren (längeren) Programmen bedient man sich gerne eineranderen Methode:Der SAS-Editor aller Versionen beinhaltet zusätzlich einen spezifischen Oberflächenbereich- die Zeilennumerierung . Sollte diese nach dem Aufruf von SAS nicht in die Editor-Oberfläche eingeblendet worden sein, kann sie über die Funktionskette Edit - Options -Numbers nachträglich eingeblendet werden.In dem Bereich der Zeilennumerierung können Editierkommandos (sog. Zeilenkommandos)eingegeben werden, die das Handling des Editors schneller und evtl. sogar einfachermachen.Die Arbeit mit Zeilenkommandos ist sicherlich von der Arbeitstechnik her anders als dieunter Fensteroberflächen übliche Vorgehensweise der Markierungen und Übernahmen vonBlöcken bzw. Einzelzeichen oder Zeilen, bei vielen Editiervorgängen ist sie jedoch effektiverund ermöglicht einen schnelleren Programmaufbau bzw. Programmkorrektur und -strukturierung. Nachfolgend werden anhand von Beispielen die Standardarbeitsschrittedieser Arbeitstechnik erklärt.

Page 64: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

64

Übersicht der gebräuchlichsten Zeilenkommandos:

C oder CC Kopieren einer Zeilen (-blöcken)CL oder CCL Konvertieren aller Buchstaben in Kleinbuchstaben (Zeile oder Block)COLS Anzeigen eines SpaltenlinealsCU oder CCU Konvertieren aller Buchstaben in Großbuchstaben (Zeile oder Block)D oder DD Löschen einer Zeile oder eines ZeilenblocksI Einfügen von ZeilenJC oder JJC Zentrieren von Zeilen (-blöcken)JL oder JJL linksbündiges Ausrichten von Zeilen (-blöcken)JR oder JJR rechtsbündiges Ausrichten von Zeilen (-blöcken)M oder MM Verlagern (Move) von Zeilen (-blöcken)R oder RR Wiederholen von Zeilen (-blöcken)TC Verbinden zweier ZeilenTS Aufspalten zweier Zeilen an Cursor-Position> oder >> Rechtsverschiebung von Zeilen (-blöcken) ohne Zeichenverlust< oder << Linksverschiebung von Zeilen (-blöcken) ohne Zeichenverlust

Die in der Übersicht benutzten großen Buchstaben in Zeilenkommandos sind nicht bindend,es können in allen Kommandos kleine Buchstaben benutzt werden. Nach vollständigerEingabe des Kommandos werden systemseitig die Angaben in Großbuchstabenumgewandelt, deshalb erscheinen in den Beispielen dieses Kapitels allen Angaben inGroßbuchstaben.

Einige Kommandos liegen in zwei Versionen vor. Sie beziehen sich entweder auf einzelneZeilen oder auf Zeilenblöcke z.B. C für das Kopieren einer einzelnen Zeile und CC für dasKopieren eines Zeilenblocks.

Zeilenblöcke werden dadurch gekennzeichnet, daß man im Zeilennummernbereich derersten und der letzten Zeile eines Blocks die entsprechenden Buchstabenkombinationen desgewünschten Befehls plaziert (z.B. CC oder DD), der Befehl wirkt dann auf alledazwischenliegenden Zeilen incl. der Zeilen mit den Befehlsbuchstaben (siehe Beispieleweiter im Text).

Bei mehreren Befehlen kann ein zusätzliches Argument als Zielangabe angegeben werden:

A, B, O sind solche Argumente, die eine Zielangabe für die Kommandos zum Kopieren (C bzw.CC), Einfügen (I) oder Verlagern (M bzw. MM) von Zeilen oder Zeilenblöcken bilden.

A (für after) bewirkt, daß die zu bearbeitende Zeile (Block) hinter die mit Agekennzeichnete Zeile gesetzt wird.

B (für before) bewirkt, daß die zu bearbeitende Zeile (Block) vor die mit B gekennzeichneteZeile gesetzt wird.

O (für overlaying) bewirkt, daß die zu bearbeitende Zeile (Block) in die mit Ogekennzeichnete Zeile gesetzt wird, wobei alle Leerzeichen der mit O gekennzeichnetenZeile durch an gleicher Position stehende Zeichen der zu bearbeitenden Zeile ersetztwerden.

Die Zeilenkommandos im einzelnen:

C[n] zum Kopieren einer oder mehrerer Zeilen. Mit A, B oder O kann angegebenwerden, wohin die Zeile kopiert werden soll.Mit n (optional) kann die Anzahl der zu kopierenden Zeilen angegeben werden.

Beispiele:

Page 65: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

65

Eingabe: bewirkt:00001 PROC MEANS;C0002 RUN;A0003 PROC FREQ;0000400005

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004 RUN;00005

Eingabe: bewirkt:C2001 PROC MEANS;00002 RUN;A0003 PROC FREQ;0000400005

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004 PROC MEANS;00005 RUN;

Eingabe: bewirkt:C0001 1111111111111O0002 00 00 00 0000030000400005

00001 111111111111100002 0011001100110000030000400005

CC..CC zum Kopieren von Zeilenblöcken. Mit A, B oder O kann angegeben werden, wohindie Zeilen kopiert werden soll.Der n-Parameter steht bei CC nicht zur Verfügung.

Beispiel:

Eingabe: bewirkt:00001 CARDS;CC002 1 5 8 9CC003 2 4 6 8B000400005

00001 CARDS;00002 1 5 8 900003 2 4 6 800004 1 5 8 900005 2 4 6 8

CL[n]CCL

Konvertierung des Zeilentextes in Kleinschreibung (lover case)Der n-Parameter ist nur bei der Verwendung von CL möglich (nicht bei Blöcken vonZeilen).

Beispiele:

Eingabe: bewirkt:00001 PROC MEANS;CL002 RUN;00003 PROC FREQ;0000400005

00001 PROC MEANS;00002 run;00003 PROC FREQ;0000400005

Eingabe: bewirkt:00001 PROC MEANS;CL2 2 RUN;00003 PROC FREQ;0000400005

00001 PROC MEANS;00002 run;00003 proc freq;0000400005

Eingabe: bewirkt:CCL01 PROC MEANS;00002 RUN;CCL03 PROC FREQ;

00001 proc means;00002 run;00003 proc freq;

Page 66: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

66

0000400005

0000400005

CU[n]CCU

Konvertierung des Zeilentextes in Großschreibung (upper case)Der n-Parameter ist nur bei der Verwendung von CU möglich (nicht bei Blöckenvon Zeilen). Beispiele analog zu CL bzw. CCL.

COLS Einblenden eines Spaltenlineals, insbesondere bei der Eingabe von instream-Daten nützlich.Kann mit D (für delete) wieder ausgeblendet werden.

Beispiel:

Eingabe: bewirkt:00001 1111111111111COLS2 00 00 00 0000030000400005

00001 111111111111100002 ---- | ----10---- | ----00003 00 00 00 00000400005

D[n]DD

Löschen von Zeilen (D) oder Zeilenblöcken (DD)Über den n-Parameter können inclusive der gekennzeichneten Zeile n Zeilengelöscht werden.

Beispiele:

Eingabe: bewirkt:D0001 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

00001 RUN;00002 PROC FREQ;000030000400005

Eingabe: bewirkt:D2 01 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

00001 PROC FREQ;00002000030000400005

Eingabe: bewirkt:00001 CARDS;DD002 1 5 8 900003 2 4 6 800004 1 5 8 9DD005 2 4 6 8

00001 CARDS;00002000030000400005

I[A|B][n] Einfügen von leeren Zeilen. Die Angabe I (ohne Parameter) fügt eine leere Zeilehinter die mit I gekennzeichnete ein.mit n kann die gewünschte Anzahl einzufügender Zeilen angegeben werden.A bzw. B dienen als Zielangabe (siehe z.B. Kopieren von Zeilen C / CC)

Page 67: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

67

Beispiele:

Eingabe: bewirkt:I 0001 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

00001 PROC MEANS0000200003 RUN;00004 PROC FREQ;00005

Eingabe: bewirkt:I3 01 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

00001 PROC MEANS00002000030000400005 RUN;00006 PROC FREQ;00007

Eingabe: bewirkt:IB2 1 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

000010000200003 PROC MEANS00004 RUN;00005 PROC FREQ;00006

JC][n]JJC ][n]

Zentrieren einer Zeile oder eines Zeilenblocks.n gibt an, um welche Spalte herum zentriert werden soll.Bei JJC kann n sowohl am Blockanfang als auch am Blockende gesetzt werden.Wird an beiden Stellen n gesetzt, so wird nur die obere Angabe berücksichtigt.

JL ][n]JJL ][n]

Linksbündiges Ausrichten einer Zeile oder eines Zeilenblocks.n gibt an, an welcher Spalte ausgerichtet werden soll.Bei JJC kann n sowohl am Blockanfang als auch am Blockende gesetzt werden.Wird an beiden Stellen n gesetzt, so wird nur die obere Angabe berücksichtigt.

JR][n]JJR ][n]

Rechtsbündiges Ausrichten einer Zeile oder eines Zeilenblocks.n gibt an, an welcher Spalte ausgerichtet werden soll.Bei JJC kann n sowohl am Blockanfang als auch am Blockende gesetzt werden.Wird an beiden Stellen n gesetzt, so wird nur die obere Angabe berücksichtigt.

M[n]MM..MM

Verschieben (move) von Zeilen oder Zeilenblöcken.Als Zielangaben sind A, B oder O zu benutzen (siehe C / CC).Der Parameter n darf nicht beim Block-Kommando (MM) benutzt werden.

Beispiele:

Eingabe: bewirkt:00001 PROC MEANS;M0002 RUN;A0003 PROC FREQ;0000400005

00001 PROC MEANS00002 PROC FREQ;00003 RUN;0000400005

Page 68: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

68

Eingabe: bewirkt:M2 01 PROC MEANS;00002 RUN;A0003 PROC FREQ;0000400005

00001 PROC FREQ;00002 PROC MEANS00003 RUN;0000400005

Eingabe: bewirkt:B0001 PROC MEANS;00002 RUN;00003 PROC FREQ;MM004 CARDS;00005 1 5 8 900006 2 4 6 800007 1 5 8 900008 2 4 6 8MM009 ;

00001 CARDS;00002 1 5 8 900003 2 4 6 800004 1 5 8 900005 2 4 6 800006 ;00007 PROC MEANS;00008 RUN;00009 PROC FREQ;

R[n]RR[n]

Wiederholen von Zeilen oder Zeilenblöcken.n gibt an, wie oft die Einzelzeilen oder Zeilenblöcke wiederholt werden sollen.Die zu wiederholenden Zeilen werden unmittelbar hinter den durch R oder RRgekennzeichneten gesetzt.

Beispiele:

Eingabe: bewirkt:00001 CARDS;R0002 1 5 8 900003 2 4 6 80000400005

00001 CARDS;00002 1 5 8 900003 1 5 8 900004 2 4 6 800005

Eingabe: bewirkt:00001 CARDS;R4002 1 5 8 900003 2 4 6 80000400005

00001 CARDS;00002 1 5 8 900003 1 5 8 900004 1 5 8 900005 1 5 8 900006 1 5 8 900007 2 4 6 800008

Eingabe: bewirkt:00001 CARDS;RR002 1 5 8 9RR003 2 4 6 80000400005

00001 CARDS;00002 1 5 8 900003 2 4 6 800004 1 5 8 900005 2 4 6 800006

Eingabe: bewirkt:00001 CARDS;RR002 1 5 8 9RR3 3 2 4 6 80000400005

00001 CARDS;00002 1 5 8 900003 2 4 6 800004 1 5 8 900005 2 4 6 800006 1 5 8 900007 2 4 6 800008 1 5 8 900009 2 4 6 8

Page 69: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

69

TC Verbinden zweier Zeilen.Kann in zwei Versionen benutzt werden:• TC in die Zeilennumerierung setzen und die Eingabetaste drücken - Verbindet

die Folgezeile mit der gekennzeichneten.• TC in die Zeilennumerierung, Cursor in der gleichen Zeile an gewünschte

Position setzen - Verbindet die Folgezeile mit der gekennzeichneten ab derCursorposition.

Beispiele:

Eingabe: bewirkt:TC001 PROC00002 MEANS;00003 RUN;00004 PROC FREQ;00005

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

Eingabe: bewirkt:TC001 PROC _00002 MEANS;00003 RUN;00004 PROC FREQ;00005

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;0000400005

<[n]<<[n]

Linksverschiebung einer Zeile oder eines Zeilenblocks um n Positionen. Wird n sogroß angegeben, daß die Verschiebung über den Zeilenanfang hinausgehenwürde, wird nur bis zum Zeilenanfang verschoben (kein Zeichenverlust !)

>[n]>>[n]

Rechtsverschiebung einer Zeile oder eines Zeilenblocks um n Positionen. Analogzu Linksverschiebung - kein Zeichenverlust.

Beispiele:

Eingabe: bewirkt:>5001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004

Eingabe: bewirkt:>>001 PROC MEANS;00002 RUN;>>503 PROC FREQ;00004

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004

Eingabe: bewirkt:<<001 PROC MEANS;00002 RUN;<<11 PROC FREQ;00004

00001 PROC MEANS;00002 RUN;00003 PROC FREQ;00004

Page 70: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

70

11 Anhang: Beispiele zur Prozedursyntax

Im Folgenden wird die Prozedursyntax einiger Standardprozeduren beschrieben.Die Prozedursyntax wird in möglichst vollständiger Form dargestellt und kurz erläutert, auchwenn für Prozedurabläufe nicht immer das komplette Syntaxspektrum benötigt wird.Detaillierte Prozedurbeschreibungen können der Sekundärliteratur entnommen werden(siehe Literaturverzeichnis).

11.1 PROC FACTOR

Die PROC FACTOR bietet eine Reihe faktoranalytischer Verfahren sowieHauptkomponentenanalysen an. Eingabedaten können als Rohdaten, Korrelations- oderKovarianzmatrizen vorliegen. Da die Prozedur eine umfangreiche Verfahrenspalette bietet,ist die Syntaxbeschreibung recht umfangreich.

PROC FACTOR DATA=Dateiname TARGET=datei OUT=datei OUTSTAT=dateiMETHOD | M= PRINCIPAL | PRIN | P

PRINITULS | UALPHA | AML | MHARRIS | HIMAGE |IPATTERN SCORE

COVARIANCE | COV WEIGHT MAXITER=nCONVERGE=c | CONV=c HEYWOOD | HEYULTRAHEYWOOD | ULTRAPRIORS= ONE | O

MAX | MSMC | SASMC | AINPUT | IRANDOM | R

NFACTORS | NFACT=q PROPORTION=p | PERCENT=p | P=pMINEIGEN=n | MIN=nROTATE | R= NONE | N

VARIMAX | VQUARTIMAX | QEQUAMAX | EORTHOMAX GAMMA=nHK HKPOWER=n | HKP=nPROMAX | P POWER=n PRE=namePROCRUSTES

NORM=KAISER | WEIGHT | NONE | RAWSIMPLE | S CORR | C MSA SCREEEIGENVECTORS | EV PRINT RESIDUALS | RESPREPLOT PLOT NPLOT=n SCORE ALL REORDER | REROUND FLAG=q FUZZ=q NOINT NOCORRSINGULAR=p | SING=p;

BY varliste; FREQ variable;PARTIAL varliste; PRIORS kommunalitäten; VAR variablen;WEIGHT variable;

Dateioptionen

Page 71: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

71

DATA=Dateiname zu verarbeitende DateiTARGET= Datei mit Zielfaktormatrix für PROCRUSTES-RotationOUT= Ausgabedatei für FaktorenscoresOUTSTAT= Ausgabedatei u.a. für Faktorladungen und scoring-Koeffizienten

Methodenoptione nMETHOD= | M= LösungsmethodePRINCIPAL | PRIN | P HauptkomponentenlösungPRINIT iterierte „principal factor“-Lösung mit PRIORS=ONEULS | U ungewichtete kleinste QuadrateALPHA | A Alpha-FaktorenanalyseML | M „maximum likelihood“-FaktorenanalyseHARRIS | H Harris KomponentenanalyseIMAGE | I Hauptkomponentenanalyse der Image-KovarianzmatrixPATTERN Verarbeitung von FaktorenmatrizenSCORE Verarbeitung von Score-KoeffizientenCOVARIANCE | COV Faktorisierung der KovarianzmatrixWEIGHT Faktorisierung der gewichteten Korrelations- bzw. KovarianzmatrixMAXITER= maximale Anzahl Iterationen bei M=PRINIT, ULS, ALPHA, ML (default=30)CONVERGE= | CONV= Konvergenzkriterium bei M=PRINIT,ULS,ALPHA,ML (default=.001)HEYWOOD | HEY jede Kommunalität >1 wird =1 gesetzt

KommunalitätenschätzungULTRAHEYWOOD | ULTRA läßt Kommunalitäten > 1 zuPRIORS= Methode zur KommunalitätenschätzungONE | O Kommunalitäten werden auf 1 gesetztMAX | M Eingangsschätzung: pro Variable der Betrag der höchsten KorrelationSMC | S Quadrat der multiplen Korrelation zwischen der Variablen und allen

übrigenINPUT | I Einlesen der Eingangsschätzungen über DATA=RANDOM |R Eingangsschätzungen=Zufallszahlen zwischen 0 und 1

Anzahl der FaktorenNFACTORS= | NFACT= | N= maximale Faktorenzahl (default: = Anzahl Variablen)PROPORTION= | PERCENT= | P= Mindestanteil der „erklärten“ Varianz

RotationsoptionenROTATE= | R= RotationsmethodeNONE | N keine Rotation (Defaultwert)VARIMAX | V VarimaxrotationQUARTIMAX | Q QuartimaxrotationEQUAMAX | E EquamaxrotationORTHOMAX OrthomaxrotationGAMMA= Gewicht für die OrthomaxrotationHK Harris-Kaiser Orthoblique-RotationHKPOWER= | HKP= Potenz der Quadratwurzeln der Eigenwerte (für R=HK; default: 0)PROMAX | P PromaxrotationPOWER= Potenz zur Berechnung des Zielmusters (für R=P; default: 3)PREROTATE= | PRE= Vorrotationsmethode für die PREMAX-RotationPROCRUSTERS schifwinklige ZielrotationNORM= Normierung der Zeilen des FaktormustersKAISER Kaiser-NormierungWIEGHT Gewichtung der Reihen nach der Cureton-Mulaik-MethodeNONE | RAW keine Normierung

zusätzliche Statistiken und DruckausgabeoptionenSIMPLE | S Mittelwerte und StandardabweichungenCORR | C KorrelationsmatrixMSA Partialkorrelationen für jedes VariablenpaarSCREE Scree-Plot der EigenwerteEIGENVECTORS | EV Ausgabe der EigenvektorenPRINT Ausgabe des Faktorenmusters oder der ScorekoeffizientenRESIDUALS | RES ResidualkorrelationsmatrixPREPLOT Plot der Faktormuster vor der RotationPLOT Plot der Faktormuster nach der RotationNPLOT= Anzahl der zu plottenden FaktorenSCORE Faktorscore-KoeffizientenALL maximale Druckausgabe (ohne Plots)REORDER | RE Ausgabe der Variablen mit der höchsten Ladung zuerstROUND Multiplikation der Korrelationen und Ladungen mit 100 und RundungFLAG=q mit ROUND: Werte mit Betrag > q werden markiertFUZZ=q Korrelationen oder Ladungen mit Absolutwert < q werden als „missings“

ausgegebenNOINT keine Verwendung von Intercept

Page 72: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

72

NOCORR keine Ausgabe der Korrelationsmatrix in die OUTSTAT-Datei (beiM=PATTERN oder SCORE)

SINGULAR= | SING= Singularitätskriterium für die Korrelationsmatrix (default: 1E-8)

11.2 PROC FREQPROC FREQ berechnet Häufigkeits- und Kontingenztabellen mit und/oder ohnestatistische(n) Tests.

PROC FREQ DATA = DateinameORDER = DATA | FORMATTED | FREQ | INTERNAL | PAGE;

BY Varliste;TABLES Tabellen / ALL ALPHA=p CELLCHI2 CHISQ CMH CMH1 CMH2 CUMCOL

DEVIATION EXACT EXPICTED LIST MEASURES MISSING MISSPRINT NOCOL NOCUM NOFREQ NOPERCENTNOPRINT NOROWOUT=DateiSCORES=MODRIDIT | RANK | RIDIT | TABLE | SPARSE;

WEIGHT Variable;

DATA=Dateiname zu analysierende SAS-DateiORDER= Datenanordnung in der Ausgabe:

DATA - wie in der analysierten DateiFORMATTED - nach formatierten WertenFREQ - nach HäufigkeitenINTERNAL - unformatiert (default)

BY Getrennte Analysen nach BY-GruppenTABLES Tabellenanforderung:

1fach: TABLES Variablenliste2fach: TABLES Var1*Var2nfach: TABLES Var1*Var2*...*Varn oder (Variablenliste)*(Variablenliste)

ALL Berechnung aller StatistikenALPHA=p Konfidenzintervalle 100*(1-p)CELLCHI2 Zellbeitrag zum x2

CHISQ Test auf Homogenität oder Unabhängigkeit für jede Schicht (bei mehr als 2Dimensionen) mit Pearson- x2 , Likelihood-Ratio- x2 , Mantel-Haenszel- x2 , f,Kontingenzkoeffizient, Cramers V und fishers exakter Test bei 2x2-Tabellen

CMH Cochran-Mantel-Haenszel-StatistikenCMH1 wie oben, jedoch nur KorrelationsstatistikCMH2 wie CMH, jedoch nur Korrelations- und Anova-StastistikCUMCOL kummulative SpaltenhäufigkeitenDEVIATION Abweichung der Zellenhäufigkeit vom ErwartungswertEXACT Fishers exacter Test (für >= 2x2-KontingenztabellenEXPECTED erwartete Häufigkeiten (nur ohne LIST !)LIST Listenausgabe (keine Tabellen)MEASURES Assoziationsmaße mit asymptotischem STE (ASE)MISSING Missings in Berechnungen einbeziehenMISSPRINT Ausgabe fehlender WerteNOCOL keine ZeilenhäufigkeitenNOCUM keine kumulierten WerteNOPERCENT keine ProzentwerteNOPRINT keine Druckausgabe (in Verb. mit OUT=)NOROW keine ZeilenprozenteOUT=Datei Ausgabedatei für TabellenSCORES= Reihen- und Spalten-Scores für Mantel-Haenszel-Statistik und Pearson-KorrelationWEIGHT Variable Gewichtungsvariable(n)

11.3 PROC MEANS

Page 73: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

73

PROC MEANS berechnet deskriptive Statistiken - gemäß Voreinstellung Anzahl Beobach-tungen (N), Minimum (MIN), Maximum (MAX), Mittelwert (MEAN) und Standardabweichung(STD).

PROC MEANS DATA=Dateiname DESCENDING FW = Breite MAXDEC = n MISSING NOPRINT NWAYORDER = DATA | EXTERNAL | FORMATTED | FREQ | INTERNALVARDEF = DF | N | WDF | WGT CSS CV KURTOSIS MAX MINMEAN N NMISS PRT RANGE SKEWNESS STD STDERR SUMSUMWGT T USS VAR;

BY Varliste;CLASS Varliste;FREQ Variable; OUTPUT OUT=Datei MAXID | MINID (var1(id1)....(varn(idn)=namensliste

stat=listestat(varliste)=listestat=stat(varliste)=;

VAR Variablenliste;WEIGHT Variable;

DATA=Dateiname zu verarbeitende SAS-DateiDESCENDING Ausgabe absteigend nach _TYPE_-WertFW= Feldbreite für Ausgabewerte (default 12)IDMIN kleinster Wert der ID-VariablenMAXDEC=n Anzahl Nachkommastellen in der AusgabeMISSING Missing-Werte als KlassenNOPRINT keine Druckausgabe (mit OUTPUT)NWAY Ausgabe nur für höchste _TYPE_-WerteORDER Stufenanordnung der CLASS-Variablen (Zuordnung siehe PROC FREQ)VARDEF= Nenner für die Berechnung von Varianzen und Kovarianzen:

N: Anzahl BeobachtungenDF: N-1WGT: Summe der GewichteWDF: WGT-1.

BY Varliste By-Gruppen-Angabe (Sortierung erforderlich)CLASS Varliste Class-Variablen (keine Sortierung erforderlich).OUTPUT Prozedurausgabe auf DateiOUT=Datei Dateiname für die AugabeMAXID | MINID Verknüpfung des größten/Kleinsten Wertes einer Analysevariablen mit dem

Wert einer Identifizierungsvariablen:var1,..,varn - Analysevariablenid1,..,idn - Identifizierungsvariablennamensliste - Namen für Kombinationen

stat Statistikanforderungen:varliste - Namen der Analysevariablenliste - Ergebnisvariablen

VAR zu analysierende Variablen (fehlt VAR, werden alle numerischen Variablenausgewertet)

WEIGHT Gewichtungsvariable(n)

Page 74: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

74

11.4 PROC PRINCOMP

PROC PRINCOMP führt Hauptkomponentenanalysen durch. Datenbasis sind Rohdaten-,Korrelations- oder Kovarianzmatrizen. Ausgegeben werden u.a. Eigenwerte undEigenvektoren sowie standardisierte und nicht-standardisierte Hauptkomponentenscores.

PROC PRINCOMP COVARIANCE | COV DATA=Dateiname N=KompAnzahl NOINTNOPRINT OUT=datei OUTSTAT=datei PREFIX=präfixSTANDARD | STD;

BY variablen;FREQ Nvar;PARTIAL variablen;VAR varliste;WEIGHT variable;

COVARIANCE | COV Hauptkomponenten aus Kovarianzen bestimmenDATA=Dateiname zu bearbeitende DateiN= Anzahl zu berechnender KomponentenNOINT keine Korrektur der Kovarianzen bzw. Korrelationen in Hinblick auf MittelwerteNOPRINT keine DruckausgabeOUT= Ausgabedatei für Originaldaten und HauptkomponentenOUTSTAT= Ausgabedatei für statistische KennwertePREFIX= Präfix für Komponenten (default: PRIN)STANDARD | STD Standardisierung der Komponentenwerte in der OUT-DateiBY BY-Gruppen-DefinitionFREQ jede Beobachtung entspricht Nvar BeobachtungenPARTIAL der Effekt der genannten Variablen wird herauspartialisiertVAR zu analysierende VariablenWEIGHT Gewichtungsvariable für jede Beobachtung (Wert >=0)

11.5 PROC PRINT

Die PROC PRINT gibt Inhalte von Dateien aus.

PROC PRINT DATA=Dateiname DOUBLE | D LABEL | L N NOOBS ROUND | RSPLIT= | S=zeichen UNIFORM | U;

BY varliste;PAGEBY variable;SUM variable;SUMBY variable;VAR varliste;

DATA=Dateiname Name der auszugebenden DateiDOUBLE | D vordoppelt die ZeilenzwischenräumeLABEL | L Ausgabe der Variablenlabel (sonst Variablenname)N Ausgabe der Anzahl der BeobachtungenNOOBS unterdrückt die Beobachtungsnummern in der AusgabeROUND | R Runden auf zwei NachkommastellenSPLIT=zeichenS=zeichen

Zeichen für Zeilenumbruch in Variablenlabeln

UNIFORM | U jede Seite mit gleichen Einstellungen ausgebenBY getrennte Ausgabe für BY-GruppenPAGEBY neue Seite beim Wechsel der BY-VariablenSUM Summe für genannte Variable ausgebenSUMBY Teilsummenausgabe beim Wechsel der BY-VariablenVAR auszugebende Variablen (sonst Ausgabe aller Variablen)

Page 75: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

75

11.6 PROC REG

PROC REG liefert Parameterschätzungen nach der Methode der kleinsten Quadrate fürlineare Regressionsmodelle.

PROC REG DATA=Dateiname OUTEST=datei OUTSSCP=datei NOPRINT SIMPLEUSSCP ALL COVOUT SINGULAR=n;

ADD variable;BY varliste;DELETE varliste;FREQ variable;ID variable;VAR varliste;WEIGHT variable;[Label:] MODEL abhängige Variable = unabhängige Variable / NOPRINT ALL XPX I

PARTIAL NOINT SS1 SS2 STB TOL VIF COVB CORRB SEQBCOLLIN COLLINOINT;

OUTPUT OUT=datei PREDICTED= | P= RESIDUAL= | R=L95M= U95= L95= U95=STDP= STDR= STDI= STUDENT= ;

RESTRICT gleichungen;[Label:] TEST gleichung / PRINT;

DATA=Dateiname Name der AsugabedateiOUTEST=datei Datei für die Ausgabe der ParameterschätzungenOUTSSCP=datei Datei für die Ausgabe der Quadrate-KreuzproduktmatrixNOPRINT keine DruckausgabeSIMPLE einfache deskriptive Statistiken für alle VariablenUSSCP Druckausgabe der unkorrigierten Quadratsummen-

KreuzproduktmatrixALL Ausgabe aller StatistikenCOVOUT Ausgabe der KovarianzmatrixSINGULAR=n Singularitätskriterium (default p=1E-8)ADD Hinzufügen von MODEL- oder VAR-VariablenBY Bildung von BY-GruppenDELETE Löschen von Variablen aus dem ModellFREQ jede Beobachtung entspricht numvar BeobachtungenID Identifizierung von BeobachtungenVAR Auszugebende VariablenWEIGHT GewichtungsvariablenMODEL Spezifikation einer ModellgleichungNOPRINT keine DruckausgabeALL Ausgabe aller StatistikenXPX Ausgabe X’X-KreuzproduktmatrixI Ausdruck von X’X-1

PARTIAL PartialregressionsplotsNOINT unterdrückt Interzept-TermSS1 / SS2 Quadratsummen-TypSTB standardisierte RegressionskoeffizientenTOL Toleranzwert für jede VariableVIF Varianzinflation der VariablenCOVB Kovarianzmatrix der ParameterschätzungenCORRB Korrelationsmatrix der PSSEQB sukzessive ParameterschätzungenCOLLIN KollinearitätsanalyseCOLLINOINT wie COLLIN mit ausschuß des InterzepsP Berechnung der vorhergesagten WerteR Analyse der ResiduenCLM Vertrauensintervallgrenzen des Erwartungswertes der

KriteriumsvariablenCLI Vertrauensintervallgrenzen des vorhergesagten Wertes für jede

Beobachtung

Page 76: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

76

OUTPUT OUT=datei AusgabedateiPREDICTED= | P= vorhergesagte WerteRESIDUAL= | R= ResiduenL95M / U95M untere / obere Grenze des 95%-Vertrauensintervalls für den

ErwartungswertL95 / U95 wie oben - für den vorhergesagten WertSTDI Standardfehler des vorhergesagten WertesSTUDENT studentized Residuen (durch Standardfehler dividiert)RESTRICT Restriktionen für ParameterschätzungenTEST Testen linearer Hypothesen

11.7 PROC SIMLIN

Die Prozedur PROC SIMLIN liest Koeffizienten struktureller Gleichungen (i.d.R. erzeugtdurch die Prozedur SYSLIN), berechnet die reduzierte Form und verwendet diese zumErrechnen von Prognosen.

PROC SIMLIN DATA=Dateiname ETS=DateinameESTPRINT INTERIM=nNOPRINT NORED OUTEST=dateiSTART=n TOTAL TYPE=wert;BY variablen;ENDOGENOUS variablen;EXOGENOUS variablen;ID variablen;LAGGED v-variable e-variable verzögerung;OUTPUT OUT=Dateiname

PREDICTED= | P= variablenRESIDUAL= | R= namen;

DATA=Dateiname zu verarbeitende DateiEST=Dateiname Datei mit SchätzungenESTPRINT Ausgabe des Inhalts der unter EST= angegebenen DateiINTERIM=n InterimanzahlNOPRINT unterdrückt DruckausgabeNORED unterdrückt Ausgabe der reduzierten FormOUTEST=datei Ausgabedatei für geschätzte ParameterSTART=n Nummer der ersten zu berücksichtigenden BeobachtungTOTAL Einbeziehung aller Werte (sonst nur LAG<0)TYPE= Parametertyp (= _TYPE_-Wert aus der EST=-Datei)BY GruppierungsvariablenENDOGENOUS Liste endogener VariablenEXOGENOUS Liste exogener VariablenID Übernahmevariablen für die OUT=-DateiLAGGED v-variable: verzögerte Variable

e-Variable: endogene Variableverzögerung: Grad der Verzögerung

OUTPUT OUT=datei AusgabedateiPREDICTED= | P=variablen auszugebende endogene VariablenRESIDUAL= | R=namen auszugebende Residuen

Page 77: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

77

11.8 PROC SORT

Die Prozedur PROC SORT sortiert Dateien nach einer sog. „collating sequence“, bspw.ASCII.

PROC SORT ASCII DATA=Dateiname EBCDIC EQUALS FORCE NODUPKEYNODUPLICATES | NODUPREC | NODUPOUT=dateiREVERSE;

BY [DESCENDING] variablenDESCENDING variable;

DATA=Dateiname zu sortierende DateiASCII Sortierung nach ASCIIEBCDIC Sortierung nach EBCDICEQUALS Beobachtungen mit gleichen BY-Werten behalten ihre relative PositionFORCE sortiert indizierte Datensätze (Index wird gelöscht)NODUPKEY Beobachtungen mit gleichen BY-Werten nicht in die AusgabedateiNODUPLICATES |NODUPREC | NODUP

Beobachtungen mit Übereinstimmungen in allen Variablen werden nicht in dieAusgabedatei übernommen

OUT=datei Ausgabedatei (sonst Eingabe=Ausgabe)REVERSE Sortierung alphanumerischer Variablen mit umgekehrter SequenzBY zu sortierende Variable(n) (Sortierung aufsteigend)DESCENDING kehrt Sortierreihenfolge um

11.9 PROC SUMMARY

Arbeitet wie PROC MEANS, jedoch mit dem Unterschied, daß standardmäßig keineStatistiken berechnet werden und beim Fehlen einer Variablenliste nur die Anzahl derBeobachtungen ausgegeben wird.

PROC SUMMARY DATA=Dateiname DESCENDING FW = Breite MAXDEC = n MISSING NOPRINT NWAYORDER = DATA | EXTERNAL | FORMATTED | FREQ | INTERNALVARDEF = DF | N | WDF | WGT CSS CV KURTOSIS MAX MINMEAN N NMISS PRT RANGE SKEWNESS STD STDERR SUMSUMWGT T USS VAR;

BY Varliste;CLASS Varliste;FREQ Variable; OUTPUT OUT=Datei MAXID | MINID (var1(id1)....(varn(idn)=namensliste

stat=listestat(varliste)=listestat=stat(varliste)=;

VAR Variablenliste;WEIGHT Variable;

Beschreibung der Prozeduranweisungen und -parameter siehe PROC MEANS.

Page 78: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

78

11.10 PROC SYSLIN

Die PROC SYSLIN wird für Schätzungen und Analyse von Parametern linearerGleichungssysteme, wie sie beispielsweise bei ökonometrischen Modellen auftreten,benutzt.

PROC SYSLIN DATA=Dateiname OUT=Dateiname OUTEST=DateiOUTCOV | COVOUTOLS ALL NOPRINT REDUCED SIMPLESINGULAR=wert;BY variablen;ENDOGENOUS variablen;INSTRUMENTS variablen;MODEL regressand=regressor(en);IDENTITY ausdruck;OUTPUT PREDICTED=variablen | P=variablen

RESIDUAL=variablen | R=variablen;TEST ausdruck;VAR variablen;WEIGHT variable;

DATA=Dateiname EingabedateiOUT=Datei AusgabedateiOUTEST=Datei Ausgabedatei für estimated parameterOUTCOV | COVOUT Ausgabe de CovarianzenOLS Ausgabe der ordinary least squaresALL Ausgabe aller berechneter WerteNOPRINT keine DruckausgabeREDUCED reduziertes Prognosemodell (nur mit IDENTITY)SIMPLE einfache deskriptive Statistiken für endogene VariableSINGULAR=wert Singularitätskriterium für die Kreuzproduktmatrix

(default =1E-8)BY Bildung von BY-GruppenENDOGENOUS= Definition endogener VariablenINSTRUMENTS= Definition der Instrumenten-Variablen (i.d.R. alle

prädeterminierten Variablen)MODEL regressand=regressor ModellspezifikationIDENTITY ausdruck IdentitätsgleichungPREDICTED=variablen ModellvariablenRESIDUAL=variablen ResiduenTEST ausdruck TesthypotheseVAR variablen zusätzliche, im MODEL nicht enthaltene Variabeln für

die KreuzproduktmatrixWEIGHT variable Gewichtungsvariable

Page 79: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

79

11.11 PROC TTEST

PROC TTEST berechnet zweiseitige t-Tests für unabhängige Stichproben. Sind dieVarianzen ungleich, wird t näherungsweise (Behrens-Fisher) und DF nach Satterthwaitesberechnet.

PROC TTEST COCHRAN DATA=Dateiname;BY varliste;CLASS variable;VAR variablen;

COCHRAN bei ungleichen Varianzen Schätzung von t nach Cochran & CoxDATA=Dateiname zu bearbeitende DateiBY BY-Gruppen-AngabeCLASS Variable mit Gruppeneinteilung (max zwei Stufen)VAR zu analysierende Variablen. Werden keine angegeben, Auswertung aller

numerischen, außer evtl. definierten CLASS-Variablen

11.12 PROC UNIVARIATE

PROC UNIVARIATE berechnet univariate deskriptive statistische Kennwerte, Box-Whisker-,stem-and-leaf- und Normalverteilungsplots, prüft auf Normalverteilung und berechnet einenzweiseitigen Wilcoxon-Test für abhängige Stichproben.

PROC UNIVARIATE DATA=Dateiname FREQ NOPRINTNORMAL PCTLDEF=Wert PLOTROUND=werteliste VARDEF=DF | N | WGT | WEIGHT | WDF;

BY varliste; FREQ variable; ID varliste;OUTPUT OUT=datei statistiken PCTLNAMES=suffixliste PCTLPTS=percentilwert

PCTLPRE=präfixliste;VAR variable;WEIGHT variable;

DATA=Dateiname zu bearbeitende DateiFREQ HäufigkeitstabellenNOPRINT keine DruckausgabeNORMAL Normalitätstest (bei n>2000 Kolmogorov, bei n<=2000 Shapiro-Wilk W-Statistik)PCTLDEF Verfahren der Perzentillberechnung (default für Wert: 5)PLOT Box-Whisker, stem-and-leaf- und NormalverteilungsplotROUND Rundungseinheiten für VariableVARDEF Nenner für die Berechnung von Varianzen und Kovarianzen:

N: Anzahl der BeobachtungenDF: N-1WGT: Summe der GewichteWDF: WGT-1

BY BY-Gruppen-DefinitionFREQ Häufigkeitstabelle der VariablenwerteID Variablen zu Identifizierung der 5 größten und 5 kleinsten WerteOUTPUT Generierung einer AusgabedateiOUT=datei Name der Ausgabedateistatistiken gewünschte statistische KennwertePCTLPTS PerzentilwertePCTLNAMES Perzentilnamen (suffix)PCTLPRE Namenspräfix für PCTLNAMESVAR zu analysierende Variablen (default: alle numerischen Variablen)WEIGHT Variable zur Berechnung gewichteter Mittelwerte und Varianzen (muß >= 0 sein)

Page 80: Einführung in das Statistiksystem SAS - fernuni-hagen.de · PDF file• SAS/IML enthält Prozeduren zur Matrixverarbeitung. • SAS/OR enthält Prozeduren zum Projektmanagement und

80

12 Literaturliste

• J.Gogolok, R.Schuemer, G.Ströhlein: Datenverarbeitung und statistische Auswertung mit SAS.Band I: Einführung, Datenmanagement und AuswertungG.Fischer Verlag Stuttgart 1992

• Th.Göttsche: SAS kompakt für die Vers. 6G.Fischer Verlag Stuttgart 1992

• Th.Göttsche: Einführung in das SAS-System für den PCG.Fischer Verlag Stuttgart 1990

• R.Schuemer, G.Ströhlein, J.Gogolok: Datenverarbeitung und statistische Auswertung mir SAS.Band II: Komplexe statistische AnalyseverfahrenG.Fischer Verlag Stuttgart 1990

• SAS Institute GmbH: Eine Einführung in das SAS-SystemVersion 6, 2. AuflageSAS Institute GmbH Heidelberg 1994

• SAS Institute Inc.: SAS Language ReferenceVers. 6 First EditionSAS Institute Inc. Cary, NC, USA 1994

• SAS Institute Inc.: SAS Language and ProceduresUsage 1/2, Vers. 6 First EditionSAS Institute Inc. Cary, NC, USA 1993

• SAS Institute Inc.: SAS Language and ProceduresSyntax, Vers. 6 First EditionSAS Institute Inc. Cary, NC, USA 1994

• SAS Institute Inc.: SAS Technical Report P-242SAS Software: Changes and Enhancements. Rel. 6.08SAS Institute Inc. Cary, NC, USA 1993

• SAS Institute Inc.: SAS Companion for UNIX Environments: LanguageVersion 6 First EditionSAS Institute Inc. Cary, NC, USA 1993

• SAS Institute Inc.: SAS Companion for UNIX Environments: User InterfacesVersion 6 First EditionSAS Institute Inc. Cary, NC, USA 1993