Post on 16-Aug-2018
transcript
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
run;
Einführung in SAS im Selbststudium - Kursunterlagen
file:///F|/_SASCBT/kurs4.html (4 von 4) [17.02.2000 09:26:05]
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]
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]
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]
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]
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]
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]
|_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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]