29
1. SAS-Dateien 1.1 SAS-Begriffe SAS-Bibliothek = SAS data library In einer SAS-Bibliothek werden SAS-Dateien gespeichert. SAS-Dateien sind vom Typ DATA und CATALOG (oder VIEW, ACCESS, PROGRAM ...). SAS-Datendatei = SAS data set (SAS-Datei vom Typ DATA) SAS-Kataloge beinhalten Grafiken, Formate, Einstellungen u.a.m. 1.2 SAS-Dateien temporäre und permanente SAS-Dateien Referenzierung von SAS-Dateien durch zwei-stufigen Namen: Libref . (Punkt) Dateiname Beispiele: clinic.admit urz.fb, work.test eins 1.3 SAS-Datendatei (oder kurz: SAS-Datei) besteht aus Beschreibung + Daten, eventuell noch aus einem Index Daten Rechteckige Tabelle Spalten = Variablen (variables) Zeilen = Beobachtungen (observations) Beschreibung Name der Datei und deren Typ Datum und Uhrzeit der Dateibildung Anzahl der Beobachtungen und Variablen Eigenschaften der Variablen SAS-Namen: test neu _1960 mittel1 mean_02 1.4 Variableneigenschaften Name der Variablen Typ: numerisch oder alphanumerisch, davon hängt die Darstellung der fehlenden Werte (Missing values) ab. (Bei numerischen Variablen wird ein Punkt verwendet, bei Zeichenketten einfach ein Leerzeichen.) Länge (abhängig vom Typ) Position Informate und Formate (Bsp. comma., dollar8.2) Labels Einführung in SAS im Selbststudium - Kursunterlagen file:///F|/_SASCBT/kurs1.html (1 von 2) [17.02.2000 09:23:11]

Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Embed Size (px)

Citation preview

Page 1: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

1. SAS-Dateien1.1 SAS-Begriffe

SAS-Bibliothek = SAS data library●

In einer SAS-Bibliothek werden SAS-Dateien gespeichert.●

SAS-Dateien sind vom Typ DATA und CATALOG (oder VIEW, ACCESS,PROGRAM ...).

SAS-Datendatei = SAS data set (SAS-Datei vom Typ DATA)●

SAS-Kataloge beinhalten Grafiken, Formate, Einstellungen u.a.m.●

1.2 SAS-Dateien

temporäre und permanente SAS-Dateien●

Referenzierung von SAS-Dateien durch zwei-stufigen Namen:Libref . (Punkt) Dateiname

Beispiele: clinic.admit urz.fb, work.test eins●

1.3 SAS-Datendatei (oder kurz: SAS-Datei)

besteht aus Beschreibung + Daten, eventuell noch aus einem Index●

Daten

Rechteckige Tabelle❍

Spalten = Variablen (variables)❍

Zeilen = Beobachtungen (observations)❍

Beschreibung

Name der Datei und deren Typ❍

Datum und Uhrzeit der Dateibildung❍

Anzahl der Beobachtungen und Variablen❍

Eigenschaften der Variablen❍

SAS-Namen: test neu _1960 mittel1 mean_02●

1.4 Variableneigenschaften

Name der Variablen●

Typ: numerisch oder alphanumerisch, davon hängt die Darstellung der fehlenden Werte(Missing values) ab. (Bei numerischen Variablen wird ein Punkt verwendet, beiZeichenketten einfach ein Leerzeichen.)

Länge (abhängig vom Typ)●

Position●

Informate und Formate (Bsp. comma., dollar8.2)●

Labels●

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs1.html (1 von 2) [17.02.2000 09:23:11]

Page 2: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

1.5 SAS-Programme

bestehen aus Datenschritten und Prozedurschritten●

Datenschritt = DATA●

Prozedurschritt = PROC●

SAS-Anweisung = SAS statement

beginnt mit Schlüsselwort und❍

endet mit Semikolon (;).❍

1.6 Beispiel

/* Ein Datenschritt mit drei Anweisungen DATA, INPUT und LINES*/DATA eins;     INPUT name $ alter @@;     LINES;Otto 10 Hans 11 Karin 15 Marion 13RUN;

/* Zwei Prozedurschritte PROC PRINT und PROC MEANS */PROC PRINT DATA=eins;RUN;PROC MEANS DATA=eins;     VAR alter;RUN;

 

1.7 Namenskonventionen beim Abspeichern derFensterinhalte

Für das Program Editor-Fenster verwendet man *.sas, für das Protokollfenster *.log und für dieAusgaben *.out oder *.lst.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs1.html (2 von 2) [17.02.2000 09:23:11]

Page 3: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

2. Display Manager Systeminteraktive Windows-Umgebung innerhalb des SAS-Systems zum●

Ausführen verschiedener Arbeiten.●

Schnittstelle zwischen Benutzer und System●

2.1 Wichtige SAS-Fenster

In Klammern stehen die Kommandos, mit denen die Fenster aufgerufen werdenkönnen. Kommandos werden in die Kommandozeile (links oben) eingetragen.

Program Editor (pgm)●

Protokoll oder Log (log)●

Ausgabe oder Output (output)●

Output Manager (manager)●

Keys (keys)●

Help (help)●

2.2 Ausführen von SAS-Kommandos

Kommandos können auf vier Arten ausgeführt werden:

Kommandozeile●

Menüleiste (rechtes Mausmenü)●

Tools-Leiste●

Funktionstaste●

Kombinationen von Kommandos:log;clear;out;clear;pgm;recall

2.3 Ausführen eines SAS-Programms

mit dem Submit -Kommando●

Programm verschwindet aus dem Programmfenster●

Status-Zeile über dem Programmeditor erscheint (DATA /PROC steprunning)

Sanduhr, solange SAS arbeitet●

Logfenster: ausgeführte Programmzeilen, Hinweise, Fehler- undErfolgsmeldung sowie die Dauer der einzelnen Programmschritte

2.4 Aktionen

Löschen von Fensterinhalten (clear)●

Ausgeführtes Programm zurückholen (recall)●

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs2.html (1 von 2) [17.02.2000 09:22:46]

Page 4: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Programm abspeichern (file)●

Verlassen des SAS Systems (bye)●

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs2.html (2 von 2) [17.02.2000 09:22:46]

Page 5: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

3. Einlesen externer Dateien imDatenschritt3.1 Aufbau eines Einleseprogramms

Globale Vorgänge

Referenzierung der SAS-Bibliothek❍

Referenzierung der externen Datei❍

1.

Datenschritt

Name der SAS-Datei❍

Lokalisation der Daten❍

Beschreibung der Daten❍

2.

Prozedurschritt

Auflistung der Daten❍

3.

3.2 Globale Vorgänge

Verweis auf SAS-Bibliothek - Anweisung LIBNAME

   LIBNAME lrefname 'SAS-Bibliothek';

   libname kurs 'd:\sascbt';   libname meinsas 'd:\hilde\daten';

Verweis auf externe Datei - Anweisung FILENAME

   FILENAME frefname 'externer File';

   filename tests 'd:\schule.dat';   filename in 'd:\hilde\roh\stud.dat';

3.3 Datenschritt

Name der SAS-Datei - DATA

   DATA SAS-Datei Optionen;

   data eins;   data kurs.neu;

Lokalisation der Daten - INFILE

   INFILE file-angabe Optionen;

   infile 'd:\stud.dat';   infile 'a:\path.dat' obs=10;   infile tests;

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs3.html (1 von 3) [17.02.2000 09:25:56]

Page 6: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

   infile in pad lrecl=300 firstobs=3;

Beschreibung der Daten - INPUT (hier: nur spaltengebundene Eingabe)

   INPUT variable $ start-end ...;

   input name $ 1-10 alter 12-14;   input a 1-2 b 3-4 c 5-6;   input a 1-2 c 5-6;

Spaltengebundene Eingabe ist möglich, wenn die Datenwerte in festen Spaltenstehen.

3.4 Prozedurschritt

Auflistung der Datenwerte - PROC PRINT

   PROC PRINT DATA=SAS-Datei;        VAR Variablenliste;   RUN;

   proc print data=eins;   run;   proc print data=kurs.zwei;        var name alter;   run;

3.5 Beispiel 1

Schreiben Sie ein SAS-Programm, um die Rohdatenwerte der DateiManagers.dat

   Strick West B103 40000   Dolan North A216 34000   Wells West A220 53000   Shapiro East B106 39500   Falk East C264 48000   ...

die Sie im Verzeichnis N:\sasurz\daten finden, in eine SAS-Datei Managerim Verzeichnis D:\daten zu überführen.

   libname   data        infile        input   run

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs3.html (2 von 3) [17.02.2000 09:25:56]

Page 7: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

3.6 Beispiel 2

Wie sehen die Programmschritte aus, um die Datenwerte Knochen.dat (imgleichen Verzeichnis wie Managers.dat)

   h bar 2586 2586 21.8 0.256   h bar 5769 5556 22.2 0.220   h bar 4545 5000 21.3 0.242   h bar 5357 5235 22.7 0.245   h dsc 1707 2000 17.3 0.212   h dsc 2963 3200 21.8 0.190   ...

in die permanente SAS-Datei Knochen auf Laufwerk A: zu übertragen?

   libname   data        infile        input   run

3.7 Empfehlungen

Schreiben Sie die notwendigen Programmschritte auf.●

Verwenden Sie im Datenschritt die Optionen OBS= und FIRSTOBS= derAnweisung INFILE.

Führen Sie das Programm aus und untersuchen das Protokoll- (Log-) Fensterauf Fehler.

Betrachten Sie den Inhalt der erzeugten SAS-Datei mithilfe desLibraries-Fensters oder der Prozedur PRINT.

Wenn keine Fehler im Protokollfenster erscheinen und die Werte korrektübernommen wurden, entfernen Sie die Optionen OBS= und FIRSTOBS= undführen Sie den Datenschritt und die Kontrolle erneut aus.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs3.html (3 von 3) [17.02.2000 09:25:56]

Page 8: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

4. Verändern bestehenderSAS-Dateien im DatenschrittAnweisungen zur Veränderung bestehender SAS-Dateien

DATA●

SET●

IF●

Zuweisung●

4.1 DATA-Anweisung

Benennung der SAS-Datei, die im Datenschritt gebildet wird, und evtl. der Variablen,die darin enthalten sein sollen oder die gelöscht werden sollen.

Beispiele:

   data neu;   data kurs.neu;

   data neu(keep=a b c);   data kurs.neu(drop=i);

4.2 SET-Anweisung

Benennung der bestehenden SAS-Datei, die eingelesen werden soll, und evtl. derVariablen, die bei der Erzeugung der neuen Datei verwendet oder gelöscht werdensollen.

Beispiele:

   set alt;   set kurs.alt;

   set alt(drop=c d e);   set kurs.alt(keep=f g h);

4.3 IF-Anweisung

Auswahl von Beobachtungen bzw. Bildung einer Untermenge der ursprünglichenBeobachtungen

Die Auswahl über die Formulierung einer logischen Bedingung getroffen. Wenn dieBedingung erfüllt ist, werden die Beobachtungen ausgewählt.

Allgemeine Syntax: IF logischer Ausdruck;

Beispiele:

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs4.html (1 von 4) [17.02.2000 09:26:05]

Page 9: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

   if sex="M";   if alter ge 20;

4.4 Zuweisungen

Zuweisungen verwendet man, um neue Variablen zu bilden oder bestehendeVariablen zu verändern.

Allgemeine Syntax: Variable = Ausdruck;

Beispiele:

   a=b+c;   d=min(a,b,c);

Arithmetische Operatoren

** Potenzierung* Multiplikation/ Division+ Addition- Subtraktion

4.5 SAS-Funktionen

In der Online-Hilfe des SAS-Systems werden die Funktionen nach Kategoriengeordnet angezeigt: Help => Extended Help => SAS System Help: Main Menu =>SAS Language => SAS Functions.

Funktion Erläuterung Kategorie Beispiel

MINkleinster Wert derArgumente

arithmetischeFunktionen

m=min(a,b);i

ROUNDRunden auf dienächste Einheit

Truncation a=round(x);

MEANBerechnung desarithmetischenMittels

Statistikmittel=mean(a1, a2,a3);

SCANSuche eines Wortsin einerZeichenkette

Alphanumerisch a=scan(satz,word);

Weitere Beispiele findet man im SAS Language Guide.

4.6 Auswahl von Variablen

Mit der Data-Option KEEP= benennt man die Variablen, die übernommen oderbehalten werden.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs4.html (2 von 4) [17.02.2000 09:26:05]

Page 10: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

data neu(keep=a b); set alt(keep=a b c);

Mit der Data-Option DROP= benennt man die Variablen, die gelöscht werden.

data neu(drop=a b c); set alt(keep=d e);

4.7 Aufgabe

Die SAS-Bibliothek N:\SASURZ\DATEN enthält u.a. die SAS-Datei Blutbild.

Legen Sie eine temporäre Kopie Bild1 der Datei an.1.

Legen Sie eine zweite Kopie Bild2 an, die nur die Variablen Pille und Alterbehält.

2.

Legen Sie eine dritte Kopie Bild3 an, aus der die drei Variablen Calcium,Albumin und Cholestr gelöscht werden.

3.

Bilden Sie in einem Datenschritt aus der Datei Bild1 eine neue VariableSumme, die die Summe der drei Blutparameter enthält.

4.

Bilden Sie den mittleren Blutwert (aus Calcium, Albumin und Cholestr,Datenschritt mit Datei Bild1).

5.

Berechnen Sie das mittlere Alter der Probandinnen.6.

   data .....;        set .....;   run;

   data .....;        .... . ....(keep=.... ....);   run;

   data .....;        .... .. ...(....=.... .... ....);   run;

   data .....;        .... .....;        summe=.........;   run;

   data .....;        .... .....;        .....=.........;   run;

   ......        ..... .....

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs4.html (3 von 4) [17.02.2000 09:26:05]

Page 11: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

   run;

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs4.html (4 von 4) [17.02.2000 09:26:05]

Page 12: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

5. Darstellung von Daten in Listen(Reports)5.1 Prozeduren und Anweisungen

Prozeduren (mit Anweisungen und Optionen)

PRINT❍

SORT❍

FORMAT❍

globale Anweisungen

OPTIONS❍

TITLE, FOOTNOTE❍

lokale Anweisungen

LABEL❍

FORMAT❍

5.2 Prozedur PRINT

PROC PRINT DATA=SAS-Datei DOUBLE|D SPLIT="*";     VAR Variablenliste;     WHERE Logische Bedingung;     SUM Variablenliste;     BY Variablenliste;     ID Variablenliste;     SUMBY Variablenliste;

5.3 WHERE-Anweisung

Mit der Anweisung WHERE werden Beobachtungen ausgewählt.

Die Anweisungen im Daten- bzw. der Prozedurschritt werden für die Beobachtungenausgeführt, die die logische Bedingung erfüllen.

5.4 WHERE-Vergleichsoperatoren

=, eq equal to^=, ne not equal to>, gt greater than<, lt less than>=, ge greater than or equal to<=, le less than or equal to&, and  sowohl als auch|, or entweder oder

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs5.html (1 von 4) [17.02.2000 09:26:12]

Page 13: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

in enthalten in

Klammern erleichtern die Interpretation, z.B. where alter gt 18 and(sex="w" or ort="Heidelberg");

5.5 Prozedur SORT

PROC SORT DATA=SAS-Datei OUT=SAS-Datei;     BY Variablenliste;

5.6 Anweisung OPTIONS (OPTIONS-Fenster)

Systemoptionen zur Gestaltung des Ausgabe-Fensters

Syntax: OPTIONS Optionen;

Optionen:

DATE | NODATE●

NUMBER | NONUMBER●

CENTER | NOCENTER●

PAGENO=●

LINESIZE=●

PAGESIZE=●

Für welche Programmschritte gelten die im folgenden gesetzten Systemoptionen?

   options nonumber nodate;        * (1);   proc print data=namen;        var namen semester;        where fach="Psycho";   proc freq data=namen;        options date;              * (2);        where semester>15;   run;

...1.

...2.

5.7 Titel- und Fußzeilen

Anweisungen TITLE und FOOTNOTE sind globale Anweisungen. Bis zu 10 Titel undFußzeilen, title1-title10 bzw. footnote1-footnote10, sind möglich.

TITLE 'Text';TITLE1 'Text';FOOTNOTE 'Text';FOOTNOTE3 'Text';

Bei Neudefinition von Titel n werden alle Titelzeilen höherer Nummer gelöscht. (title3löscht title4-title10.) TITLE; FOOTNOTE; löscht alle Definitionen.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs5.html (2 von 4) [17.02.2000 09:26:12]

Page 14: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Vor dem Gebrauch des TITLE-Fensters sei hier abgeraten!

5.8 Anweisung LABEL

Etiketten für Variablen zur Beschriftung der Spalten (Spaltenüberschrift), lokaleAnweisung (lokal bedeutet, daß die Anweisung nur innerhalb von Daten- undProzedurschritten gültig ist)

LABEL Variable1='Label' Variable2='Label' ;

Ein Label kann bis zu 40 Zeichen lang sein. Prozedur PRINT benötigt zusätzlich dieOption LABEL:

proc print data=assay label;run;

5.9 Anweisung FORMAT

Etiketten oder Formate für die Datenwerte, d.h. die einzelnen Ausprägungen werden inanderer Form dargestellt. Die allgemeine Form dieser lokalen Anweisung lautet:

FORMAT Variable Formatname.;FORMAT var1 format1. var2 format2.;

Entweder verwendet man die von SAS bereitgestellten Formate oder selbst definierte.

5.10 SAS-Formate

COMMAw.d comma5.2  KommasDOLLARw.d dollar8.2  Dollarzeichen und KommasDDMMYYw. ddmmyy8.  Datumsangabenw. 7.  aufgerundet auf nächste ganze Zahlw.d 5.2  aufgerundet auf 2 Nachkommastellen

Weitere Formate findet man im SAS Language Guide.

Welches Format verwenden Sie, wenn die Zahl 10300.451 in der Form 10,300.45dargestellt werden soll?

Wichtig: Formate beeinflußen nur die Art der Darstellung, nicht die Datenwerte in derSAS-Datei!

5.11 Definition eigener Formate

Definition

PROC FORMAT;     VALUE Formatname Wert1='Text1' Wert2='Text2' ....;

1.

Verwendung

PROC PRINT DATA=...;     FORMAT Variable Formatname.;

2.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs5.html (3 von 4) [17.02.2000 09:26:12]

Page 15: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

RUN;

Beispiel für eine numerische Variable: Die Variable Gruppe wurde kodiert mit 1 (fürKontrolle) und 2 für (Behandlung).

   proc format;        value grp 1='Kontrolle'                  2='Behandlung';   proc print data=namen;        format gruppe grp.;   run;

Beispiel für eine alphanumerische Variable: Die Variable Sex wurde kodiert mit Wfür weiblich und M für männlich.

   proc format;        value $fsex W=weiblich                    M=männlich;   proc print data=namen;        format sex $fsex.;   run;

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs5.html (4 von 4) [17.02.2000 09:26:12]

Page 16: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

6. Zum besseren Verständnis desDatenschrittsEine SAS-Datei besteht aus

Beschreibungsteil (descriptor portion)

Name der Datei❍

Anzahl von Beobachtungen und Variablen❍

Eigenschaften der Variablen (Name, Typ, Länge)❍

Datenteil (data portion)

Variablen und Beobachtungen (Datenwerte)❍

6.1 Beispiel für Datei

Data Set Name: WORK.NOTENObservations:         5Variables:            5

Variable    Type    LenDEUTSCH     Num       8ENGLISCH    Num       8FRANZ       Num       8NAME        Char      6PUNKTE      Num       8

6.2 Erzeugung einer SAS-Datei

Rohdaten werden in eine SAS-Datei übertragen durch Ausführung eines Datenschritts. Der Datenschrittbesteht aus mehreren Anweisungen, die u.a. folgende Informationen enthalten:

Name der SAS-Datei❍

Lokalisation der Rohdaten❍

Instruktionen zum Einlesen❍

Vergaben der Variableneigenschaften❍

6.3 Beispiel für Rohwerte und Datenschritt

Noten.Dat    Andi   10 11  8             Heide  15 10  6             Georg  14 10 11             Anna   10  8 12             Hilde  12 10  9

data noten;     infile 'd:\kurse\cbt\sas\noten.dat';     input name $ 1-6 deutsch 8-9           englisch 11-12 franz 14-15;     punkte=deutsch+englisch+franz;run;

Datenschritt (DATA) wird in zwei aufeinanderfolgenden Stufen (Phasen) ausgeführt:

1. Kompilierung●

2. Ausführung●

6.4 Kompilierungsphase

Überprüfung auf Syntaxfehler:

fehlende oder falschgeschriebene Schlüsselworte●

Ungültige Variablennamen●

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs6.html (1 von 3) [17.02.2000 09:26:17]

Page 17: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Fehlende oder ungültige Satzzeichen●

Ungültige Optionen●

Am Ende steht die Dateibeschreibung, die aus dem Program Data Vector entnommen wird.

6.5 Program Data Vector (PDV)

wird während der Kompilierungsphase gebildet●

Speicherplätze für einzelne Datensätze (d.h. für jede Beobachtung)●

Rohwert ---> PDV ---> SAS-Datei●

Automatische Variablen: _N_, _ERROR_●

data noten;     infile 'd:\kurse\cbt\sas\noten.dat';     input name $ 1-6 deutsch 8-9           englisch 11-12 franz 14-15;     punkte=deutsch+englisch+franz;run;

|_N_|_ERROR_||NAME |DEUTSCH|ENGLISCH|FRANZ|PUNKTE||   |       ||     |       |        |     |      |

6.6 Ausführungsphase

erzeugt den Datenteil, indem der Datenschritt für jede Zeile in der Rohdatei einmal durchlaufen wird(Ausnahmen möglich).

Am Anfang wird

_N_ auf 1 gesetzt (1. Beobachtung) und❍

_ERROR_ auf 0 (kein Fehler),❍

die anderen Variablen auf Missing.❍

6.7 Beispiel für Ausführungsphase

Rohwerte:

             Andi   10 11  8             Heide  15 10  6             Georg  14 10 11             Anna   10  8 12             Hilde  12 10  9

Beginn:

|_N_|_ERROR_||NAME |DEUTSCH|ENGLISCH|FRANZ|PUNKTE||  1|      0||     |      .|       .|    .|     .|

1. Beobachtung eingelesen:

|_N_|_ERROR_||NAME |DEUTSCH|ENGLISCH|FRANZ|PUNKTE||  1|      0||Andi |     10|      11|    8|    29|

Nach jeder Iteration (d.h. nach jedem Durchlauf des Datenschritts) erfolgt:

Übertragung der Werte aus PDV in SAS-Datei●

Zurückspringen an Anfang des Datenschritts●

Erhöhung von _N_ um 1 und Setzen der anderen Werte auf Missing●

|_N_|_ERROR_||NAME |DEUTSCH|ENGLISCH|FRANZ|PUNKTE||  2|      0||     |      .|       .|    .|     .|

2. Beobachtung eingelesen:

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs6.html (2 von 3) [17.02.2000 09:26:17]

Page 18: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

|_N_|_ERROR_||NAME |DEUTSCH|ENGLISCH|FRANZ|PUNKTE||  2|      0||Heide|     15|      10|    6|    31|

6.8 Variablenfenster

liefert Informationen über die Variablen einer SAS-Datei Aufruf

Tools: Libraries , Bibliothek und Datei anklicken, dann über rechtes Mausmenü Var-Fenster öffnen●

Kommando: var noten, var cbt.klasse●

Menü: Globals - Access - Display Libraries und wie bei den Tools fortfahren●

6.9 Syntax-Fehler

Kann SAS die Fehler interpretieren, wird der Datenschritt kompiliert und ausgeführt.Kompilieren bedeutet, in Maschinensprache übersetzen

daat noten;     infile 'd:\kurse\cbt\sas\noten.dat';     input name $ 1-6 deutsch 8-9           englisch 11-12 franz 14-15;     punkte=deutsch+englisch+franz;run;

WARNING 14-169: Assuming the symbol DATA was misspelled asDAAT.

Kann SAS die Fehler nicht interpretieren, wird der Datenschritt kompiliert, aber nicht ausgeführt.

data noten;     unfile 'd:\kurse\cbt\sas\noten.dat'     input ....run;

ERROR 180-322: Statement is not valid or it is used out of proper order.NOTE: The SAS System stopped processing this step because of errors.WARNING: The data set WORK.NOTEN may be incomplete.         When this step was stopped there were 0 observations and 4 variables.WARNING: Data set WORK.NOTEN was not replaced because this step was stopped.

6.10 Ausführungsfehler

führen zu NOTE, WARNING oder ERROR●

Datenschritt läuft weiter oder wird abgebrochen●

Anzeige des PDVs im Log-Fenster●

Häufigster Fehler: Alphanumerische Variablen werden als numerische deklariert.●

Beispiel für Ausführungsfehler

data noten;     infile 'd:\kurse\cbt\sas\noten.dat';     input name 1-6 deutsch 8-9 englisch 11-12 franz 14-15;run;

NOTE: Invalid data for NAME in line 1 1-6.RULE: ----+----1----+----2----+----31     Andi   10 11  8 15NAME=. DEUTSCH=10 ENGLISCH=11 FRANZ=8 PUNKTE=29 _ERROR_=1 _N_=1...NOTE: The data set WORK.NOTEN has 5 observations and 5 variables.NOTE: The DATA statement used 2.35 seconds.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs6.html (3 von 3) [17.02.2000 09:26:17]

Page 19: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

7. In Spalten angeordneteRohwerte7.1 Begriffe

a. Fixed Fields

sind Rohdaten, die in Spalten angeordnet sind

>----+----1----+----2--- Hans Müller HD 69117 27 Karin Sorg  MA 68208 31

Welche andere Arten von Rohdaten sind vorstellbar?

b. Standard/Nonstandard-Data

Nichtstandard-Daten sind z.B. numerische Werte, die neben Zahlen und PunktenKommas, $, % enthalten, Datumsangaben und Hexadezimaldarstellungen.

>----+----1----+----2---Abt A 10,871.90 20.01.95Abt B  9,007.81 31.12.96

c. Informat

Anweisung zur Interpretation von eingelesenen Werte

d. Record

Zeile der Rohwerte-Datei

e. End-of-Record

Zeichen für Ende der Zeile

7.2 In Spalten angeordnete Rohwerte

SAS kennt zwei Arten des Einlesens für in Spalten angeordnete Rohwerte:

spaltengebundenes Einlesen bei Standarddaten●

formatgebundenes Einlesen bei Standard- und Nichtstandarddaten●

7.3 Vorteile von Rohwerten, die in Spalten angeordnet sind

Felder können in beliebiger Reihenfolge eingelesen werden●

Blanks in alphanumerischen Variablen sind möglich●

keine Platzhalter für fehlende Werte erforderlich●

mehrfaches Einlesen von Feldern möglich●

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs7.html (1 von 3) [17.02.2000 09:26:24]

Page 20: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Felder müssen nicht durch Blanks oder andere Zeichen getrennt werden.●

Spaltengebundene Eingabe

Angabe der ersten und letzten Spalte eines Feldes●

Identifikation alphanumerischer Variablen durch $●

>----+----1----+----2--- Hans Müller HD 69117 27

input name $  1-11  ort  $ 13-14 plz  $ 16-20  alter  22-23;

7.4 Formatgebundene Eingabe

benötigt

Spaltenzeiger zum Positionieren des Einlesezeigers sowie●

Informat (Einleseformat)●

input spaltenzeiger variable informat.;

input @1 abt $4. @6 budget comma9. @16 datum ddmmyy8.;

 >----+----1----+----2--- Abt A 10,871.90 20.01.95

7.5 Spaltenzeiger

@n: absoluter Spaltenzähler erlaubt beliebige Reihenfolge der Variablen●

+n: relativer Spaltenzähler kann nicht rückwärts laufen●

Nach dem Einlesen einer Variablen bleibt der Spaltenzeiger auf der ersten Spalte nachder Variablen stehen.

7.6 Einleseformate

enthalten immer die Breite der Felder und am Ende oder vor den Dezimalstellen einenPunkt

Beispiele: $w., w.d ,commaw.d, ddmmyy8.

7.7 Zeilen unterschiedlicher Länge

Fehlende Werte oder kürzere Ausprägungen führen in Rohwerte-Dateien oft zu Zeilenmit unterschiedlicher Länge.

>----+----1----+----2--- Hans Müller HD 69117 27* Karin Sorg  MA 68208* Kerstin Oh  LU* Karl Schön  HD 69120 30*

Diese bereiten beim spaltengebundenen Einlesen Probleme (vgl. Aufgabe).

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs7.html (2 von 3) [17.02.2000 09:26:24]

Page 21: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

Option PAD der INFILE-Anweisung führt dazu, daß alle Zeilen gleichlang sind:

infile in 'd:\adressen.dat' pad;

>----+----1----+----2--- Hans Müller HD 69117 27* Karin Sorg  MA 68208   * Kerstin Oh  LU         * Karl Schön  HD 69120 30*

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs7.html (3 von 3) [17.02.2000 09:26:24]

Page 22: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

8. Datums- und ZeitangabenDatums- und Zeitangaben werden von SAS in (SAS-eigene) Datumswerteverwandelt.

Es handelt sich bei Datums- und Zeitangaben um Nichtstandard Daten. Dasbedeutet: Formatgebundenes Einlesen ist erforderlich.

Die Datumswerte sind numerische Variablen. Dadurch kann mit ihnengerechnet werden.

8.1 Beispiele

Die Datumsangaben werden mittels spezieller Informate eingelesen:

11/05/96     DDMMYYw.     1328012-31-97     MMDDYYw.     1387912DEC1992    DDMMMYYw.    1204308:32        TIMEw.       3072008:32:12.20  TIMEw.       30732

8.2 Interne Behandlung

Datum = Anzahl der Tage vom 01.01.1960 bis zum angegebenen Tag●

Zeit =Anzahl der Sekunden seit Mitternacht●

Datum + Zeit = Anzahl der Sekunden seit Mitternacht des 01.01.1960●

8.3 Einige Informate

für das formatgebunde Einlesen dieser Nicht-Standard Daten:

DATEw. ddmmmyy / ddmmmyyyyMMDDYYw. mmddyy / mmddyyyyDDMMYYw. ddmmyy / ddmmyyyyTIMEw. hh:mm / hh:mm:ss.ssDATETIMEw. ddmmyy hh:mm, ddmmyy hh:mm:ss.ss

8.4 Formate

Zum Darstellen von Datumsangaben benötigt man entsprechende Formate. OhneFormate werden die rein numerischen Werte (also die Anzahl Tage bzw. AnzahlSekunden) angezeigt.

Die Formate heißen im Prinzip genauso wie die Informate. Über die Online Hilfeerhält man eine Liste aller vorhandenen Formate und Informate.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs8.html (1 von 3) [17.02.2000 09:26:30]

Page 23: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

8.5 Systemoption YEARCUTOFF=

wird zur Interpretation zweistelliger Jahreszahlen benötigt.●

gibt ein Jahrhundert vor●

Default-(Standard-) Wert: 1900, d.h. 1900-1999●

Beispiele: 01.01.97 ==> 01.01.1997, 01.01.10 ==> 01.01.1910●

Veränderung des Standardwertes über die Anweisung OPTIONS:options yearcutoff=Jahr;

Beispieloptions yearcutoff=1950;

01.01.97 ==> 01.01.199701.01.10 ==> 01.01.2010

8.6 Bemerkungen

Datumsangaben können von 1582 bis 20000 gehen.●

Schaltjahre werden berücksichtigt, Schaltsekunden jedoch nicht.●

Ebenso wird die Umstellung auf Sommer- bzw. Winterzeit nichtberücksichtigt.

8.7 Rechnen mit Datumsangaben

Da es sich bei Datums- und Zeitangaben um numerische Variablen handelt,kann mit ihnen gerechnet werden.

Beispiel:Tag der Operation, Tag der Entlassung ===> Anzahl der Tage imKrankenhaus: tage = d_entl - d_op +1;

8.8 SAS-Funktionen für Datums- und Zeitangaben

SAS stellt eine Reihe von Funktionen zur Bearbeitung von Datums- und Zeitangabenzur Verfügung:

MDY: fügt drei Variablen für Monat, Tag, Jahr zu einem Datum zusammen.

INTCK berechnet die Anzahl von Intervallen zwischen zwei Datumsangaben

8.9 Beispiel für Funktion INTCK

DATA _null_;     datum1=TODAY();     datum2='01JAN58'D;     x=datum1-datum2;     y=INTCK('YEAR',datum2,datum1);

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs8.html (2 von 3) [17.02.2000 09:26:30]

Page 24: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

     PUT 'Tage ' x;     PUT 'Jahre ' y;RUN;

Wenn Ihnen nicht alle Anweisungen in diesem Datenschritt klar sind (wovon ichausgehe, denn im Lernprogramm wurde z.B. PUT nicht besprochen), dannübertragen Sie diese bitte in Ihr Programm-Editor Fenster und spielen Sie mit ihnen(z.B. auskommentieren und schauen, was passiert bzw. was sich ändert).

8.10 Deutsche Datumsformate

Seit der Version 6.10 gibt es spezielle nationale Datums- und Zeitformate, die mittelsder Anweisung FORMAT verwendet werden können. Beispiele:

deudfwdx 1. Januar 1995deudfdd 01Jan95deudfwkx Sonntag, 1. Januar 1995deudfmy Jan95

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs8.html (3 von 3) [17.02.2000 09:26:30]

Page 25: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

9. Frei angeordnete Rohwerte -Listen- oder freie Eingabe

Frei angeordnete Rohwerte sind Rohwerte, die nicht in Spalten angeordnetsind.

Sie können in externen Files abgelegt sein oder nach der Anweisung LINES(CARDS) stehen.

Die Datenfelder sind durch Blanks oder ein anderes Zeichen getrennt.●

Die Eingabe erfolgt im Datenschritt mittels freier (oder Listen-) Eingabe.●

9.1 Beispiel 1

>----+----1----+----2--- Hans Müller HD 69117 27 Karin Sorg MA 68208 Karl Schön HD 69120 30

 INPUT vorname $ nachname $ ort $ plz $ alter;

>----+----1----+----2--- Hans*Müller*HD*69117*27 Karin*Sorg*MA*68208 Karl*Schön*HD*69120*30

Externer Rohwerte-File: INFILE fileref DLM="*";

Rohwerte nach CARDS oder LINES: INFILE CARDS DLM="*";

9.2 Standards der freien Eingabe

Felder durch ein Blank oder anderes Zeichen trennen●

Einlesen von links nach rechts●

Fehlende Werte durch . kennzeichnen●

Variablen werden mit Standardlänge 8 gelesen●

Keine Blanks in alphanumerischen Variablen●

Daten in Standardformat●

9.3 Fehlende Werte

müssen durch einen Punkt (.) gekennzeichnet werden. Andernfalls liest SAS falscheWerte ein, gegebenenfalls auch aus der nächsten Zeile. Beispiel:

Hans Müller HD 69117 27Karin Sorg . 68208 31     <====Karl Schön HD 69120 30

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs9.html (1 von 3) [17.02.2000 09:26:37]

Page 26: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

9.4 Fehlende Werte am Ende der Zeile

Fehlt ein Wert am Ende der Zeile, muß kein . eingetragen werden, wenn die OptionMISSOVER der Anweisung INFILE gesetzt wird. Sie verhindert das Weiterlesen inder nächsten Zeile. Beispiel:

INFILE CARDS MISSOVER;

Hans Müller HD 69117 27Karin Sorg MA 68208       <=====Karl Schön HD 69120 30

Kleiner Tip, damit Sie PAD und MISSOVER auseinander halten können: PADmacht nur beim spaltengebundenen Einlesen Sinn, während MISSOVER - wie inobigem Fall - nur beim freien (oder listegesteuerten) Einlesen verwendet wird.

9.5 Veränderung der Variablenlänge

Mit der Anweisung LENGTH kann die Standardlänge von Variablen vergrößertwerden. Beispiel:

LENGTH name $ 12;INPUT vorname $ name ...;

9.6 Textvariablen mit Leerzeichen

z.B. in Städtenamen: St. Ilgen, Bad Homburg

Abhilfe schafft ein & (ampersand) - Zeichen in der Anweisung INPUT:

INPUT Variable & Informat.;input ort & $12.;St. Ilgen 78Bad Wimpfen 45

Aber: Die Ortsangaben müssen durch zwei Leerzeichen von den anderen Wertengetrennt werden.

9.7 Unterschied zwischen freier und formatgebundenerEingabe

freie Eingabe: input ort & $18.;

   Mannheim  12   Bad Wimpfen  13   Tauberbischofsheim  14

formatgebundene Eingabe: input ort $18.;

   Mannheim            12   Bad Wimpfen         13   Tauberbischofsheim  14

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs9.html (2 von 3) [17.02.2000 09:26:37]

Page 27: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

9.8 Nicht-Standarddaten u. Zeichenketten, die länger als8 Zeichen sind

Als Beispiel für Nichtstandard-Daten dienen im folgenden Beispiel Datumsangaben.Die Nachnamen sind bis zu 17 Zeichen lang.

Umgehen kann man die Standardlänge 8 mit dem Zeichen : in der Anweisung INPUTINPUT Variable : Informat.;

DATA test;     INPUT datum : ddmmyy8. name : $17. gehalt;     LINES;01.02.97 Schwarz-Schilling 50000.0002.02.97 Rupp-Müller 100000.0003.02.97 Maier-Vorfelder 250000.00;

Der Doppelpunkt besagt, dass die Namen bis zu 17 Zeichen enthalten, aber nichtunbedingt so lang sein müssen (z.B. Rupp-Müller nur 11). Der daran anschliessendeWert wird listengesteuert, ohne besonderes Informat eingelesen.

Aber: Zeichenketten dürfen keine Leerzeichen enthalten. (Warum nicht? ProbierenSie aus, was passieren würde wenn ...)

9.9 Mischen der Eingabearten

Alle vorgestellten Eingabearten

freie Eingabe●

spaltengebundene Eingabe●

formatgebundene Eingabe●

können beliebig miteinander kombiniert werden:Input va $ 1-10 @13 vb ddmmyy8. @30 vc & $10. vd ve;

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs9.html (3 von 3) [17.02.2000 09:26:37]

Page 28: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

10. Weitere Arten vonRohwertdaten10.1 Mehrere Zeilen pro Beobachtung

00001 Hans Müller00002 Hauptstr. 3700003 69117 Heidelberg00004 Jutta Maier00005 Schulstr. 4500006 69227 Sandhausen

Zeilenpointer: # n absolut oder / relativ

10.2 Mehrere Beobachtungen pro Zeile: Sichwiederholende Datenblöcke

Jutta 8 Hans 9 Martin 10Otto 12 Hilde 8 Jens 6

Nachfolgende Zeilenhalter @@

10.3 Mehrere Beobachtungen pro Zeile: EinIdentifikationsfeld und die gleiche Anzahl sichwiederholender Felder

Hans 1 1 1Jutta 2 3 5Jens 4 3 2

Nachfolgender Zeilenhalter @, 2 INPUT-Anweisungen, DO-Schleife (AnweisungenDO und END) und Anweisung OUTPUT

Eine andere Anwendung von DO/END-Schleifen und OUTPUT zeigt folgendesBeispiel:

data eins; do i=1 to 10; x=i*2; y=i**2; z=i**0.5; output; end;run;

Probieren Sie aus, was passiert, wenn man diesen Datenschritt ausführt. Spielen Siemit den einzelnen Anweisungen, um sie besser kennenzulernen.

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs10.html (1 von 2) [17.02.2000 09:26:45]

Page 29: Einführung in SAS im Selbststudium - Unterlagen · €€ proc freq data=namen; €€€€€€€ options date;€€€€€€€€€€€€€ * (2); €€€€€€€

10.4 Mehrere Beobachtungen pro Zeile: EinIdentifikationsfeld und unterschiedlich viele sichwiederholende Felder

Hans 1 1 1 3Jutta 2 3Jens 4 3 2 4 3

Nachfolgender Zeilenhalter @, DO WHILE-Schleife, Anweisung OUTPUT,optional: Zählvariable  

Einführung in SAS im Selbststudium - Kursunterlagen

file:///F|/_SASCBT/kurs10.html (2 von 2) [17.02.2000 09:26:45]