SAS

Tutorial

 

Peter HACKL

Peter MELICHAREK

 

 

 

 

Dieses SAS-Tutorial wurde von Peter HACKL und Peter MELICHAREK erstellt. Es steht Ihnen frei das SAS-Tutorial anzuwenden. Die Autoren behalten sich das Copyright vor. Bei einer Weitergabe des Materials ist dieser Copyrightvermerk ebenfalls weiterzugeben. Eine Verwendung des gesamten Tutorials oder eines Teils davon in Ihren Arbeiten ist nur mit Zustimmung der Autoren erlaubt.

 

Da dieser Kurs doch sehr umfangreich ist, haben wir ihn auf 6 Teile zerlegt, die einzeln geladen werden können. Trotzdem kann die Ladezeit etwas länger dauern.

1    Einleitung  S A S - T U T O R I A L

1.1    Allgemeines

1.2    BETRIEBSARTEN UND SAS-HELP

1.2.1    Betriebsarten:

1.2.2    SAS-HELP

2    SAS für den eiligen Benutzer

2.1    Lektion 1: EIN BEISPIEL

2.2    Lektion 2: Ein Programm

2.2.1    Allgemeines

2.2.2    DATEN

2.2.3    EINLESEN DER DATEN VON EINER BETRIEBSSYSTEM-DATEI:

2.2.4    SPALTENORIENTIERTES EINLESEN DER DATEN:

2.2.5    VERKNÜPFEN UND TRANSFORMIEREN DER DATEN:

2.3    Lektion 3: DER OUTPUT

2.4    Lektion 4: Der Datensatz HANDEL

2.5    Lektion 5:  FÜR SIE ZUM ÜBEN

2.5.1    1. AUFGABE

3    Mehr über den DATA-Step

3.1    DAS EINLESEN, SPEICHERN UND WIEDERAUFFINDEN VON DATEN

3.2    DAS AUFBEREITEN UND BEARBEITEN VON DATEN

3.3    DAS ERSTELLEN VON REPORTEN

3.4    DATEN

3.5    EINLESEN VON DATEN

3.6    INPUT-ANWEISUNG

3.7    FORMATDEFINITION

3.7.1    NUMERISCHE FORMATDEFINITIONEN:

3.7.2    ALPHANUMERISCHE FORMATDEFINITIONEN (BEGINNEN MIT "$"):

3.7.3    DATUMSFORMATE:

3.7.4    KONTROLLE DER SPALTEN UND ZEILEN

3.8    DIE CARDS-ANWEISUNG

3.9    MISSING VALUES

3.10    FUNKTIONEN

3.11    DAS AUFBEREITEN DER DATEN

3.12    SAS-AUSDRÜCKE

3.12.1    ARITHMETISCHE OPERATIONEN

3.12.2    LOGISCHE OPERATIONEN

3.12.3    STRING-OPERATION

3.13    BEREICHE

3.14    STEUERANWEISUNGEN

3.14.1    IF-ANWEISUNG

3.14.1.1    IF-THEN Anweisung

3.14.1.2    IF-THEN/ELSE Anweisung

3.14.1.3    Das 'subsetting IF'

3.14.2    SELECT-ANWEISUNG

3.15    DO Anweisung

3.15.1    DO-GRUPPE

3.15.2    DO WHILE-Schleife

3.15.3    DO UNTIL-Schleife

3.15.4    ITERATIVE DO-ANWEISUNG, ZÄHLSCHLEIFE

3.16    AUSWAHL VON VARIABLEN UND BEOBACHTUNGEN

3.16.1    DROP-Anweisung

3.16.2    KEEP-Anweisung

3.17    OUTPUT-Anweisung

3.18    DELETE-Anweisung

3.19    DAS EINLESEN VON DATEN aus einer Betriebssystemdatei

3.19.1    Lesen von der Disk

3.19.2    Lesen von einem Band

3.20    Ausgabe von Daten in eine Betriebssystemdatei

3.20.1    FILE-Anweisung

3.20.2    PUT-Anweisung

3.21    ARBEITEN MIT SAS-DATEIEN

3.22    SET-Anweisung

3.23    MERGE-Anweisug

3.24    Für Sie zum Üben

3.24.1    2. Aufgabe

3.24.2    3. Aufgabe

3.24.3    4. Aufgabe

3.24.4    5. Aufgabe

4    SAS-PROZEDUREN

4.1    AUFBAU der SAS-PROZEDUREN

4.1.1    Allgemeines

4.1.2    Optionen

4.1.3    Anweisungen

4.2    AUSGEWÄHLTE PROZEDUREN

4.2.1    AUSGABE DER DATEN AM DRUCKER ODER AM BILDSCHIRM

4.2.2    GRAPHISCHE DARSTELLUNG DER DATEN

4.2.2.1    PROC CHART

4.2.2.2    PROC PLOT

4.2.3    AUSZÄHLEN UND ANALYSIEREN VON HÄUFIGKEITEN

4.3    ÜBERSICHT ÜBER DIE SAS-PROZEDUREN

4.3.1    Erstellen von Graphiken

4.3.2    Deskriptive Statistik

4.3.3    Analyse von Häufigkeiten

4.3.4    Reporterstellung

4.3.5    Regressionsanalyse

4.3.6    Zeitreihenanalyse

4.3.7    Analyse linearer Modelle

4.3.8    Nichtparametrische Analyse

4.3.9    Diskriminanzanalyse

4.3.10    Clusteranalyse

4.3.11    Sonstige multivariate Verfahren

4.3.12    Überlebens-Analyse

4.3.13    Prozesskontrolle

4.3.14    Operations Research

4.3.15    Finanzplanung

4.3.16    Design von Experimenten

4.3.17    Utilities

4.4    FÜR SIE ZUM ÜBEN

4.4.1    6. Aufgabe

4.4.2    7. Aufgabe

4.4.3    8. Aufgabe

4.4.4    9. Aufgabe

5    REPORTERSTELLUNG

5.1    ALLGEMEINES

5.2    LABEL-ANWEISUNG

5.3    PROC FORMAT

5.3.1    Labels für einen Wertebereich

5.3.2    Darstellungsmasken

5.4    AUSGABE AUF EXTERNE DATEIEN

5.4.1    Allgemeines

5.4.2    FILE-Anweisung

5.4.3    PUT-Anweisung

5.5    FÜR SIE ZUM ÜBEN

5.5.1    10. Aufgabe

6    Tips und Tricks der Autoren

6.1    Die RUN-Anweisung

6.2    Arbeiten mit Landkarten

 

 

 

 

 

 

1     Einleitung  S A S - T U T O R I A L

1.1    Allgemeines

 

WER soll das SAS-Tutorial benützen?

 

Jeder, der einfache oder komplizierte Datenanalysen mit SAS machen möchte und noch keine Erfahrungen mit SAS hat. Also etwa Diplomanten und Dissertanten, die im Rahmen Ihrer wissenschaftlichen Arbeit eine empirische Studie planen.

 

WARUM sollen Sie das SAS-Tutorial benützen?

 

1.    Das SAS-Tutorial wird Sie in die Lage versetzen, einfache Anwendungen von SAS selbständig durchzuführen.

2.    Sie werden lernen, die SAS-Referenzkarten, die SAS-Handbücher und sonstige SAS-Unterlagen zu verstehen, sodass Sie mit deren Hilfe auch komplexere Aufgaben lösen können.

 

WAS können Sie im SAS-Tutorial lernen?

 

 Wir haben die Lektionen des SAS-Tutorial in sechs Abschnitte geteilt:

1.    Dieser Abschnitt ist die EINFÜHRUNG

2.    In FÜR DEN EILIGEN BENÜTZER geben wir Ihnen einen Überblick darüber, wie ein SAS-Programm aufgebaut ist. Sie werden seine Struktur und einige immer wiederkehrende Details kennenlernen.

3.    In MEHR ÜBER DEN DATA-STEP lernen Sie über die Möglichkeiten, Ihre Daten in SAS aufzubereiten, sodass sie für gewünschte statistische Verarbeitungen zur Verfügung stehen. Das Motto ist: Das Häufige und Wichtige zuerst.

4.    In SAS-Prozeduren geben wir Ihnen eine Übersicht über die in SAS verfügbaren Verfahren. Wir zeigen Ihnen in einfachen Beispielen, wie Sie SAS dazu bringen, die Verfahren auf Ihre Daten anzuwenden.

5.    In REPORT-ERSTELLUNG IN SAS zeigen wir Ihnen, wie Sie Ihre Daten und Ergebnisse von SAS-Programmen mittels SAS formatieren und so Tabellen im weiteren Sinn (Reports) erstellen können. Solche Reports können Sie beispielsweise in den Editor übernehmen, mit dem Sie Ihre Dissertation etc. schreiben.

6.    In Tips und Tricks der Autoren wird gezeigt, wie manche Prozeduren zu bedienen sind.

 

 

WIE sollen Sie sich das Durcharbeiten des SAS-Tutorial einteilen?

 

Sie sind ein EILIGER SAS-Benutzer (Sie wollen sich einen raschen Überblick verschaffen, vielleicht in einer einfachen Anwendung SAS selbst benutzen): Beschränken Sie sich auf den Abschnitt 2. Rechnen Sie mit etwa 90 Minuten zum Lesen der Schirme und etwa 30 Minuten zum Erstellen, Testen und Ausführen eines Übungs-Programmes.

 

Sie wollen SAS AUSFÜHRLICHER kennenlernen: Rechnen Sie mit folgenden Lese-Sessionen (L-S) und aktiven Sessionen (A-S) zu je 30 Minuten:

 

 Abschnitt                     L-S              A-S

 

 Für den eiligen Benützer        3                1

 Mehr über den DATA-Step         5                2

 Statistische Verfahren in SAS   2                2

 Report Erstellen in SAS         3                2

 

Wir habenden Arbeitsaufwand in 30-minütige Sessionen vor dem Bildschirm eingeteilt. Lese-Session bedeutet, dass Sie in dieser Zeit im SAS-Tutorial lesen. Aktive Session bedeutet, dass Sie in dieser Zeit ein SAS-Programm selbst erstellen, es testen, laufen lassen und den Output diskutieren. Sie sollten nicht mehr als eine Lese-Session pro Tag durchmachen, eventuell gemeinsam mit einer aktiven Session.

 

WIE arbeiten Sie mit dem SAS-Tutorial?

 

Um in die Lektion eines Abschnittes einzusteigen, wählen Sie in der Ausgangsmaske durch Verschieben des Cursors die Zeile des gewünschten Abschnittes an. Bestätigen Sie Ihre Anwahl mit der RETURN-Taste.

 

Zum Blättern innerhalb der Lektion und zum Verlassen benützen Sie die Funktionstasten. Die letzten beiden Zeilen jedes Bildschirmes zeigen Ihnen die Belegung der aktiven Funktionstasten an.

 

 

WELCHE KENNTNISSE sollten Sie mitbringen?

 

   Grundkenntnisse des BETRIEBSSYSTEMS: Diese können Sie sich in einem Kurs des Rechenzentrums erwerben. Fragen Sie im Sekretariat.

 

   Kenntnisse aus STATISTIK: Der Stoff aus Statistik, den Sie für die erste Diplomprüfung an der WU gelernt haben, ist eine gute Basis.

 

 

Bedenken Sie, dass Ihnen SAS hilft, Statistik anzuwenden. Sie selbst müssen VERSTEHEN, was Sie SAS für sich machen lassen. Dabei hilft Ihnen weder dieses SAS-Tutorial noch SAS. Wir geben Ihnen allerdings Hinweise auf die entsprechende Literatur.

 

1.2    BETRIEBSARTEN UND SAS-HELP

 

1.2.1                      Betriebsarten:

 

Wir unterscheiden zwei Arten des Aufrufes und der Abarbeitung von SAS-

Programmen:

   interaktiv

   nicht interaktiv

 

Interaktive Betriebsart

Der Aufruf erfolgt über die Eingabe

 

    SAS

 

Es wird der DISPLAY-MANAGER von SAS gestartet und nach kurzer Zeit erscheinen am Bildschirm zwei SAS-Fenster. Im oberen Hälfte des Bildschirmes befindet sich das AUSGABE-Fenster (entspricht dem LISTING) und im unteren Teil das PROGRAMM-Fenster. Hier werden Sie in der Regel Ihre Eingaben tätigen.

 

Jedes Fenster ist zweigeteilt. Die oberste Eingabezeile ist die Befehlszeile. Hier setzen Sie die Kommandos zur Steuerung des Ablaufes ab. Die weiteren Zeilen dienen der Ein- oder Ausgabe. Die interaktive Sitzung wird durch die Eingabe von ENDSAS oder BYE in der Befehlszeile beendet.

 

Es gibt noch zwei weitere für das SAS-TUTORIAL wesentliche Fenster:

   LOG-Fenster

   HILFE-Fenster

 

 

Nicht-Interaktive Betriebsart

Die SAS-Prozedur wird mit einem am System verfügbaren Texteditor erstellt. Diese Betriebsart finden Sie im SAS-TUTORIAL als Standard. Anschließend wird die Verarbeitung durch die Eingabe von

 

     SAS Programmname

 

gestartet. SAS führt nunmehr die Prozedur aus und übergibt nach Beendigung die Kontrolle wiederum an das Betriebssystem. Nunmehr können Sie das SAS-Log durchsehen, eventuelle Fehler korrigieren und die Prozedur neu starten. Ist das Programm fehlerfrei ausgeführt worden, so können Sie die Ergebnisse interpretieren. Für den Anfänger ist die nicht-interaktive Betriebsart einfacher zu erlernen.

 

 

1.2.2                      SAS-HELP

SAS bietet Ihnen eine Hilfestellung zu den meisten PROCs und zum DATA-Step an.

 

Folgende Vorgangsweise ist dazu notwendig:

 

   Sie starten SAS in der interaktiven Betriebsart

 

   Sie geben in der Befehlszeile des PROGRAMM-Fensters einen der folgenden Befehle ein:

help;

help name;

 

Wird nur der Befehl help eingegeben, so erscheint eine Auswahlmaske der verfügbaren Themen im HELP-Fenster. Ein Menue-Punkt ist nunmehr mit den Cursor- bzw. Tab-Tasten auszuwählen. Dadurch ist es möglich sich stufenweise bis zur gewünschten Information vorzuarbeiten.

 

Wird hingegen der Befehl help name eingegeben, so erscheint die gewünschte Hilfestellung sofort am Bildschirm.

 

Bitte beachten Sie! Auch das HELP-Fenster hat eine Befehlszeile. Ein Fenster wird mit END; geschlossen.

 

 

2     SAS für den eiligen Benutzer                     

    

                                                                               

2.1    Lektion 1: EIN BEISPIEL                             

                                                                               

                                                                              

                                                                               

SAS (Statistical Analysis System) ist ein Computer-Programm zum Analysieren von Daten. Ein typischen Beispiel für den Bedarf an solcher Analyse aus den Sozial- und Wirtschaftswissenschaften ist das Auswerten Von Daten aus empirischen Erhebungen. Wir wollen das SAS-Tutorial damit beginnen, die einzelnen Schritte in der Analyse von solchen Daten mittels SAS am Beispiel eines einfachen SAS-Programmes zu zeigen.              

                                                                            

                                                                               

                                                                               

Nehmen wir an, in einer Erhebung in Handelsbetrieben sind die folgenden Daten erhoben worden:                                                           

                                                                               

 

Variable

Datentyp                                   

Name des Betriebes

NAME

alphanumerisch              

Ist der Betrieb ein Diskonter ? (j/n)

DISKONT

alphanumerisch              

Umsatz im Bereiche Food-Artikel

UMSATZ1

numerisch                   

Anzahl der Mitarbeiter

ANZ_MA

numerisch                   

 

                                                                               

In der Spalte 'Variable' geben wir Namen an, mit denen wir diese Daten im SAS-Programm ansprechen wollen. In der Spalte 'Datentyp' geben wir an, ob die Daten eine rein zahlenmäßige Information ('numerisch') sind, oder ob es sich um Textvariable ('alphanumerisch') handelt.

                         

                                                                               

Es ist stets eine gute Idee, am Beginn der statistischen Analyse die Daten graphisch darzustellen. Wir wollen uns deshalb von einem SAS-Programm ein Streu-Diagramm zeichnen lassen, das die Umsätze der untersuchten Betriebe in Abhängigkeit von der Zahl ihrer Mitarbeiter zeigt.

         

Dazu verwenden wir folgendes SAS-Programm:                                     

                                                                                

   DATA START;                                                                 

     INPUT NAME $ DISKONT $ UMSATZ1 ANZ_MA;                                    

     CARDS;                                                                     

     MM    N 156   22                                                          

     MK    J 856.5 24                                                          

     ........hier folgen die weiteren Daten                                     

     ;                                                                         

   PROC PRINT;                                                                 

     TITLE 'ERGEBNIS DER PROC PRINT';                                           

   PROC PLOT;                                                                  

     PLOT UMSATZ1*ANZ_MA=DISKONT;                                              

     TITLE 'ERGEBNIS DER PROC PLOT';                                           

                                                                                

Das Programm beginnt mit dem DATA-Step, in dem wir SAS sagen, welche Variable es lesen und dann verarbeiten soll. Die Daten selbst sind im  DATA-Step aufgelistet. Dann folgen zwei Abschnitte, jeder beginnend mit PROC. In Ihnen erfolgt die eigentliche Verarbeitung, hier das Drucken der eingelesenen Daten und das Generieren des Streu-Diagramms.                 

                                                                                

Wir können in ein SAS-Programm Kommentare einfügen, das sind Texte, die zwischen '/*' und '*/' stehen; sie werden von SAS ignoriert. Wir werden unser SAS-Programm nochmals anschreiben und es mit einigen Kommentaren erläutern.                                                                 

   

                                                                               

   DATA START;      /* Der DATA-Step beginnt; wir sagen SAS,     */            

                    /* dass wir Daten lesen und in die SAS-Datei  */      

                    /* START speichern wollen.                   */            

   INPUT NAME $ DISKONT $ UMSATZ1 ANZ_MA;      /* Wir sagen SAS, */            

                    /* in welcher Reihenfolge und welche Daten   */            

                    /* es lesen soll; '$' nach einer Variablen   */            

                    /* bedeutet: die Variable ist alphanumerisch */            

   CARDS;           /* Es folgen die Daten.  */                                 

     MM    N   156   22                                                        

     MK    J   856.5 24                                                        

     KJ    J   230   11                                                        

     AH2   J   534   18                                                        

     FG    N   154   19                  /* wir haben Daten von */             

     LL    N   167   19                  /*  18 Betrieben       */             

     WE    N   154    8                                                        

     DJ    J   231   11                                                        

     AH    J   432   16                                                        

     LL    N   121   15                                                         

     RS    J   324   19                                                        

     JM    N    98    9                                                        

     AZ    N   121    8                                                         

     KL    N   128   17                                                        

     TT    J   348   21                                                        

     OP    N    87    4                                                         

     UT    N   145   13                                                        

     MI    J   211   16                                                        

     ;            /*  Der ';' sagt SAS: Ende der Daten.         */              

                                                                               

   PROC PRINT;    /*  Wir sagen SAS: drucke die Daten           */             

     TITLE 'ERGEBNIS DER PROC PRINT';    /*  und verwende als   */             

                  /*  Überschrift des Ausdruckes diesen Titel  */         

  

                                                                               

   PROC PLOT;     /*  Wir sagen SAS: Zeichne ein Streu-Diagramm */             

   PLOT UMSATZ1*ANZ_MA=DISKONT;   /* wobei auf der vertikalen   */             

                  /*  Achse UMSATZ1, auf der horizontalen Achse */             

                  /*  ANZ_MA stehen; '=DISKONT' sagt SAS: mar-  */             

                  /*  kiere jede Beobachtung im Diagramm mit    */             

                  /*  Merkmalsausprägung von DISKONT.           */             

     TITLE 'ERGEBNIS DER PROC PLOT';                                           

                                                                                

Das Programm speichern wir als Datei START.sas. Mit dem Befehl           

                                                                               

   sas START                                                              

    

                                                                               

bringen wir SAS dazu, die einzelnen Zeilen des Programms zu lesen und auszuführen. SAS erzeugt eine Ergebnis-Datei START.lst mit folgendem Inhalt:

                                                               

                                                                               

                        ERGEBNIS DER PROC PRINT                       1        

                                                                                

              OBS    NAME    DISKONT    UMSATZ1    ANZ_MA                      

                                                                               

                1    MM         N        156.0       22                         

                2    MK         J        856.5       24                        

                3    KJ         J        230.0       11                        

                4    AH2        J        534.0       18                         

                5    FG         N        154.0       19                        

                6    LL         N        167.0       19                        

                7    WE         N        154.0        8                        

                8    DJ         J        231.0       11                        

                9    AH         J        432.0       16                        

               10    LL         N        121.0       15                        

               11    RS         J        324.0       19                        

               12    JM         N         98.0        9                        

               13    AZ         N        121.0        8                        

               14    KL         N        128.0       17                        

               15    TT         J        348.0       21                        

               16    OP         N         87.0        4                        

               17    UT         N        145.0       13                        

               18    MI         J        211.0       16                        

                                                                               

Dieser erste Teil der LISTING-Datei ist lediglich eine Liste der Daten. In die erste Spalte stellt SAS die laufende Nummer der Beobachtung. Eine solche Liste eignet sich gut zum überprüfen der Daten auf ihre Richtigkeit; Eingabefehler können Sie mit Ihrer Hilfe leicht entdecken.  

    

                                                                                                                                                              

                                                                               

                         ERGEBNIS DER PROC PLOT                       2        

                                                                               

         PLOT OF UMSATZ1*ANZ_MA    SYMBOL IS VALUE OF DISKONT                  

                                                                                

 UMSATZ1 |                                                            J        

         |                                                                     

 750     +                                                                      

         |                                                                     

         |                                                                     

         |                                          J                           

 500     +                                                                     

         |                                    J                                

         |                                                   J                 

         |                                             J                       

 250     +                     J                                               

         |                                    J        N                       

         |            N  N           N     N     N     N        N              

         |N                                                                    

   0     +                                                                     

         -+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+        

          4     6     8    10    12    14    16    18    20    22    24        

                                                                               

                                    ANZ_MA                                      

                                                                               

 NOTE:       2 OBS HIDDEN                                                      

                                                                                

Der zweite Teil ist das gewünschte Streu-Diagramm. Die Qualität des Diagramms ist durch den Schnelldrucker beschränkt. Dafür typisch ist

auch, dass Beobachtungen auf der gleichen Druckposition zu liegen kommen können. SAS meldet uns, dass das im Fall unseres Streu-Diagramms zweimal

passiert ist (NOTE: 2 OBServations HIDDEN, d.h., verdeckt). SAS unterstützt natürlich auch die Ausgabe auf einem Laserdrucker oder Plotter, die eine viel bessere graphische Qualität des Diagramms liefert. Doch auch die billige Schnelldrucker-Graphik lässt die wesentlichen Charakteristiken der Daten erkennen. So sieht man, in welchem Wertebereich die beiden Variablen liegen, dass die Diskonter mit steigender Zahl der Mitarbeiter einen stärker wachsenden Umsatz haben als die übrigen Betriebe, etc.           

                                                                                                                      

                                                                               

Zum Abschluss dieser Lektion noch einige wichtige                         

    

                                                                               

SYNTAX-REGELN für SAS-Programme:                                         

    

                                                                                

   Jede SAS-Anweisung muss mit einem ';' beendet werden                 

   Die Anweisungen können in GROSS- oder Kleinschreibung sein          

   Ein Variablen-Namen                                                       

   kann bis zu 8 Zeichen lang sein                                       

   er muss mit einem Buchstaben beginnen                         

   die weiteren Zeichen können Buchstaben, Ziffern und '_' (als       einziges Sonderzeichen) sein                                     

                                                                           

   Variablen-Namen und andere Sprachelemente von SAS werden durch (ein oder mehrere) Leerzeichen oder Zeilenwechsel getrennt               

                                                                                                                

Ein Hinweis:                                             

   Sie sollten SAS-Programme möglichst übersichtlich halten. Eine klare  PROGRAMM-STRUKTUR macht Fehler weniger wahrscheinlich und erleichtert die Fehlersuche.

                                                             

   KOMMENTARE machen das Programm auch noch in späterer Zeit lesbar und erleichtern Ihnen die Wartung.                                                

 

2.2    Lektion 2: Ein Programm

 

2.2.1                      Allgemeines

Ein SAS-Programm besteht aus zwei Teilen

   dem DATA-Step zur Datenaufbereitung

   dem PROC-Step zur Datenauswertung.

 

Im DATA-Step können Sie

   Daten einlesen

   Daten prüfen und korrigieren

   neue Daten aus den eingelesenen generieren

   Daten in Dateien ausgeben.

 

Das Ergebnis des DATA-Steps ist eine SAS-Datei in der Form einer Matrix: jede Spalte entspricht einer Variablen, jede Zeile einer Beobachtung. Das einzelne Element wird Datenwert genannt. Eine solche SAS-Datei benötigt zum Öffnen SAS.

 

Im PROC-Step: in ihm können Sie eine oder mehrere Prozeduren (z.B.: die PROC PRINT oder die PROC PLOT) Ihre Daten verarbeiten lassen. Die Prozeduren können Sie durch Setzen von Parametern oder Optionen Ihren aktuellen Daten und Analyse-Erfordernissen anpassen.

 

 

2.2.2                      DATEN

 

Die Daten in einer SAS-Datei können

   numerisch (Ziffern, Vorzeichen, Kommapunkt) oder

   alphanumerisch (auch Buchstaben)

sein.

 

Dass die Daten mit ihrem Variablennamen angesprochen werden können, haben Sie bereits in der vorigen Lektion kennengelernt. Erinnern Sie sich in diesem Zusammenhang an die Regeln für das Bilden von Variablennamen.

 

 

2.2.3                      EINLESEN DER DATEN VON EINER BETRIEBSSYSTEM-DATEI:

 

Im SAS-Programm START der letzten Session waren die Daten ein Teil des Programms. Meistens werden Sie es jedoch vorziehen, Ihre Daten getrennt vom SAS-Programm (in einer Betreissystemdatei) zu speichern. Dazu ändern wir das Programm START geringfügig:

 

   DATA STARTFIX;

     INFILE "HANDEL.DATEN";

     INPUT NAME $ DISKONT $ UMSATZ1 ANZ_MA;

   PROC PRINT;

   PROC PLOT;

     PLOT UMSATZ1*ANZ_MA=DISKONT;

 

 

In der INFILE-Anweisung teilen Sie SAS mit, wo sich die Daten befinden, und aus welcher Datei gelesen werden soll. Natürlich entfällt dabei die CARDS-Anweisung und die Auflistung der Daten.

 

 

2.2.4                      SPALTENORIENTIERTES EINLESEN DER DATEN:

 

In den bisherigen Beispielen haben wir die einzelnen Daten durch Leerzeichen getrennt. Eine alternative Art, die Daten anzuordnen (die auch einige Einschränkungen vermeidet) ist der spaltenorierntierte INPUT: In der INPUT-Anweisung sagen Sie SAS, in welchen Spalten der zu lesenden Datei welche Variable stehen.

 

Mit der INPUT-Anweisung

 

   INPUT NAME $ 1-3 DISKONT $ 5 UMSATZ1 8-13 ANZ_MA 14-16;

 

sagen wir SAS, dass die Daten der Variablen NAME in den Spalten 1 bis 3, die der Variablen DISKONT in der Spalte 5, etc. stehen. Die Daten der ersten beiden Beobachtungen sind dementsprechend folgendermaßen in den Spalten 1 bis 22 angeordnet:

 

            1111111111222

   1234567890123456789012

   MM  N   156   22

   MK  J   856.5 24

 

ähnlich können Sie vorgehen, wenn Sie Ihre Daten im SAS-Programm mit der CARDS-Anweisung verarbeiten. Am Rande soll erwähnt werden, dass SAS Ihnen noch andere Möglichkeiten zum Einlesen der Daten bietet.

 

 

2.2.5                      VERKNÜPFEN UND TRANSFORMIEREN DER DATEN:

 

Sie werden oft in die Lage kommen, statistische Verarbeitungen von Variablen zu machen, die Sie nicht direkt erhoben haben, aber aus Ihren Daten ableiten können. Nehmen wir an, Sie wollen den Umsatz je Beschäftigtem (UMS_JE) analysieren. Die entsprechende Variable können Sie im DATA-Step erzeugen.

 

Im DATA-Step unseres SAS-Programmes

 

   DATA START3;

     INFILE "HANDEL.DATEN";

     INPUT NAME $ DISKONT $ UMSATZ1 ANZ_MA;

     UMS_JE = UMSATZ1/ANZ_MA;

 

finden Sie die Anweisung:

 

   UMS_JE = UMSATZ1/ANZ_MA;

 

Sie bewirkt, dass SAS die neue Variable UMS_JE erzeugt und die Datenmatrix um eine Spalte erweitert.

 

ACHTUNG: Die zu erzeugende Variable müssen Sie LINKS vom Zuweisungszeichen ('=') schreiben, die Operation zum Berechnen der Variablen rechts davon.

 

Beachten Sie, dass in jeder Beobachtung der Wert von UMS_JE erst berechnet werden kann, wenn die Daten mit der INPUT-Anweisung zur Verfügung stehen.

 

Zum Generieren von neuen Variablen können Sie die folgenden arithmetischen Operatoren

 

   **   Potenzierung

   *    Multiplikation

   /    Division

   +    Addition

   -    Subtraktion

 

und Klammern benutzen. Es gelten die Ihnen von der Schulmathematik bekannten Rechenregeln. Daneben stellt Ihnen SAS Funktionen (log, sin, etc.), logische Operatoren und andere Möglichkeiten zur Erzeugung und Transformation von Variablen zur Verfügung.

 

2.3    Lektion 3: DER OUTPUT

 

Sie haben im einführenden Beispiel bereits einen SAS-Output kennengelernt: Die Ergebnisse des Programm-Laufes fanden wir in der Datei START.lst. Eine weitere Output-Datei, die SAS bei jedem Programm-Lauf erstellt, ist das SASLOG: Lassen wir unser SAS-Programm START laufen, so heißt diese Datei START.LOG. Diese Datei wird sogar erstellt, wenn Ihr SAS-Programm wegen irgendwelcher Fehler nicht funktioniert; sie gibt Ihnen dann wichtige Hinweise zur Fehlersuche.

 

 

SAS produziert für Sie also zwei Output-Dateien:

   die SASLOG-Datei

   die LISTING-Datei

 

Das SASLOG beinhaltet Informationen über

   die ausgeführten Anweisungen (mit Kommentaren)

   die erzeugten SAS-Dateien (Zahl der Variablen und Beobachtungen)

   die von den einzelnen Schritten benötigte Zeit

   Meldungen über Fehler

 

Sie sollten das SASLOG nach jedem Aufruf von SAS durchsehen.

 

Das LISTING enthält die Ergebnisse der Datenanalysen, die von SAS in einem oder mehreren PROC-Steps erzeugt wurden. Dort finden wir etwa das in unserem SAS-Programm von der PROC PLOT erzeugte Streu-Diagramm, oder die Liste der Daten, welche die PROC PRINT für uns druckt. Entdeckt SAS einen Fehler in Ihrem SAS-Programm, so setzt es zwar den Programm-Lauf fort und überprüft den Rest des Programms auf syntaktische Richtigkeit; weitere Fehler, die SAS entdeckt, werden auch im SASLOG vermerkt. SAS unterdrückt aber den Output in die LISTING-Datei. So kann es sein, dass Sie keine LISTING-Datei vorfinden. Sie würde in unserem Beispiel den Namen SAS.LST haben.

 

2.4    Lektion 4: Der Datensatz HANDEL

 

 

Wenn Sie SAS einsetzen, um Daten für Sie zu analysieren, so haben Sie folgende Arbeiten zu erledigen:

   Sie erheben die Daten und speichern sie im Computer

   Sie müssen das SAS-Programm schreiben

   Sie lassen Ihr Programm laufen und erhalten von SAS die Ergebnisse.

 

Im SAS-Tutorial konzentrieren wir uns auf den zweiten und dritten Schritt und ersparen uns das Sammeln eigener Daten. Statt dessen werden wir die Daten des Datensatzes HANDEL als Basis für Programmbeispiele und Übungsprogramme verwenden. Ein Subset der Variablen und Beobachtungen kennen Sie bereits vom einführenden Beispiel.

 

Wir stellen Ihnen diese Daten zur Verfügung, sodass Sie keine Arbeit mit dem Erheben und Speichern der Daten haben.

 

Der folgende Absatz gilt nur für Studenten der Wirtschaftsuniversität Wien. Die Daten finden Sie auf im Verzeichnis /u/ma1/betkurs als Datei HANDEL.DATEN. Um mit ihnen arbeiten zu können, müssen Sie zur Maschine BETKURS den Zutritt herstellen und die Daten in Ihre Platte kopieren. Dazu verwenden Sie den folgendenUNIX-Befehle:

 

   cp /u/ma1/betkurs/HANDEL.DATEN ./

 

 

BESCHREIBUNG der VARIABLEN

 

In Einzelhandelsbetrieben sind bei einer stichprobenweisen Erhebung Daten zu folgenden Variablen erhoben worden:

 

   Name     Typ   Inhalt der Variablen

 

   KBZ       A    Kurzbezeichnung des Betriebes

   PLZ       N    Postleitzahl des Betriebs-Standortes

   ORT       A    Standort des Betriebes

   DISKONT   A    Diskonter (J,N)

   FLACH     N    Verkaufsfläche in Quadratmetern

   UMS1      N    Umsatz in Food-Artikeln

   UMS2      N    Umsatz in Nonfood-Artikeln

   ANZ_BE    N    Anzahl der Mitarbeiter

   INDUST    A    Industriealisierung des Standortes (A,B,C)

 

Der (Daten-) Typ jeder Variablen kann numerisch (N) oder alphanumerisch (A) sein. Den Wertebereich der einzelnen Variablen entnehmen Sie bitte der Datei. Die Merkmalsausprägungen der Variablen DISKONT sind J (ja)oder N (nein). Die Variable INDUST ist ein Indikator: Ihre Merkmalsausprägungen sind A (über 50 %),  B (30 bis 50 %) und C (weniger als 30% der Arbeitnehmer sind in der Industrie beschäftigt).

 

Zur Illustration und Orientierung zeigen wir Ihnen hier die ersten drei Datensätze:

 

KBZ    PLZ   ORT  DISKONT  FLACH  UMS1   UMS2    ANZ_BE   INDUST

 

MM    1010  Wien     N      180    156     85      22       C

MK    1100  Wien     J      220    856.5  102      24       B

KJ    1130  Wien     J      170    230      .      11       C

etc.

 

Beachten Sie, dass einzelne Werte unbekannt sein können (der Wert war bekannt, die Antwort wurde verweigert, die Frage ist unzutreffend, etc.). In der dritten Beobachtung fehlt der Wert von UMS2; das Zeichen '.' weist auf den fehlenden Wert hin.

 

2.5    Lektion 5:  FÜR SIE ZUM ÜBEN

 

 

ALLGEMEINES

 

Wenn Sie die Lektionen "Für den eiligen Benutzer" aufmerksam gelesen haben, sollten Sie in der Lage sein, ein SAS-Programm für die unten beschriebene Aufgabe zu schreiben und laufen zu lassen. Die Aufgabe bezieht sich auf den Datensatz HANDEL.

 

2.5.1                      1. AUFGABE

 

Schreiben Sie ein SAS-Programm PREMIERE SAS:

 

1.    Im DATA-Step Ihres Programms soll SAS die folgenden Variablen von der Datei HANDEL DATEN lesen:

 

   Verkaufsfläche (FLACH)

   Umsatz in Food-Artikeln (UMS1) und

   Umsatz in Nonfood-Artikeln (UMS2).

 

2.    Dann generieren Sie die Variable UMSATZ, die den Gesamtumsatz jedes Betriebes enthält. Beachten Sie: Um selektiv nur diese drei Variablen zu lesen, müssen Sie eine spaltenorientierte INPUT-Anweisung verwenden.

 

3.    Im PROC-Step lassen Sie SAS zuerst eine Liste aller Daten drucken.

 

4.    Dann soll SAS ein Streu-Diagramm aller Beobachtungen erstellen, in dem auf der horizontalen Achse die Verkaufsfläche und auf der vertikalen Achse der Gesamtumsatz aufgetragen sind.

 

5.    Lassen Sie Ihr SAS-Programm laufen.

 

6.    Besprechen Sie den Output mit einem Kollegen.

 

 

3     Mehr über den DATA-Step

 

Der DATA-Step in einem SAS-Programm dient zum Aufbereiten der Daten zur Analyse in nachfolgenden "Procedure"-Schritten (in SAS kurz "PROC-Steps" genannt). Das Ergebnis des DATA-Step ist eine SAS-Datei.

 

 

Im DATA-Step können Sie SAS unter anderem folgende Aufgaben ausführen lassen:

 

1.    Das Einlesen, Speichern und Wiederauffinden von Daten

2.    Das Aufbereiten und Bearbeiten von Daten

3.    Das Erstellen von Reporten

 

 

Im einzelnen sind das die folgenden Aufgaben:

 

3.1    DAS EINLESEN, SPEICHERN UND WIEDERAUFFINDEN VON DATEN

 

SAS kann Daten von verschiedenen Quellen bzw. Medien  (Magnetplatte,-band) lesen. Die Daten werden dabei in einer temporären oder permanenten SAS-Dateien gespeichert.

 

 

3.2    DAS AUFBEREITEN UND BEARBEITEN VON DATEN

 

In SAS können arithmetische und logische Ausdrücke und Funktionen zum Bearbeiten der Daten verwendet werden. Die Abfolge der Verarbeitungen kann durch Steueranweisungen (DO/END, IF THEN/ELSE, etc.) gestaltet werden. Daher wird von Programmierung in SAS gesprochen. Der DATA-Step kann insbesondere dazu verwendet werden, fehlerhaften Daten zu identifizieren und eventuell zu korrigieren.

 

 

3.3    DAS ERSTELLEN VON REPORTEN

 

Daten, die im DATA-Step eines SAS-Programms eingelesen oder als Ergebnis von statistischen Verarbeitungen in einem PROC-Step erhalten wurden, können in vielfältiger Weise formatiert und mit einem flexibel gestaltbaren Layout ausgegeben werden. Damit können Reporte erstellt werden.

 

 

3.4    DATEN

 

Daten bestehen entweder aus Zahlen (numerische Daten) oder aus Kombinationen von Buchstaben und Ziffern (alphanumerische Daten). In einer SAS-Datei werden Daten in Form einer DATENMATRIX dargestellt: Den Spalten entsprechen die VARIABLEN, den Zeilen die BEOBACHTUNGEN.

 

Beispiel: In der Erhebung einer Betriebs-Statistik werden u.a. die Verkaufsfläche UT und die Mitarbeiteranzahl TT der Betriebe registriert. Verkaufsfläche und Mitarbeiteranzahl sind Variable und entsprechen den Spalten der SAS-Datei. Beobachtungen sind die Daten der verschiedenen Betriebe; sie bilden die Zeilen der SAS-Datei.

 

VARIABLENNAMEN: Die Variablen werden in einem SAS-Programm mit Variablennamen angesprochen. Ein Variablennamen besteht aus

 

   einem bis acht Zeichen

   und muss mit einem Buchstaben beginnen.

 

Die weiteren Zeichen können Ziffern, Buchstaben oder das Sonderzeichen "_" (underscore) sein. Andere Sonderzeichen sind nicht erlaubt.

 

Beispiele für Variablennamen:

 

    gültige Variablennamen sind

         H, H12, H12A, H_12A;

 

    keine gültigen Variablennamen sind

         12H (beginnt nicht mit einem Buchstaben), MITARBEITER (mehr als

              8 Zeichen), STÜCK (enthält ein Sonderzeichen).

 

 

3.5    EINLESEN VON DATEN

 

Die Daten können

 

   Teil des SAS-Programms sein,

   von einer Betriebssystemdatei eingelesen werden,

   in einer (permanenten) SAS-Datei zur Verfügung stehen.

 

In einer permanenten SAS-Datei gespeicherte Daten sind SAS-spezifisch formatiert; sie können im DATA-Step eines SAS-Programms oder in einem PROC-Step gelesen und bearbeitet werden so, als wären sie in einem DATA-Step des gleichen SAS-Programms erstellt worden. Eine permanente SAS-Datei hat wie jede SAS-Datei die Form einer Datenmatrix; mit ihr sind auch die entsprechenden Variablennamen gespeichert.

 

In den Fällen, in denen die Daten Teil des SAS-Programms sind oder aus einer Betriebssystemdatei eingelesen werden sollen, muss in einer INPUT-Anweisung spezifiziert werden, unter welchen Namen die Daten im SAS-Programm angesprochen und in welcher Anordnung sie zur Verfügung gestellt werden. Zum Eingeben und Aufbereiten von Daten wird ein am EDV-System verfügbarer Editor verwendet.

 

Achtung: Manche Editoren (z.B. MS-WORD) speichern im Standard-Speichermodus mit den eingegebenen Daten Formatierungszeichen, die von SAS nicht interpretiert werden können. Allerdings erlauben solche Editoren zumeist auch das Abspeichern als ASCII-Datei, die von SAS interpretiert werden kann.

 

 

Beispiele für den DATA-Step:

 

DATA;                       /* SAS-Programm 1 zum Einlesen von Daten,  */

                            /*   die Teil des SAS-Programmes sind.     */

  INPUT NAME $ MAT_NR ANZ_SEM; /* Spezifikation der Variablen */

  CARDS;                    /* CARDS-Anweisung */

BEATE  801031 3             /* Daten           */

KURT   853097 1

..... (etc.)

  ;                         /* Ende der Daten  */

Beachte: Die zwischen "/*" und "*/" gestellten Texte sind

Kommentare und werden von SAS nicht weiter bearbeitet.

 

DATA;                /* SAS-Programm 2 zum Einlesen von Daten aus der  */

                     /*   Betriebssystemdatei "STUDENT.DATEN".        */

  INFILE 'student.daten'; /* Anweisungen ermoeglichen den Zugriff auf */

                     /* die Betriebssystemdatei */

  INPUT NAME $ 1-8 MAT_NR 9-14 ANZ_SEM 16-18; /* die Zahlen */

                     /* nach den Variablen-Namen geben die Spalten an, */

                     /* in denen die Daten enthalten sind.             */

 

 

Die Betriebssystemdatei "STUDENT.DATEN" enthält folgende Daten:

BEATE  801031 3

KURT   853097 1

..... (etc.)

 

Beide SAS-Programme erzeugen eine temporäre SAS-Datei mit den drei Variablen NAME, ANZ_SEM und MAT_NR. INPUT-Anweisungen mit Formatanweisungen und weiteren Spezifikationen der Struktur der Betriebssystemdatei, welche die gleiche temporäre SAS-Datei erzeugen, sind:

 

  INPUT @1 NAME $8. @16 ANZ_SEM 3. @9 MAT_NR 5.;

  INPUT NAME $ ANZ_SEM 16-18 @9 MAT_NR 5.;

 

Zu Formatanweisungen und Spezifikation der Struktur der Betriebssystemdatei siehe unten.

 

 

3.6    INPUT-ANWEISUNG

 

Sie spezifiziert die Variablen-Namen, unter denen die im DATA-Step gelesenen Daten im SAS-Programm angesprochen werden. Außerdem spezifiziert sie die Anordnung der Daten.

 

Beim listenorientierten Input (vergl. die INPUT-Anweisung des SAS-Programms 1) sind die Daten durch Leerzeichen getrennt und in einem Datensatz oder in einer Zeile dargestellt. Die Regeln lauten:

   Jede Zeile enthält genau eine Beobachtung.

   Die Daten müssen nicht spaltengenau angeordnet sein.

 

Numerische Daten werden als Integer- (ganze) oder Dezimalzahlen gelesen, von alphanumerische Daten nur die ersten acht Stellen, soferne keine Formatanweisungen spezifiziert sind.

 

Der listenorientierte Input ist bei wenig datenintensiven Anwendungen vorteilhaft. Die Daten müssen nicht spaltengenau eingegeben werden, sie müssen allerdings durch Leerzeichen getrennt sein. Bei alphanumerischen Variablen darf kein Leerzeichen vorkommen (z.B.: Karl Meier).

 

Beim spaltenweisen Input hingegen müssen die Daten im SAS-Programm oder in der Betriebssystemdatei spaltenorientiert angeordnet sein. Einer der Vorteile dieser Inputart ist die große Übersichtlichkeit und damit geringe Fehleranfälligkeit und einfache Korrigierbarkeit der zu lesenden Daten. Diese Art der Input-Gestaltung ist die wohl am häufigsten verwendete.

 

Syntax der Input-Anweisung:

 

   INPUT VAR1 /formatdefinition/ /spezifikation/ ...

 

dabei ist VAR1 ein Variablenname; zu Formatdefinition und Spezifikation siehe das Folgende. Variablenname und Formatdefinition sind durch Leerzeichen zu trennen.

 

Siehe auch "INPUT-Anweisung" in SAS USER'S GUIDE: BASICS.

 

 

3.7    FORMATDEFINITION

 

Eine Formatdefinition besteht aus dem Formatnamen und einer Längenangabe; sie wird mit einem Punkt abgeschlossen. Formatdefinition ähneln der Variablenfestlegung in höheren Programmiersprachen (FORTRAN, Pascal).

 

 

Beispiele für Formatdefinitionen:

 

3.7.1                      NUMERISCHE FORMATDEFINITIONEN:

 

  4.        (vierstellige ganze Zahl)

  6.3       (sechsstellige Deziamlzahl mit drei Nachkomma-Stellen)

  E12.3     (Exponentialdarstellung mit drei Nachkomma-Stellen)

 

3.7.2                      ALPHANUMERISCHE FORMATDEFINITIONEN (BEGINNEN MIT "$"):

 

  $15.      (maximal 15 alphanumerische Zeichen werden linksbündig (|)

             in einem Feld der Laenge 15 gespeichert)

  $CHAR12.  (12 alphanumerische Zeichen werden (einschließlich der

             enthaltenen Leerzeichen) in einem Feld der Länge 12

             gespeichert)

 

3.7.3                      DATUMSFORMATE:

  YYMMDD6.

  DATE8.

  TIME.

 

Achtung: Bei einer den Daten nicht entsprechenden Formatdefinition in der INPUT-Anweisung erhält man falsche oder gar keine Ergebnisse, nicht unbedingt aber eine Fehlermeldung!

 

 

3.7.4                      KONTROLLE DER SPALTEN UND ZEILEN

 

Beim formatierten INPUT können für jede Variable neben einer Formatdefinition die Spalten und Zeilen spezifiziert werden, in denen in

der zu lesenden Datei die entsprechenden Daten enthalten sind

(siehe obiges SAS-Programm 2 und die nachfolgenden Beispiele).

 

Wir unterscheiden zwei Arten dieser Spezifikation:

 

   Spaltenkontrolle, z.B. "@n" (lies beginnend in Spalte n),"+n" (lies beginnend n Spalten weiter rechts)

 

   Zeilenkontrolle, z.B. "/" (lies in der nächsten Zeile), "#n"          (lies in der n-ten Zeile der Beobachtung)

 

Beachte, dass die Daten jeder Beobachtung über mehr als eine Zeile des SAS-Programms oder der zu lesenden Betriebssystemdatei verteilt sein können. Die zu lesende Zeile wird mit den Spezifikationen der Zeilenkontrolle angegeben.

 

 

3.8    DIE CARDS-ANWEISUNG

 

Die CARDS-Anweisung gibt an, dass die zu analysierenden Daten Teil des SAS-Programms sind und in den nachfolgenden Programmzeilen enthalten sind. Die CARDS-Anweisung muss -- mit Ausnahme der Daten -- die letzte Anweisung des DATA-Steps sein (siehe obiges SAS-Programm 1).

 

Die Länge der Datenzeilen darf 80 Zeichen nicht überschreiten. Das Ende der Daten wird durch ";" markiert. Achtung: Daten in jener Zeile, in der sich der ";" befindet, werden nicht mehr gelesen! Es empfiehlt sich daher, den abschließenden Strichpunkt in eine eigene Zeile zu schreiben.

 

Literatur: CARDS-Anweisung in SAS USER'S GUIDE: BASICS.

 

3.9    MISSING VALUES

 

Vor dem Einlesen einer neuen Beobachtung werden alle Variable auf "missing value" gesetzt: In einem Ausdruck der Datei erscheint ein solcher Wert als ".". Werden in einer Beobachtung für eine Variable keine oder ungültige (z.B. nicht der Formatspezifikation entsprechende) Daten eingelesen, so bleibt der Wert auf "missing value".

 

Bei numerischen Variablen können "missing values" außer durch das Einlesen eines Leerzeichens oder von "." in einer der folgenden Weisen entstehen:

 

   1.) durch explizite Anweisung

       Beispiel:

 

       A=.;

 

   2.) durch arithmetische Operationen, wenn einer der Operanden

       auf "missing value" gesetzt ist

       Beispiel:

       A=3;

       B=.;

       C=A*B;

 

       C enthält "missing value".

 

   3.) durch Fehler bei Zuweisungen

       Beispiel:

       A=3;

       B=0;

       C=A/B;

 

       C enthält "missing value".

 

 

Beachte: Eine arithmetische Operation liefert "missing value", wenn einer der Operanden selbst ein "missing value" ist.

 

Beachte weiter: Allerdings liefern Funktionsaufrufe nicht notwendigerweise

"missing value", wenn eines der Argumente ein "missing value" ist.

 

 

Beispiel:

 

  A=3;

  B=.;

  C=SUM(A,B);

 

als Ergebnis der Summenfunktion SUM enthält C den Wert "3"; hingegen würde C=A+B; für C "missing value" liefern!

 

Auf das Auftreten von "missing values" wird im SASLOG hingewiesen.

 

Zur Ergebnis von SAS-Prozeduren bei der Verarbeitung von "missing value" siehe das entsprechende Handbuch. Beachte, dass "missing value" in SAS-Proceduren verschieden behandelt werden.

 

Literatur: MISSING VALUES in USER'S GUIDE: BASICS.

 

 

3.10                    FUNKTIONEN

 

SAS stellt dem Anwender vorgefertigte Funktionen zur Verfügung, die Standardberechnungen vornehmen. Wir unterscheiden folgende Typen:

 

        arithmetische (SUM MAX MIN MOD SQRT)

        Rundungsfunktionen (INT CEIL FLOOR ROUND)

        mathematische (EXP GAMMA LOG LOG2 LOG10)

        trigonometrische (SIN COS TAN SINH COSH TANH ARSIN ARCOS ARTAN)

        Wahrscheinlichkeitsfunktionen (POISSON PROBETA PROBF PROBNORM)

        statistische (MEAN N NMISS STD VAR RANGE CV SKEWNESS)

        Zufallszahlen (RANNOR NORMAL RANBIN RANPOI RANUNI UNIFORM)

        String (LEFT RIGHT SUBSTR LENGTH)

        Datum (DATE DAY HOUR TIME)

        Kommunikation mit dem Betriebssystem (CMS X)

 

Jede Funktion erwartet zumindest ein Argument, dieses ist in Klammer zu setzen.

 

        DATA FUNKT;

               INPUT A B C X$ Z$;

               E1 = SUM(A, B, C);

               E2 = COS (A);

 

             /* Zufallszahlengeneratoren bedürfen eines Startwertes  */

               E3 = UNIFORM (345678);

 

            /* Datumsfunktionen liefern die Tagesanzahl seit dem

               1. 1. 1960, daher sollte  das Ergebnis formatiert

               werden */

               E4 = DATE (); FORMAT E4 DATE7.;

               E5 = LENGTH('ABCDEF');

 

Beachte! Funktionsaufrufe liefern nicht notwendigerweise "missing value", wenn eines der Argumente ein "missing value" ist.

 

               A = 3;

               B = .;

               C = SUM(A, B);

               D = A + B;

 

        als Ergebnis der Summenfunktion SUM enthält C den Wert "3";

        hingegen hat D den Wert "missing value"!

 

3.11                    DAS AUFBEREITEN DER DATEN

 

Oft wollen wir die in der Datenmatrix enthaltenen Variablen vor der eigentlichen Analyse (durch arithmetische oder logische Operationen) verändern oder aus den verfügbaren Beobachtungen bestimmte auswählen. Solche Modifikationen der Daten werden in Programmanweisungen spezifiziert, in denen einer (neuen oder schon definierten) Variablen das Ergebnis eines SAS-Ausdruckes zugewiesen wird, bzw. aus den verfügbaren Daten die interessierenden ausgewählt werden. Programmanweisungen stehen nach der INPUT-Anweisung und gegebenenfalls vor der CARDS-Anweisung.

 

 

Beispiele zur Modifikation der Variablen:

 

   Der Gesamtumsatz (GES_UMS) ergibt sich aus UMS1 und UMS2:

     GES_UMS=UMS1 + UMS2;

 

   Der Umsatz je Quadratmeter (UMS_M2) ergibt sich aus GES_UMS

     dividiert durch die FLAECHE:

     UMS_M2=GES_UMS / FLAECHE

 

   Umrechnung von UMS1 im DM:

     UMS1=UMS1 * 7;

 

Im letzten Beispiel wird der Wert von UMS1 durch den neuen Wert ersetzt.

 

 

Beispiel zur Auswahl von Beobachtungen:

 

Aus der Datenmatrix von österreichischen Betrieben sollen die Daten der Wiener Betriebe ausgewählt werden. Siehe IF-Anweisung tieferstehend.

      

 

Programmanweisungen zum Modifizieren von Variablen oder Generieren von neuen Variablen bestehen aus einem SAS-Ausdruck, dessen Wert für jede Beobachtung ermittelt und der fraglichen Variablen zugewiesen wird. Zur Steuerung der Reihenfolge, in der die Programmanweisungen abgearbeitet  werden, können wir von Steueranweisungen Gebrauch machen.

 

3.12                    SAS-AUSDRÜCKE

 

Unter einem SAS-Ausdruck versteht man:

 

   eine Konstante oder Variable

   eine auf numerische Konstante oder Variable angewendete arithmetische Operation

   eine auf Konstante oder Variable angewendete logische Operation

   eine String-Operation

   einen Funktionsaufruf

 

 

3.12.1                ARITHMETISCHE OPERATIONEN

Operanden einer arithmetischen Operation können Konstante oder Variable (oder wiederum ein SAS-Ausdruck) sein. Ist der Operand alphanumerisch oder nicht-numerisch, so wendet SAS die in der Tabelle stehenden Konversionsregeln an.

 

 

Tabelle der Konversionsregeln

 

       nachher   |     numerisch            alphanum.

vorher|          |

--------------------------------------------------------

numerisch        |     numerisch               ?

alphanum.        |     numerisch           alphanum.

nicht num.       |     "mis.val."          alphanum.

 

 

Die Operanden können mit den üblichen Operatoren (+, -, *, /, **) verknüpft werden. Der Wert des Ausdrucks wird unter Verwendung der üblichen Prioritäten der Operatoren ermittelt, wobei Klammern in gewohnter Weise erlaubt sind. Achtung! Multiplikationen im Nenner eines Quotienten setzen Sie am besten in Klammern.

 

 

Tabelle der Arithmetische Operationen

 

    Operation              Beispiel in SAS

 

  Prioritätsstufe 1

    Exponentiation             Y=X**X

    Maximum                    K=A<>B

    Minimum                    K=A><B

    Vorzeichenumkehr           Z=-A

 

  Prioritätsstufe 2

    Multiplikation             A=B*C

    Division                   G=H/I

 

  Prioritätsstufe 3

    Addition                   R=S+T

    Subtraktion                U=J-X

 

 

3.12.2                LOGISCHE OPERATIONEN

 

Logische Operationen führen einen Vergleich zwischen zwei Ausdrücken durch.

 

Das Ergebnis der Operation ist "1", wenn die Operation richtig ist, ansonsten "0".

 

 

Beispiel:

 

DATA TEST;

   A='M';

   B='W';

   U=A NE B;

   V=A EQ B;

   W=A LE B;

 

das ERGEBNIS ist:

U=1, V=0, W=1 (zur Berechnung von W werden die Bitmuster numerisch verglichen).

 

Bei der Bestimmung des Ergebnisses einer logischen Operation ist die

Prioritätsstufe der Operatoren zu beachten.

 

 

Tabelle der logischen Operationen

 

  Prioritätsstufe 1

       NOT

 

  Prioritätsstufe 5

     =     EQ     gleich

           NE     ungleich

     >     GT     größer als

     <     LT     kleiner als

     >=    GE     größer oder gleich

     <=    LE     kleiner oder gleich

 

  Prioritätsstufe 6

     &     AND    und-Verknüpfung

 

  Prioritätsstufe 7

     |      OR    oder-Verknüpfung

 

Beachte! Die Prioritätsstufen der arithmetischen Operationen sind höher als die der logischen Operationen.

 

 

Beispiel:

 

   A=3;

   B=2;

   A*3 LT B+6

 

hat den Wert 1 (ist richtig).

 

 

3.12.3                STRING-OPERATION

 

Die einzige String-Operation ist das Verknüpfen oder die Verkettung ("||") von Zeichenketten ("strings").

 

 

Beispiel:

 

   A='HAUS';

   B='GAST';

   C=B||A;

 

C hat den Inhalt 'GASTHAUS'

 

 

Die Prioritätsregeln entsprechen den arithmetischen Operationen.

Es steht die folgende Funktion zur Verfügung:

 

Beachte! Fehlt auf der Tastatur Ihres Computers das Zeichen " ", so verwenden Sie anstelle von " " das Zeichen "|".

 

Die Operation "||" hat die Prioritätsstufe 4.

 

Zum Bearbeiten von Zeichenketten steht eine große Anzahl von Funktionen zur Verfügung (siehe das Kapitel "SAS-Functions" in SAS USER'S GUIDE: BASICS).

 

3.13                    BEREICHE

 

In SAS können gleichartige Variablen unter einem gemeinsamen Namen angesprochen werden.

 

 

Beispiel

 

AUFGABENSTELLUNG

Es sollen für jede Beobachtung zehn Werte eingelesen und davon der kleinste bestimmt werden. Nach dem bisher Gelernten können dazu die folgenden Anweisungen verwendet werden.

 

DURCHFUEHRUNG:

 

   INPUT F1 F2 F3 F4 F5 F6 F7 F8 F9 F10;

   B = MIN(F1, F2, F3, F4, F5, F6, F7, F8, F9, F10);

 

Gleiches leistet folgende Anweisungen im DATA-Step:

 

   INPUT F1-F10;

   B=MIN(OF F1-F10);

 

Bei den Variablen F1, F2 ..., F10, geschrieben als F1-F10, sprechen wir von einer GRUPPIERUNG. Ihre Verwendung reduziert den Schreibaufwand.

 

Eine weitere Möglichkeit der verkürzten Schreibweise sind INDIZIERTE BEREICHE. Eine ARRAY-Anweisung definiert den gemeinsamen Namen der in der Elementliste angeführten Variablen des Bereiches. Die Elemente des Bereiches  können mittels Indizes angesprochen werden.

 

 

Beispiel:

 

   ARRAY X (*) F1-F10;  /* definiert den indizierten Bereich X */

   A=X(5);   /* A enthält das fünfte Elemente des Bereichs X */

 

Gleiche Wirkung hat die Anweisung

 

   A=F5;

 

 

In der geschwungenen Klammer nach dem Bereichsnamen steht die Zahl der Elemente des Bereiches ("Dimension" des Bereiches). Schreibt man anstelle der Dimension "*", so stellt SAS die Zahl der Elemente des Bereiches fest. Die ARRAY-Anweisung sollte stets am Anfang des DATA-Steps stehen.

 

 

Die DIM-Funktion gibt die Dimension des Bereiches zurück.

 

 

Beispiel:

 

   ARRAY TEST (*) F1-F10 N1-N100 X1-X10;

   DO I = 1 TO DIM(TEST);

     TEST(I) = I * 2;

   END;

 

Als Ergebnis enthalten F1 bis F10 die geraden Zahlen 2 bis 20, N1 bis N100 die Zahlen 22 bis 220, und X1 bis X10 die Zahlen 222 bis 240. Zur DO-Anweisung siehe später.

 

 

Beachte! Die Elemente des Bereiches können sowohl unter ihrem Namen als auch als indiziertes Element des Bereichs angesprochen werden.

 

Beachte! Der Name des Bereiches kann nicht ohne Indizierung verwendet werden.

 

 

Beispiel:

 

   ARRAY TEST (*) F1-F10 N1-N100 X1-X10;

   A=N1;

   B=TEST(11);

 

A und B enthalten den gleichen Wert.

 

 

An der WU können statt geschwungener auch runde Klammern gesetzt werden - wie wir dies auch in unseren Beispielen getan haben.

 

Um die Portabilität der Programme zu erhöhen, sollten jedoch - soferne es das Terminal zulässt, was in der derzeitigen Emulation jedoch leider nicht möglich ist, - die richtigen Klammern gesetzt werden. Die SAS-Version 6 erwartet, dass stets die richtigen Klammern gesetzt werden.

 

 

Beachte! Die Schachtelung von indizierten Bereichen ist nicht möglich.

 

3.14                    STEUERANWEISUNGEN

 

 

3.14.1                IF-ANWEISUNG

 

Die IF-Anweisung dient der Steuerung des Ablaufes des DATA-Steps; sie werden verwendet, wenn eine oder mehrere Anweisungen nur für die einer bestimmten Bedingung entsprechenden Beobachtungen durchgeführt werden sollen.

 

 

3.14.1.1             IF-THEN Anweisung

Sie hat die Form

 

  IF Bedingung THEN Anweisung;

 

Beispiel:

 

   IF B_LAND='V' OR B_LAND='T' THEN REGION='WESTEN';

 

Für jede Beobachtung, für welche die Bedingung (B_LAND='V' OR B_LAND='T') zutrifft, wird die Anweisung (REGION = 'WESTEN') ausgeführt.

 

Bedingung kann

 

   eine logische Operation (z.B.: A > B)

 

   eine intervallbezogene logische Operation (z.B.: 5 < A < 10 - die  Ungleichung steht für A > 5 AND A < 10)

 

   eine Variable (die Bedingung gilt als falsch, wenn der Wert der Variablen "0" oder "missing  value" ist; sonst ist sie richtig),

 

 oder

 

   AND-, OR- und NOT-Verknüpfungen der oben angeführten Operationen

 

Anweisung ist eine Programmanweisung; sie wird ausgeführt, wenn die Bedingung erfüllt ist.

 

 

3.14.1.2             IF-THEN/ELSE Anweisung

Sie hat die Form

 

   IF Ausdruck THEN Anweisung; ELSE Anweisung;

 

 

Beispiel:

 

   IF B_LAND='V' OR B_LAND='T' THEN REGION = 'WESTEN';

   ELSE REGION = 'SONST ';

 

 

Beachte! Die Variable REGION hat die Länge des Strings, der ihr beim ersten Ausführen zugewiesen wird.

 

 

Die THEN-Anweisung wird auch als Wahrzweig, die ELSE-Anweisung als Falschzweig bezeichnet. Die Schachtelung mehrerer IF ist sowohl im Wahr- als auch im Falschzweig möglich.

 

 

3.14.1.3             Das 'subsetting IF'

Es hat die Form

 

   IF Ausdruck;

 

 

Beispiel:

    IF A='weiblich';

 

Es werden nur jene Beobachtungen in der Datenmatrix behalten, bei denen gilt: A='weiblich'

 

Das 'Subsetting IF' eliminiert jene Beobachtungen aus der Datenmatrix, für welche die Bedingung nicht erfüllt ist.

 

 

3.14.2                SELECT-ANWEISUNG

 

Die SELECT-Anweisung ist eine verallgemeinerte IF-Anweisung: In ihr können mehr als zwei Zweige ausgeführt werden.

 

 

Beispiel:

 

  SELECT (A);

     WHEN (1) B = 3;

     WHEN (2) ;

     WHEN (3) B = 4;

   OTHERWISE B = 0;

  END;

 

Wenn A einen anderen Wert als 1, 2 oder 3 hat, wird B=0 gesetzt; gilt A=1, so setzt SAS B auf 3; bei A=2 bleibt B auf "missing value", etc.

 

Die Anweisung ist mehrstufig und umfasst:

   eine SELECT-Anweisung (SELECT (Ausdruck))

   eine oder mehrere WHEN-Anweisung (WHEN (Ausdruck) Anweisung)

   gegebenenfalls eine OTHERWISE-Anweisung (OTHERWISE Anweisung)

   und am Schluss eine END-Anweisung

 

In der SELECT-Anweisung kann ein beliebiger SAS-Ausdruck stehen, dessen Wert für die Auswahl der auszuführenden Anweisung entscheidend ist. Ebenso kann in der WHEN-Anweisung ein beliebiger SAS-Ausdruck stehen. Der Wert des Ausdruckes der SELECT-Anweisung wird berechnet und anschließend mit dem der einzelnen WHEN-Anweisungen verglichen. Ist der Wert gleich, so wird die SAS-Anweisung des WHEN-Zweiges ausgeführt.

 

 

Beachte! Sind mehrere WHEN-Klauseln richtig, so wird nur die erste zutreffende ausgeführt.

 

Sind alle WHEN-Klauseln falsch, so wird die OTHERWISE-Anweisung ausgeführt.

 

 

Beachte! Ist keine der WHEN-Klauseln richtig und keine OTHERWISE-Anweisung vorhanden, so meldet SAS einen Fehler.

 

SELECT-Anweisungen können auch geschachtelt werden.

 

3.15                     DO Anweisung

3.15.1                DO-GRUPPE

 

Sollen in einer IF-Anweisung mehrere Anweisungen ausgeführt werden, so ist das mittels einer DO-Gruppe möglich: die Anweisungen können zu einer DO-Gruppe zusammengefasst werden. Die Gruppe wird mit der END-Anweisung abgeschlossen.

 

 

Beispiel:

 

   IF ARB_ZEIT > 38.5 THEN DO;

     UE_ZEIT = ARB_ZEIT - 38.5;

     N_ZEIT = 38.5;

   END;

   ELSE DO;

     UE_ZEIT = 0;

     N_ZEIT = ARB_ZEIT;

   END;

 

Die in beiden in DO-END eingeschlossenen Folgen von Anweisungen bilden zwei DO-Gruppen.

 

 

Beispiel:

AUFGABENSTELLUNG

In einem Fragebogen tragen die Eltern das Alter von bis zu 10 Kindern ein. Zur Ermittelung der Zahl der Kinder wird folgendes Programm verwendet:

 

   DATA KINDANZ;

   ARRAY K_ALTER (10) K1-K10;

   INPUT ... K1-K10 ...;

   KINDER_Z=0;

   DO I=1 TO 10;

     IF K_ALTER(I) NE . THEN KINDER_Z = KINDER_Z +1;

   END;

 

Die DO-Anweisung bearbeitet die Daten jeder Beobachtung in dieser Weise. Es gibt mehrere DO-Anweisungen (DO WHILE, DO UNTIL, iteratives DO), die sich durch die Art unterscheiden, in der SAS feststellt, ob noch ein weiterer Durchlauf der Schleife notwendig ist.

 

 

3.15.2                DO WHILE-Schleife

Sie hat die Form

 

   DO WHILE (bedingung); anweisungen; END;

 

 

Beispiel:

 

   DATA KINDANZ;

   ARRAY K_ALTER (10) K1-K10;

   I = 1;

   KINDER_Z = 0;

   DO WHILE (K_ALTER(I) NE .);

     KINDER_Z = KINDER_Z + 1;

     I = I + 1;

   END;

 

Die bedingte Schleife wird solange ausgeführt, bis die Bedingung erstmals falsch ist. Die DO WHILE-Schleife muss durch eine END-Anweisung, geschlossen werden.

 

 

Beachte! Die DO WHILE-Schleife wird überhaupt nicht durchlaufen, wenn die Bedingung bei der ersten Prüfung falsch ist.

 

 

3.15.3                DO UNTIL-Schleife

Sie hat die Form

 

   DO UNTIL (bedingung); anweisungen; END;

 

Beispiel:

 

   DATA KINDANZ;

   ARRAY K_ALTER (10) K1-K10;

   I = 1;

   KINDER_Z = 0;

   DO UNTIL (K_ALTER(I)=.);

     KINDER_Z = KINDER_Z + 1;

     I=I + 1;

   END;

 

Die Schleife wird solange ausgeführt, bis die Bedingung erstmals erfüllt ist. Die Bedingung wird nach dem Durchlaufen der Schleife geprüft, sodass die Schleife mindestens einmal (|) durchlaufen wird. Die DO UNTIL-Schleife wird - wie die DO WHILE-Schleife - durch eine END-Anweisung geschlossen werden.

 

 

3.15.4                 ITERATIVE DO-ANWEISUNG, ZÄHLSCHLEIFE

 

Hier nimmt der Schleifenzähler die durch einen Startwert, einen Endwert und ein Increment bestimmten Werte oder in einer Liste vorgegebene Werte an. Die  Schleife wird für jeden Wert des Schleifenzählers einmal durchlaufen.

 

 

Beispiele:

 

(in Klammern sind die Werte angegeben, für die welche Schleife durchlaufen wird):

 

   DO I=1 TO 10;               /* I nimmt die Werte 1, 2, ..., 10 an */

   DO K=1 TO 10 BY 2;          /* 1, 3, 5, 7, 9 */

   DO ZAEHLER=1 TO 2 BY 0.2 WHILE (J NE .); /* 1, 1.2, 1.4, 1.6,

                               1.8, 2, solange J nicht "missing value" */

   DO I=1, 10, 100;            /* 1, 10 , 100 */

   DO ALPHA='JAN', 'FEB', 'MAR'; /* JAN, FEB, MAR */

 

 

Startwert, Endwert und Increment können auch durch Variable bestimmt sein. Das Increment kann auch negativ sein.

 

 

Beispiel:

 

   I0 = 10;

   IEND = 5;

   INC = -2;

   DO I = I0 TO IEND BY INC;

 

Der Schleifenzähler nimmt die Werte 10, 8 und 6 an.

 

Veränderungen von Startwert, Endwert und Increment während der Schleifendurchläufe haben keinen Einfluss auf den Schleifenzähler (die Werte werden vor Ausführung der Schleife bestimmt).

 

Zum Abbruch der Iterative DO-Anweisung muss man den Wert des Schleifenzählers auf den Endwert setzen.

 

 

Beachte! Das Zutreffen der Bedingung wird vor dem Durchlaufen der Schleife geprüft.

 

 

Beispiel:

 

   I0 = 10;

   IEND = 5;

   INC = 2;

   DO I = I0 TO IEND BY INC;

 

Die Schleife wird nicht durchlaufen|

 

3.16                    AUSWAHL VON VARIABLEN UND BEOBACHTUNGEN

 

Im folgenden werden einige Möglichkeiten behandelt, mit denen die im DATA-Step erzeugte Datenmatrix durch Eliminieren von Variablen und/oder Beobachtungen modifiziert werden kann.

 

Zum Eliminieren von Variablen können die DROP- und KEEP-Anweisung verwendet werden.

 

 

3.16.1                 DROP-Anweisung

Sie hat die Form

 

   DROP variablenliste;

 

Die in der Variablenliste angegebenen Variablen werden nicht in die Datenmatrix aufgenommen.

 

 

Beispiel:

 

   DATA WEG;

   INPUT UMS1 UMS2;

   GES_UMS = UMS1 + UMS2;

   DROP UMS1 UMS2;

 

Die Datenmatrix enthält nur die Variable GES_UMS.

 

 

3.16.2                KEEP-Anweisung

Sie hat die Form

 

   KEEP variablenliste;

 

Nur die in der Variablenliste der KEEP-Anweisung angeführten Variablen werden in der Datenmatrix behalten.

 

 

Beispiel:

 

   DATA;

   INPUT UMS1 UMS2;

   GES_UMS = UMS1 + UMS2;

   KEEP GES_UMS;

 

Die Datenmatrix enthaelt nur die Variable GES_UMS.

 

Die Wahl zwischen DROP- und KEEP-Anweisung wird sich nach der Länge der Variablenliste richten.

 

DROP- oder KEEP-Parameter können verwendet werden, um Variablen auszuwählen; das ist besonders vorteilhaft, wenn mehr als eine SAS-Datei erstellt werden soll.

 

 

Beispiel: Die Anweisung

 

DATA EINS (DROP=I J K) ZWEI (KEEP=A B C D) DREI (DROP=A C D);

 

generiert die Dateien EINS, ZWEI und DREI mit entsprechenden Variablen.

 

 

3.17                    OUTPUT-Anweisung

 

Die OUTPUT-Anweisung hat die Form

 

   OUTPUT datei1 (datei2 ...);

 

'datei1', 'datei2', ... sind Namen von SAS-Dateien.

 

Mit der OUTPUT-Anweisung können die in der zu generierenden SAS-Datei enthaltenen Beobachtungen festgelegt werden. Dabei unterscheiden wir folgende Anwendungen:

 

   Zerlegen einer Beobachtung der INPUT-Daten in mehrere Beobachtungen    der generierten SAS-Datei

   Eliminieren bestimmter Beobachtungen

   mehrfache Ausgabe einer Beobachtung

 

Beispiel (1) für das Zerlegen der INPUT-Daten:

 

DATA UMSATZ;

  ARRAY UMSQ (*) Q1-Q4;

  INPUT Q1-Q4 JAHR;

  DO I = 1 TO 4;

    UMS = UMSQ(I);

    OUTPUT;

  END;

DROP Q1-Q4;

 

Die SAS-Datei UMSATZ enthält die Variablen JAHR, I (für das Quartal)und UMS.

 

 

Beispiel (2) für das Eliminieren bestimmter Beobachtungen:

 

DATA POP;

   INPUT BUNDLAND $ 1-3 STADT $ 4-12 EINWOHN 13-19;

   IF BUNDLAND = 'TIR' THEN OUTPUT;

 CARDS;

 WIEWIEN     1560000

 TIRZELL/ZILL   1230

 ;

 

Die SAS-Datei POP enthält nur den Satz 'TIR'. In diesem Beispiel würde jede der Anweisungen

 

   IF BUNDLAND = 'TIR' THEN OUTPUT;

   IF BUNDLAND = 'TIR';    /*  'subsetting IF'  */

 

zum gleichen Ergebnis führen.

 

 

Beispiel (3) für die mehrfache Ausgabe einer Beobachtung:

AUFGABENSTELLUNG:

In die Datei INVENT sollen alle Beobachtungen aufgenommen werden. In die Datei BESTELL nur jene, bei denen der IST-Lagerbestand geringer als der Mindestlagerbestand ist. In die Datei FEHL sollen jene Beobachtungen aufgenommen werden, bei denen SOLL- und IST-Bestand (Inventurdifferenz) nicht gleich sind.

 

DATA INVENT BESTELL FEHL;

 INPUT ART_NR IST SOLL MINDEST;

 OUTPUT INVENT;

 IF MINDEST < IST THEN DO;

   B_MEN = MINDEST - IST;

   OUTPUT BESTELL;

 END;

 IF IST NE SOLL THEN OUTPUT FEHL;

CARDS;

...........

;

 

Beachte| Ein 'subsetting IF' kann hier nicht die OUTPUT-Anweisung er-

setzen wie im letzten Beispiel.

 

 

Beachte| Es kann nur auf jene Datenbestände geschrieben werden, die auch in der DATA-Anweisung definiert worden sind.

 

Findet SAS im DATA-Step eine OUTPUT-Anweisung, so erfolgt die Ausgabe nicht, wie bisher gewohnt, automatisch nach der letzten Anweisung des DATA-Steps, sondern immer dann, wenn die OUTPUT-Anweisung im Programmablauf durchlaufen wird.

 

 

3.18                     DELETE-Anweisung

Sie hat die Form

 

   DELETE;

 

Die Beobachtung, für welche die DELETE-Anweisung Geltung hat, ist in der Datenmatrix, die im DATA-Step erzeugt wird, nicht enthalten.

 

 

Beispiel

Im obigen Beispiel (2) würden die Anweisungen

   IF BUNDLAND NE 'TIR' THEN DELETE;

   IF BUNDLAND = 'TIR' THEN OUTPUT;

zum gleichen Ergebnis führen.

 

3.19                    DAS EINLESEN VON DATEN aus einer Betriebssystemdatei

 

Dazu benötigen wir

·         die INFILE-Anweisung

·         die INPUT-Anweisung

 

3.19.1                Lesen von der Disk

Bespiel Dateidefinition für Lesen von der Platte:

 

   DATA EINS;

     INFILE 'MEINDAT';

     INPUT variablenliste und -beschreibung;

 

Die INFILE-Anweisung sagt SAS, dass die mit der INPUT-Anweisung zu lesenden Daten in der Datei MEINDAT zu finden sind. Die INPUT-Anweisung sagt SAS,  die die Daten in der zu lesenden Dateistrukturiert sind.

 

3.19.2                Lesen von einem Band

Beispiel Dateidefinition für Lesen vom Magnetband:

 

   DATA VIER;

     INFILE FREMDTAP BLKSIZE=800 LRECL=80 ;

     INPUT .....;

 

 

Beachte! Die Angaben zur Satzlänge (LRECL) und Blockgrösse (BLKSIZE) müssen mit den Groessen des einzulesenden Bandes übereinstimmen.

 

Zur INFILE-Anweisung gibt es zahlreiche Optionen (siehe das Handbuch SAS BASICS)

 

3.20                    Ausgabe von Daten in eine Betriebssystemdatei

3.20.1                FILE-Anweisung

3.20.1.1             Standard-Files

Die Standardfiles werden im Kapitel REPORTERSTELLUNG beschrieben. Folgende wesentliche gibt es:

   LOG

   PRINT

3.20.1.2             Vom Benutzer definierte Files

3.20.1.2.1             WINDOWS und UNIX

Die FILE-Anweisung stellt die Verbindung zwischen dem symbolischen Namen der Datei in SAS und der physischen Datei her. Daher ist diese Anweisung abhängig von jeweiligen Betriebssystem abhängig.

 

Sie hat unter WINDOWS und UNIX die SYNTAX:

 

       FILE NAME `EFN`.

  

Für den externen Filenamen (EFN) folgende Filedefinitionen zugelassen:

   die Kurzbezeichnung – in diesem Fall wird die Datei im aktuellen Directory angelegt

   der qualifizierte Dateiname – in diesem Fall wird die Datei in dem angegebenen Directory (dieses muss bereits vorhanden sein) angelegt. 

 

Beachte!  Die EFN müssen den Konventionen des Betriebssystems entsprechen und nicht jenen von SAS. Sie sind immer unter Hochkomma zu setzen.

3.20.1.2.2             CMS

Der FILE-Anweisung muss eine Filedef-Anweisung (FI) vorausgehen. Dies kann entweder durch eine CMS-Anweisung oder eine X-Anweisung erfolgen:

 

        CMS FILEDEF AUSGABE DISK AUSG TEXT A;

        FILE AUSGABE;

 

3.20.2                PUT-Anweisung

Siehe Kapitel Reporterstellung

3.21                    ARBEITEN MIT SAS-DATEIEN

3.21.1                Allgemeines

Eine SAS-Datei ist das Ergebnis eines DATA-Steps. Sie kann laufzeiteffizienter bearbeitet werden als eine Betriebssystem-Datei.

 

     

Beispiel: Durch die Anweisung

 

   DATA TEST;

   ....

 

wird eine temporäre SAS-Datei mit dem Namen TEST angelegt. Sie steht bis zur Beendigung des SAS-Programms für weitere Bearbeitungen zur Verfügung. Man nennt sie eine temporäre SAS-Datei.

 

3.21.2                LIBNAME-Anweisung

Die LIBNAME-Anweisung stellt die Verbindung zwischen einem Directory und einem SAS-Directory her. Unter UNIX und Windows ist sie für permanente Dateien unbedingt erforderlich. Unter anderen Betriebssystemen kann sie entfallen (z. B.: CMS).

 

Beispiel: Durch die Anweisung

 

  DATA UMSATZ.FOOD;

  LIBNAME UMSATZ 'STATISTIK';

 

wird eine permanente SAS-Datei im Verzeichnis STATISTIK mit dem Namen FOOD erzeugt. Sie steht sowohl während des Laufes des SAS-Programms für weitere Bearbeitungen zur Verfügung; sie wird aber andererseits auch als Betriebssystem-Datei im Verzeichnis STATISTIK mit dem Namen FOOD in einem speziellen SAS-Format gespeichert und kann bei einem zukünftigen Lauf eines SAS-Programms als SAS-Datei UMSATZ.FOOD angesprochen werden, ohne dass die SAS-Datei neuerlich erzeugt werden muss.

 

Beachte!

·         Die LIBNAME-Anweisung muss unter WINDOWS und UNIX auf ein bereits bestehendes Verzeichnis zeigen.

·         Die Filereferenz muss mit dem ersten Namen des DATA-Steps übereinstimmen.

 

SAS-Dateien koennen in einem SAS-Procedure analysiert oder in einem weiteren DATA-Step bearbeitet werden. Für letzteren Zweck dienen die:

·         SET-Anweisung

·         MERGE-Anweisung

 

3.22                    SET-Anweisung

Wir beginnen mit der SET-Anweisung. Sie wird zum Einlesen einer SAS-Datei, zum (sequentiellen) Kombinieren von SAS-Dateien und zum sortierten Kombinieren von SAS-Dateien verwendet.

 

 

Beispiel: SET-Anweisung zum Einlesen einer SAS-Datei

 

   DATA ALLE;

      INPUT NAME $ 1-10 GEHALT 11-20;

      CARDS;

       ...

       ;

 

   DATA ARM;

      SET ALLE;

      IF GEHALT < 10000;

       ...

       ;

 

 

In die SAS-Datei ARM werden alle Sätze der SAS-Datei ALLE eingelesen (SET ALLE;), aber nur jenen behalten (IF ...), für welche die Bedingung erfüllt ist.

 

 

Beispiel: SET-Anweisung zum Kombinieren von SAS-Dateien

 

DATA WERK1;

  INPUT NAME $ 1-10 GEHALT 11-20 SEX $ 22;

  CARDS;

TRABER M.   43000.00 M

MEIER A.    28000.00 W

....

    ;

 

DATA WERK2;

  INPUT NAME $ 1-10 GEHALT 11-20 BONUS 21-26;

  CARDS;

KUNISCH T.24400.00    2000

WOLTER F. 19000.00   16000

...

   ;

 

DATA BETRIEB;

  SET ABTEIL1 ABTEIL2;

 

 

In die SAS-Datei BETRIEB werden zuerst die Sätze aus ABTEIL1, dann jene aus ABTEIL2 gestellt. Die SAS-Datei BETRIEB enthält folgende Sätze:

 

TRABER M.   43000.00 M     .

MEIER A.    28000.00 W     .

...

KUNISCH T.  24400.00 .  2000

WOLTER F.   19000.00 . 16000

...

 

 

Beachte! Die "missing values" in der SAS-Datei BETRIEB.

 

 

Beispiel: SET-Anweisung zum sortierten Kombinieren von SAS-Dateien (SET-Anweisung mit BY-Option)

 

DATA WERK1;

  INPUT NAME $ 1-10 GEHALT 11-20 SEX $ 22;

  CARDS;

TRABER M.   43000.00 M

MEIER A.    28000.00 W

....

   ;

DATA WERK2;

  INPUT NAME $ 1-10 GEHALT 11-20 BONUS 21-26;

  CARDS;

KUNISCH T.24400.00    2000

WOLTER F. 19000.00   16000

...

   ;

PROC SORT;

  BY NAME;

DATA BETRIEB;

  SET ABTEIL1 ABTEIL2; BY NAME;

 

 

In die SAS-Datei BETRIEB werden in nach der Variablen NAME sortiertert. Folge die Sätze aus ABTEIL1 und ABTEIL2 gestellt. Voraussetzung ist, dass beide (alle) zu kombinierenden Dateien das in der BY-Option angeführten Kriterium (NAME) enthalten und nach ihm sortiert sein müssen.

 

Die SAS-Datei BETRIEB enthält folgende Sätze:

 

KUNISCH T.  24400.00 .  2000

...

MEIER A.    28000.00 W     .

...

TRABER M.   43000.00 M     .

...

WOLTER F.   19000.00 . 16000

...

 

 

3.23                    MERGE-Anweisug

Die MERGE-Anweisung dient dazu, Beobachtungen aus mehreren SAS-Dateien zu einer Beobachtung zusammenzufassen.

 

 

Beispiel: MERGE-Anweisung zum sortierten Kombinieren von SAS-Dateien (MERGE-Anweisung mit BY-Option)

 

DATA NAMEN;

  INPUT KDN_NR NAME $;

  CARDS;

126448 TAVIANI

223456 KUNISCH

184417 MUELLER

355643 BOSCOVIC

...

    ;

 

PROC SORT;

  BY KDN_NR;

 

DATA WOHNORT;

 INPUT KDN_NR ORT $ PLZ;

CARDS;

355643 WIEN 1220223456 GRAZ 8020

126448 LINZ 4010

...

    ;

 

PROC SORT;

  BY KDN_NR;

 

DATA KUNDEN;

 MERGE NAMEN WOHNORT;

 BY KDN_NR;

 

 

Jeder Satz in die SAS-Datei KUNDEN enthält die Variablen KDN_NR, NAME, ORT, und PLZ. Die Sätze stehen in nach der Variablen KDN_NR sortierter Folge. Voraussetzung ist wiederum, dass beide (alle) zu kombinierenden Dateien das in der BY-Option angeführten Kriterium (KDN_NR) enthalten und nach ihm sortiert sein müssen. Die SAS-Datei KUNDEN enthält folgende Sätze:

 

126448 TAVIANI LINZ  4010

184417 MUELLER    .     .

223456 KUNISCH GRAZ  8020

355643 BOSCOVIC WIEN 1220

 

Beachten Sie die "missing values" in der SAS-Datei NAMEN.

 

 

Noch ein Beispiel zum sortierten Kombinieren mit MERGE-Anweisung:

 

DATA SEX;

  INPUT VORNAME $ GESCHL $;

  CARDS;

HERBERT M

MARIA M

ANNA W

;

 

DATA PERSONEN;

  INPUT VORNAME $ ZUNAME $;

  CARDS;

HERBERT MOSER

BERTA HUBER

ANNA MEIER

MARIA SANDNER

HERBERT MUELLER

MARIA WOLF

;

 

PROC SORT DATA=SEX;

 BY VORNAME;

 

PROC SORT DATA=PERSONEN;

 BY VORNAME;

 

DATA MERGE;

 MERGE PERSONEN SEX;

 BY VORNAME;

 

 

Die SAS-Datei MERGE enthält folgende Sätze:

 

ANNA MEIER W

BERTA HUBER

HERBERT MOSER M

HERBERT MUELLER M

MARIA WOLF M

MARIA SANDNER M

 

 

Grob gesprochen, vermehrt die SET-Anweisung die Zahl der Beobachtungen, während die MERGE-Anweisung die Zahl der Variablen vermehrt. Am deutlichsten wird das beim Verwenden von SET- und MERGE-Anweisung ohne BY-Option. Den Fall einer MERGE-Anweisung ohne BY-Option, der in Anwendungen kaum vorkommt, zeigt das nächste Beispiel.

 

 

Beispiel: MERGE-Anweisung zum nicht-sortierten Kombinieren von SAS-Dateien (MERGE-Anweisung ohne BY-Option)

 

DATA EINS;

 INPUT MATR_NR NAME $;

CARDS;

123456 MEIER

123457 MUELLER

123458 TESTER

...

    ;

 

DATA ZWEI;

 INPUT VORNAME $ ORT $;

CARDS;

HERBERT WIEN

FRANZ GRAZ

HUBERT LINZ;

...

    ;

 

DATA DREI;

 MERGE EINS ZWEI;

 

Die SAS-Datei DREI enthält folgende Sätze:

 

123456 MEIER HERBERT WIEN

123457 MUELLER FRANZ GRAZ

123458 TESTER HUBERT LINZ

 

 

Achtung! Sie sind selbst dafür verantwortlich, dass die zusammengehörigen Beobachtungen der "gemergten" Dateien richtig zugeordnet sind. Man wird wohl den geringen Extra-Aufwand, eine BY-Variable in jeder der SAS-Dateien mitzuführen, gerne in Kauf nehmen.

 

 

3.24                    Für Sie zum Üben

3.24.1                Allgemeines

Die Daten sind zwar schon älteren Datums, aber Sie können trotzdem noch ausgewertet werden. Im Rahmen dieses Tutorials soll die Arbeitsweise mit SAS gezeigt werden.

3.24.2                2. Aufgabe

 

Angaben

Die  Indizes der Umsätze des Einzelhandels betrugen in den  Berichtsmonaten MAI 1987, JUNI 1987 und JULI 1987 nominell (Quelle: Groß- und Einzelhandel Umsatz- und Wareneingangsindizes, Österreichisches Statistisches Zentralamt).

 

                                        MAI     JUNI      JULI

EH.M.NAHRUNGS-U.GENUSSM.AUSG.TABAK    209.3     214.9     230.0

EH.M.TABAKWAREN                       259.6     268.0     283.0

EH.M.TEXTILWAREN                      201.7     184.4     208.4

EH.M.SCHUHEN                          191.3     175.1     199.7

EH.M.LEDER UND LERDERERSATZWAREN      138.6     140.0     142.4

EH.M.HEILMITTELN                      281.2     284.5     299.4

EH.M.KOSZ.ERZ.,WASCHM.,CHEMIKALIEN    190.3     200.9     221.1

EH.M.MÖBELN UND HEIMTEXTILIEN         195.0     209.4     246.5

EH.M.METALLW.,HAUSHALTSG.,GLASW.      174.5     177.7     188.5

EH.M.GUMMI-U.KUSTSTOFFWAREN           109.1     116.1     120.4

EH.M.FAHRZEUGEN                       331.2     345.1     337.5

EH.M.NÄH-,STRICK-,U.BÜROMASCH.        200.9     215.4     211.7

EH.M.OPTISCHEN U.FEINMECH.ERZ.        321.1     372.4     397.5

EH.M.ELEKTROTECH.ERZEUGNISSEN         143.9     161.1     172.9

EH.M.PAPIER-U.SCHREIBW.,BUEROBED      147.2     150.1     154.0

EH.M.BUECHERN,ZEITG.,MUSIKALIEN       202.2     202.1     224.3

EH.M.UHREN U.SCHMUCKWAREN             192.2     172.2     215.4

EH.M.SPIELW.,SPORTART.U.MUSIKINSTR.   155.7     189.1     232.6

EH.M.BRENNSTOFFEN                     165.5     195.0     201.9

EH.M.TREIBSTOFFEN                     172.8     179.0     199.8

EH.M.BLUMEN U.PFLANZEN                507.2     311.9     266.2

WAREN-U.VERSANDHÄUSER                 178.9     159.2     155.0

EH.M.GEMISCHTWAREN                    238.4     246.0     290.9

EH.M.ÜBRIGEN WAREN                    131.6     139.0     144.0

 

Die Daten finden sich in der Datei ehums.daten.

 

Aufgabenstellung

Berechnen Sie die Veränderungen der Indexzahlen zum Vormonat in Absolutwerten und in Prozenten.

 

Drucken Sie die Ergebnisse aus.

 

Legen Sie eine permanente SAS-Datei an, welche die vollständige Branchenbezeichnung, die Indexwerte, und die Veränderungen zum Vormonat enthält.

 

 

3.24.3                3. Aufgabe

Angaben

Die Indizes der Umsätze des Einzelhandels betrugen im Berichtsmonat AUGUST 87 nominell (Quelle: Groß- und Einzelhandel Umsatz- und Wareneingangsindizes (Österreichisches Statistisches Zentralamt).

 

                                      AUGUST

EH.M.NAHRUNGS-U.GENUSSM.AUSG.TABAK    211.4

EH.M.TABAKWAREN                       249.7

EH.M.TEXTILWAREN                      168.5

EH.M.SCHUHEN                          162.7

EH.M.LEDER UND LERDERERSATZWAREN      152.6

EH.M.HEILMITTELN                      272.5

EH.M.KOSZ.ERZ.,WASCHM.,CHEMIKALIEN    187.7

EH.M.MÖBELN UND HEIMTEXTILIEN         211.7

EH.M.METALLW.,HAUSHALTSG.,GLASW.      159.9

EH.M.GUMMI-U.KUSTSTOFFWAREN           107.4

EH.M.FAHRZEUGEN                       264.7

EH.M.NÄH-,STRICK-,U.BÜROMASCH.        178.6

EH.M.OPTISCHEN U.FEINMECH.ERZ.        355.0

EH.M.ELEKTROTECH.ERZEUGNISSEN         151.0

EH.M.PAPIER-U.SCHREIBW.,BUEROBED      164.0

EH.M.BÜCHERN,ZEITG.,MUSIKALIEN        221.2

EH.M.UHREN U.SCHMUCKWAREN             234.5

EH.M.SPIELW.,SPORTART.U.MUSIKINSTR.   191.8

EH.M.BRENNSTOFFEN                     228.7

EH.M.TREIBSTOFFEN                     197.1

EH.M.BLUMEN U.PFLANZEN                236.8

WAREN-U.VERSANDHÄUSER                 180.8

EH.M.GEMISCHTWAREN                    268.8

EH.M.ÜBRIGEN WAREN                    139.0

 

Die Daten finden sich in der Datei ehums1.daten.

 

Aufgabenstellung

Führen Sie die Daten mit jenen der Aufgabe 1 zusammen.

 

Berechnen Sie die Veränderungen der Indexzahlen zum Vormonat in Absolutwerten und in Prozenten.

 

Drucken Sie die Ergebnisse aus.

 

 

3.24.4                4. Aufgabe

Angabe

Auf  der  virtuellen Maschine Betkurs finden Sie die Datei fort.test. Diese Datei enthält Angaben über Veranstaltungen an der WU.

 

Aufgabenstellung

Geben  Sie  eine Liste aller jener Veranstaltungen aus,  die  Vorlesung („VO“) oder Übung („UE“) sind.

 

 

3.24.5                5. Aufgabe

 

Angaben

Von den an der Wiener Börse notierten Aktien sind folgende Daten bekannt:

 

Name                   Kurs    letzte Dividende  Hoechstkurs   Tiefstkurs

                  am 28.11.87

 

CA-BV STAMM           1980          60           2480           1960

CA-BV VORZ.           1900          60           2285           1830

CA KAP-ANT.           1920          30           2160           1740

ÖLB STAMM              384          12            450            344

ÖLB VZ                 375          12            418            319

ÖLB PS                 350           3            393            315

BANK F. KÄRNTEN        453          12            472            449

BANK F. OÖ.            452          12            475            450

BANK F. TIROL          451          12            473            448

ERSTE ALL. ST.        5390          50           7990           5200

ERSTE ALL. VZ.        5160          50           7280           5100

INTERUNFALL          11070         100          13200          10800

WIENER ALLIANZ       12330          60          16500          12300

AKG                   3320         150           4330           2970

PORR STAMM             308          11            355            288

PORR VZ                277          11            350            270

AUSTIA EMAIL          2190         120           2400           1660

CONSTANTIA             930          22           1200            890

GÖSSER                2780          75           3450           2460

HEID                  1215           0           1835           1080

HOLTEX                 300           0            320            245

HUTTER                 259           9            355            224

IFE                   1445          45           1700           1420

IMP. HOTELS            683           0            750            640

JENBACHER             1820           0           1950           1790

JUNGBUNZLAUER         6810         500          11470           6550

KABEL U. DRAHT        1850          50           2350           1620

LEIPNIK                219           9            270            200

LENZING                577          15            835            487

LEYKAM                 296          12            410            213

LINZ TEXTIL           4750         140           6080           2750

MAGINDAG              1205           0           1620           1103

MANNER                 495          15            530            435

MAUTNER VZ            2145          80           3100           2050

MEINL                 1030           9           1400           1000

MIBA VZ                600           5            785            520

MONTANA              11150         700          18250          10850

NEUSIEDLER            4320         120           5750           4320

ÖMV HANDEL ST         4320          75           5200           2550

ÖMV HANDEL VZ         1750          75           2330           1240

Ö. AUTO                204           5            258            161

Ö. BRAU               2450          75           3300           2270

Ö. BROWN BOVERI        195           5            275            181

OTTAKRINGER VZ.        790           3.5          860            760

PAPIER LAAKIRCHEN     2170         120           3100           2080

PERLMOSER              630          20.5          780            555

RADEX                  265          10            322            255

REININGHAUS            800          18            990            770

SCHLUMBERGER          3990         100           4534           3519

SCHWECHATER           1130          40           1690           1030

SEMPERIT               168           0            230            152

STADLAUER              303          12            370            215

STEYR DAIMLER          114           0            167            106

STEYRMÜHL             3000          80           3250           3000

STÖLZLE                250           0            250            250

STRABAG               3760         150           4600           3500

TEERAG                1350          25           1350            720

TREIBACHER             270           6            372            250

UNION BAUM.           1610          22           1645           1200

UNIVERSALE             258           0            290            165

VEITSCHER              640          24           1150            605

WAAGNER BIRO           189           0            243            173

WERTHEIM               358           0            412            268

WIENER HOTEL          3100           0           3100           3100

WIENER LOKALB.         360           0            360            360

WIENERBERGER          1005          17           1293            895

 

Die Daten sind in der Datei aktien.daten gespeichert.

 

Aufgabenstellung

Berechnen Sie:

·         Dividendenrendite für aktuellen, Tiefst- und Hoechstkurs.

·         Spannweite des Kurses, absolut und in Prozent vom Tiefst- und vom aktuellen Kurs.

 

Erstellen Sie eine Liste, die nur jene Gesellschaften enthält, die eine Dividende ausgeschüttet haben.

 

Ihr Freund will Aktien erwerben. Er möchte sein Risiko streuen und deshalb von jeder Aktie maximal 1 Stück kaufen. Zur Maximierung seines Gewinnes wählt er nach der Dividendenrendite die zu kaufenden Papiere.

 

Erstellen Sie eine Liste der Aktien, die nach der Dividendenrendite sortiert ist. Außerdem soll die Liste das aufgewendete Kapital und die Durchschnittsverzinsung enthalten für den Fall, dass Ihr Freund alle Aktien von Top der Liste bis zur jeweiligen Zeile kauft.

 

3.24.6                6. Aufgabe

Nehmen Sie eine Wirtschaftszeitung zur Hand und geben Sie die heutigen Börsekurse in eine Datei ein. Führen Sie diese mit den historischen Daten zusammen.

 

Erstellen Sie eine Liste, aller jener Gesellschaften, die heute keine Aktien mehr begeben haben. Erstellen Sie eine Liste aller jener Gesellschaften, die heute noch gehandelt werden.

 

4     SAS-PROZEDUREN

4.1    AUFBAU der SAS-PROZEDUREN

4.1.1                      Allgemeines

 

Mit SAS-Prozeduren können Sie SAS-Dateien analysieren, die Sie zuvor in einem DATA-Step erstellt haben. In einem SAS-Programm können Sie mehrere SAS-Prozeduren aufrufen. Jeden Aufruf einer SAS-Prozedur nennen wir einen PROC-Step.

 

Ein PROC-Step beginnt mit der PROC-Anweisung. Sie spezifiziert, welche Prozedur ausgeführt werden soll. Die weiteren Anweisungen des PROC-Step enthalten Angaben, mit der Details der SAS-Prozedur (die zu bearbeitende SAS-Datei, der Output, Optionen etc.) festgelegt werden.

 

Achtung! Wie im DATA-Step muss auch jede SAS-Anweisung eines PROC-Steps mit einem Semikolon abgeschlossen werden.

 

Konvention des PROC-Steps: Im PROC-Step werden, wenn nicht anders angegeben, alle Variablen und alle Beobachtungen der zuletzt erstellten Datei analysiert. Soll im PROC-Step nicht die zuletzt, sondern eine früher erstellte Datei bearbeiten soll, so ist die zu analysierende Datei mit einer DATA-Option festzulegen.

 

Die Details der statistischen Analyse einer SAS-Prozeduren werden

·         mittels Optionen

·         durch Anweisungen

festgelegt.

 

4.1.2                       Optionen

Typische Optionen einer SAS-Prozedur sind:

 

·         die Datei-Option

·         die OUT-Option

 

Ein Beispiel