Das Datenanalysesystem SAS Kursaufbau

Werbung
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Das Datenanalysesystem SAS
Einführung in die Programmierung
3-halbtägiger Blockkurs, WS 2008/2009
Dr. Carina Ortseifen, URZ Heidelberg
Kursaufbau
Mittwoch, 28.01. – Freitag, 30.01.2009
13:00 - 17:00
im R 118
C. Ortseifen
1
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Literatur
„
„
„
Folien und Aufgaben stehen im Internet zur
Verfügung (URZ-Homepage > Programme > Statistik
> SAS > Kursunterlagen zu SAS-Kursen).
SAS Online-Hilfe (Hilfe-Menü)
SAS Online-Doku im WWW
http://support.sas.com/documentation/
onlinedoc/index.html
SAS Language Reference
SAS Procedures Guide
SAS/STAT
Weitere Literatur
„
„
„
Das SAS-Anwenderhandbuch im Netz
www.urz.uni-heidelberg.de/statistik/sas-ah
Dort im Kapitel 5:
Carina Ortseifen: Der SAS-Kurs
Weitere Lehrbücher über die URZ-Homepage
www.urz.uni-heidelberg.de:
Programme > Statistik > SAS > Bücherliste >
Lehrbücher zu SAS
„
C. Ortseifen
Redscope.org, http://www.redscope.de
2
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Themen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
1.
2.
3.
4.
5.
6.
7.
8.
Voraussetzungen
„
„
„
C. Ortseifen
Gültige Benutzerkennung fürs URZ und
Besuch des Kurses
‚Das Datenanalysesystem SAS – Einführung
mit dem SAS Enterprise Guide‘
oder gleichwertige Kenntnisse
Teilnahmebescheinigung bei Anwesenheit
3
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Begriffe
„
„
„
„
„
SAS-Tabelle
Variable, Beobachtung, Wert
Variablentyp, Label (Etikett)
Format, Informat
Bibliothek
Anwendungsroutinen
„
„
„
Datenschritt
Prozedurschritt (Proc Means, Proc Sql)
Globale Anweisungen (Title, Footnote)
Themen
1.
2.
3.
4.
5.
6.
7.
8.
C. Ortseifen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
4
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
SAS Version 9
„
„
„
„
„
„
Installiert ist: SAS 9.1.3 SP4
Englisch und Deutsch
Programmierumgebung (Code-Fenster) mit
Windows-Elementen:
Menüleiste
Icons
Editor-, Log- und Outputfenster
Explorer und Resultfenster
Menüleiste
SASExplorer
Kommando
-zeile
Symbolleiste
(Tools)
Protokollfenster
(Log)
Editorfenster
(Code)
C. Ortseifen
Ausgabefenster
(Output)
5
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Arbeitsweise
„
„
„
SAS-Programme in den Editor laden
(oder neu schreiben),
ausführen und Ergebnisse betrachten
Programm ausführen über Menü (Run >
Submit), Icon
, Funktionstaste F3, RM
Submit All oder Kommando Submit
Hilfe zu einzelnen Prozeduren
Kommando help Prozedurname
Beispiel: help Print
Beispielprogramm
Ods RTF File="m:\class.rtf";
Title "Tabelle sashelp.class";
Proc Print Data=sashelp.class;
Run;
Proc Freq Data=sashelp.class;
Tables sex ;
Run;
Ods RTF Close;
C. Ortseifen
6
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Aufbau von SAS-Programmen
Ods RTF ...
„
Globale Anweisungen Title
„
Datenschritte
Data ... ;
Run;
„
Prozedurschritte
Proc Print ...
Proc Freq ...
Run;
SAS-Anweisungen
„
„
Daten- und Prozedurschritte bestehen aus
Anweisungen.
Anweisungen werden durch ein Schlüsselwort eingeleitet (z.B. Data, Proc, Run, Title)
und enden mit einem Semikolon (;).
Proc Freq .... ;
„
Optionen wählen Aktionen aus oder ändern
Voreinstellungen ab.
Proc Print Data=sasuser.adressen;
C. Ortseifen
7
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Meldungen im Protokollfenster
Note
Hinweis zur Abfolge des Programms (Dauer,
welche Datei(en) wurde(n) angelegt/gelöscht)
Warning
SAS ist auf einen behebbaren Fehler gestoßen.
Der Daten- oder Prozedurschritt wurde
vollständig ausgeführt.
Error
Der Fehler konnte nicht behoben werden. Der
Programmschritt wurde abgebrochen.
Themen
1.
2.
3.
4.
5.
6.
7.
8.
C. Ortseifen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
8
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
SAS-Bibliotheken
„
„
„
„
sind (Unter-) Ordner, die SAS-Tabellen und
SAS-Kataloge enthalten.
Um nicht immer den gesamten Pfad schreiben
zu müssen, vergibt SAS Kürzel für die Ordner:
Bibliotheksname (oder libref).
Definition über die Libname-Anweisung
SAS/EG vergibt eigene Bibliotheksnamen.
(Anzeige zur Ziehen der Tabelle ins Code-F.)
Bibliotheken verwalten (Libname)
„
„
„
C. Ortseifen
über den SAS Explorer
Doppelklick auf Explorer zeigt die aktuellen
Bibliotheken an.
Zurück mit
Rechte Maustaste (RM) auf einer Bibliothek:
Anzeige der Eigenschaften, Löschen u. a. m.
9
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Bibliotheken
„
Work
Sasuser
Sashelp
Maps
„
Local (SAS/Enterprise Guide)
„
„
„
temporärer Arbeitsbereich
Arbeitsbereich des Anwenders
SAS-Arbeitsbereich
Bibliothek mit Landkartendaten
Eigene Bibliotheken definieren
Anweisung Libname. Beispiel:
Libname urz 'O:\Kurs\sas\daten';
Schlüsselwort
Libname
Bibliotheksname
Pfadangabe
Allgemeine Syntax:
Libname bib engine 'Pfad';
Engine (Dateiform,
z.B. SPSS, Excel)
C. Ortseifen
10
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Zugriff auf Excel-Tabellen
Libname schule
'O:\Kurs\sas\daten\schule.xls';
Besonderheiten:
„ Als Pfad steht eine komplette Datei.
„ Für jedes Arbeitsblatt und für jeden
Namensbereich wird eine SAS-Tabelle
angelegt.
„ Excel 2007-Tabellen können nicht gelesen
werden.
SAS Explorer
„
„
„
„
C. Ortseifen
Ähnlich wie Windows-Explorer viele
Funktionalitäten auf rechter Maustaste (RM)
Anzeige und Bearbeiten von Tabellen,
Bibliotheken und Katalogen
Erzeugen neuer Bibliotheken, Filerefs,
Tabellen und Katalogen
Kopieren und Export von Dateien
11
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Tabelleninformationen
Tabelle anklicken, RM > Properties
liefert:
„ Allgemeine Optionen
„ Details
„ Indizes
„ Spalten (= Variablenfenster)
Eintragungen, die sich ändern lassen, haben
Popup-Menü.
Variablenfenster
(auch über RM > View columns)
„
„
Anzeige der Variablen samt Eigenschaften
Name, Etikett, Ausgabe- und Einleseformat
können über das RM-Menü Modify geändert
werden (Nicht: Variablentyp und Länge!)
C. Ortseifen
12
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Tabellenansicht und zurück
„
„
„
Doppelklick auf die Tabelle öffnet sie mit dem
Befehl Viewtable
Tabelle umbenennen: Tabelle markieren,
RM > Rename
Mit View > Up one level kehrt man eine
Ebene im Explorer zurück
(oder dem Icon
).
Themen
1.
2.
3.
4.
5.
6.
7.
8.
C. Ortseifen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
13
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Prozedur Print
„
„
Darstellen der Datenwerte einer SAS-Tabelle im
Ausgabefenster
Der einfachste Aufruf
Proc Print Data=sasuser.adressen;
Run;
gibt die SAS-Tabelle sasuser.adressen
vollständig mit allen Variablen und
Beobachtungen aus.
Einschränkungen / Änderungen
„
„
„
„
C. Ortseifen
Nur bestimmte Variablen
Î Anweisung Var
Nur bestimmte Beobachtungen / Teilmenge
Î Dateioptionen Obs= und Firstobs=
Î Anweisung Where
Beobachtungen in einer anderen Reihenfolge
Î Prozedur Sort
Listen getrennt nach bestimmten Gruppen
Î Anweisung By
14
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Anweisung Var
„
Sollen nicht alle Variablen ausgegeben oder
die Variablen in anderer Reihenfolge
dargestellt werden, verwendet man die
Anweisung Var.
Proc Print Data=sasuser.adressen;
Var name alter;
Run;
Variablenbereiche
„
Benennung einzelner Variablen:
Var name alter;
mit geänderter Reihenfolge:
Var wohnort alter name;
„
Gleicher Präfix:
„
Gleicher Präfix und numerische Endung:
Var tag: ;
Var tag1-tag5;
„
Variablenbereiche innerhalb der Datei:
Var name--alter;
C. Ortseifen
15
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Variablen ausschließen - Drop=
„
Sollen alle Variablen bis auf wenige
dargestellt werden, verwendet man die
Dateioption Drop=:
Proc Print
Data=sasuser.adressen(Drop=ort);
Run;
„
Die Dateioptionen folgen dem Tabellennamen
in Klammern: (Drop=Variable|Variablenliste)
Teilmengen
„
„
„
„
Normalerweise werden Prozedurschritte für
alle Beobachtungen ausgeführt.
Bei großen Tabellen testet man den
Prozedurschritt zunächst mit wenigen Fällen.
Manchmal teilt man die Beobachtungen auf
und führt Prozedurschritte nur für
ausgewählte Beobachtungen aus.
Einsatz der
„
„
C. Ortseifen
Dateioptionen Obs= und Firstobs=
Anweisung Where!
16
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Firstobs=, Obs=
„
Die Dateioptionen folgen in Klammern dem
Tabellennamen:
Proc Print
Data=sasuser.adressen(Firstobs=11 Obs=15);
Run;
„
„
„
Firstobs= Nummer der ersten Beobachtung, die
verarbeitet wird
Obs= Nummer der letzten Beobachtung, die
verarbeitet wird
Firstobs <= Obs
Where-Anweisung
„
„
„
C. Ortseifen
Beschränkung auf Untergruppen durch
Formulierung einer logischen Bedingung, die
von den Beobachtungen erfüllt werden muss.
Proc Print Data=sasuser.adressen;
Where alter>15;
Run;
Where ist eine lokale Anweisung, die für fast
jede Prozedur verwendet werden kann.
17
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Logische Bedingungen
„
Numerische Variablen
Where wert=1; Where wert>1;
„
Textvariablen
Where id=‘DORLE‘;
Where ort in('HD','MA','KA');
„
Vergleichsoperatoren
= eq gleich
> gt größer
>= ge größer oder gleich
in in der Liste enthalten
^= ne ungleich
< lt kleiner
<= le kleiner
oder gleich
Kombinierte Bedingungen
„
„
„
C. Ortseifen
Kombination
Where sex=1 and alter>20;
Where alter<20 or wohnort="Heidelberg";
Logische Operatoren
& and
sowohl als auch
| or
mindestens eins von beiden
^ not
nicht (oder auch ~)
Klammern können die Lesbarkeit erhöhen
Where (sport>2 or sport=.) and alter>20;
18
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Weitere Operatoren
Between-And
Where x between 1 and 5;
Contains
Where a contains 'Dr.';
Is null|Is missing
Like
Genaue Hinweise und Beispiele im
SAS-Anwenderhandbuch im Netz
unter dem Stichwort Selektion
Andere Reihenfolge der Fälle
„
„
1.
2.
C. Ortseifen
Um die Beobachtungen (=Zeilen) der SASTabelle in einer anderen Reihenfolge
darzustellen, muß die Tabelle zunächst mit
der Prozedur Sort sortiert werden.
Anschließend kann die sortierte Tabelle mit
der Prozedur Print im Ausgabefenster
angezeigt werden.
Proc Sort ... ; Run;
Proc Print ...; Run;
19
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Prozedur Sort
„
Sortieren erfolgt nach bestimmten Kriterien,
die mit der BY-Anweisung formuliert werden.
Proc Sort Data=sasuser.adressen;
By alter;
Run;
sortiert die Beobachtungen nach Alter
(in aufsteigender Reihenfolge)
„
Prozedur erzeugt keine Ausgabe.
Mehrfache Sortierkriterien
„
„
Beispiel: Telefonbuch
Innerhalb einer By-Gruppe wird weiter nach
dem nächsten Kriterium sortiert:
Proc Sort Data=sasuser.adressen;
By wohnort alter name;
Run;
„
C. Ortseifen
Die Reihenfolge der Variablen entscheidet
über die Anordnung der Beobachtungen.
20
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Sortierung in neuer Tabelle
„
Soll eine SAS-Tabelle zwar sortiert, das Resultat
aber in einer neuen Tabelle gespeichert werden,
um die Ausgangstabelle nicht zu verändern,
setzt man die Option Out= ein.
Proc Sort Data=sasuser.adressen
Out=kurs.sp;
By alter;
Run;
Getrennte Liste – Anweisung By
„
„
„
„
C. Ortseifen
Mit einem Prozeduraufruf erhält man
getrennte Listen für Untergruppen.
Die Anweisung By benennt die Variable(n),
die die Untergruppen definiert.
Voraussetzung: SAS-Tabelle ist nach der oder
den BY-Variablen sortiert.
Proc Print Data=sasuser.adressen;
Var name alter;
By sport;
Run;
21
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Häufiger Fehler mit By
ERROR: Data Set ...... is not sorted in
ascending sequence.
The current by-group has Min. = ... and
the next by-group has Min. = ...
Abhilfe:
Einen Prozedur SORT-Schritt vorneweg ausführen.
Proc Sort Data=sasuser.adressen;
By sport;
Proc Print Data=sasuser.adressen;
...
Beschriftungen
„
„
„
„
C. Ortseifen
Jede Seite im Ausgabefenster kann Titel- und
Fußzeilen enthalten.
Standardtitel: The SAS System
Eigene Titel- und Fußzeilen machen die
Ergebnisdarstellungen für Außenstehende
verständlicher.
TITLE und FOOTNOTE sind globale
Anweisungen, d.h. sie werden außerhalb von
Daten- und Prozedurschritten definiert.
22
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiele
Title1 ’Experiment von Fisher’;
Title2 ’Vergleich von 3 Irisarten';
Footnote ’Umfang: je 50 Blüten’;
Proc Print Data=kurs.iris;
Run;
Hinweise
„
„
„
Es können bis zu 10 Titel- und Fußzeilen
definiert werden.
Als globale Anweisungen gelten sie so lange,
bis sie geändert oder zurückgesetzt werden.
Zurücksetzung:
Title ;
Footnote ;
C. Ortseifen
23
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Globale Einstellungen - Optionen
„
Beim Start der SAS-Sitzung belegt das SASSystem viele Schalter vor durch
„
„
„
Konfigurationsfile Sasv9.cfg
Anweisungen, die zu Beginn der SAS-Sitzung
ausgeführt werden (Datei Autoexec.sas)
Nachträgliche Änderung von Einstellungen
durch den Benutzer ist möglich durch
„
„
Titel- und Fußzeilen
Optionen (z.B. Seitennumerierung)
Einige globale Einstellungen
C. Ortseifen
„
Ausgabe des Datums
Date
Nodate
„
Anzeige der Seitennummern
Number /
Nonumber
„
Verändern der Seitennummer
Pageno=n
24
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Änderung der Einstellungen
auf zwei Arten
„
„
Options-Fenster: Tools > Options > System ..
Anweisung Options
Options Nodate Nonumber;
Options Nodate Pageno=5;
Options ist eine globale Anweisung.
SAS System Options
„
„
C. Ortseifen
Kommando Option
Menü Tools > Options > System …
25
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Spezialitäten
Zum Schluß noch zwei Spezialitäten der
Prozedur Print:
„
„
Darstellung der Labels
Berechnung von Spaltensummen
Die Prozedur Print und Labels
„
Die Prozedur Print zeigt standardmäßig keine
Labels an.
Zur Erinnerung:
„
Labels sieht/definiert man mit der Anweisung
Label oder im Variablenfenster.
Erst durch Hinzunahme der Option Label
werden sie angezeigt:
Proc Print Data=sasuser.adressen
Label;
Run;
C. Ortseifen
26
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Spaltensummen mit Sum
„
„
Werte von numerischen Variablen können
mit der Anweisung Sum spaltenweise
summiert werden.
Proc Print Data=sasuser.adressen;
Sum alter;
Run;
Zusammenfassung der Syntax
Proc Sort Data=SAS-Tabelle
<out=SAS-Tabelle>;
By Variable|Variablenliste;
Proc Print Data=SAS-Tabelle <label>;
<Var Variable|Variablenliste;>
<sum Variable|Variablenliste;>
<Where Logische Bedingung;>
title ...;
footnote ...;
(Drop=...)
options ...;
C. Ortseifen
27
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Literatur
„
Prozeduren Print und Sort sind Bestandteil
von SAS Base:
SAS Procedures Guide
„
Globale Anweisungen und Dateioptionen
SAS Language Guide
Aufgabe
„
C. Ortseifen
Erzeugen Sie eine Liste der SAS-Tabelle
fitness aus dem Ordner O:\kurs\sas\daten!
28
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Themen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
1.
2.
3.
4.
5.
6.
7.
8.
Prozedur Means
„
„
„
C. Ortseifen
Means (neben Freq und Univariate) ist eine
grundlegende Prozedur für die deskriptive
Statistik.
Sie berechnet wichtige Kennwerte
(=statistische Maßzahlen), die in direktem
Zusammenhang mit dem Mittelwert stehen,
für quantitative Merkmale.
Z.B. Mittelwert, Median, Maximum, Minimum,
Standardabweichung, Konfidenzintervalle ...
29
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Einfachster Aufruf
Proc Means Data=urz.iris;
Run;
berechnet für alle numerischen Variablen
(auch für blume !) die Kennwerte
N
Anzahl der nichtfehlenden Werte
Mean
Mittelwert
Std Dev Standardabweichung
Min/Max kleinster/größter Wert
und stellt diese im Ausgabefenster in Form
einer Tabelle dar.
Anweisung Var
„
„
beschränkt die Liste der Variablen, für die
Kennwerte berechnet werden.
Proc Means Data=urz.iris;
Var sl pl sw pw;
Run;
Alternative Lösung:
„
C. Ortseifen
Proc Means Data=kurs.iris(Drop=blume);
Run;
30
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Anweisung Class
„
Berechnung der Kennwerte getrennt für die
durch die Class-Variablen definierten Gruppen
Proc Means Data=urz.iris;
Var sl;
Class blume;
Run;
„
Tabelle braucht nicht sortiert (nach blume)
vorliegen.
Anweisung Output
„
„
„
C. Ortseifen
Übertragung der Kennwerte in eine neue
SAS-Tabelle
Proc Means Data=urz.iris;
Var sl;
Output out=iris_sl;
Run;
Die Kennwerte werden im Ausgabefenster
angezeigt, gleichzeitig wird die SAS-Tabelle
iris_sl angelegt.
31
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Mit Output erzeugte Tabelle
iris_sl hat
- 5 Beobachtungen für die fünf Kennwerte (N,
Mean, Std, Min, Max) und
- 4 Variablen _Type_, _Freq_, _Stat_ und die
eigentliche Variable sl, die die Kennwerte
enthält.
Option Noprint
„
„
„
C. Ortseifen
Die Option Noprint unterdrückt die Darstellung der Kennwerte im Ausgabefenster.
Proc Means Data=urz.iris Noprint;
Var sl;
Output out=iris_sl;
Run;
Das Ergebnis ist die neue SAS-Tabelle iris_sl.
32
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Prozedur Ttest
„
Vergleich von zwei Gruppen hinsichtlich deren
„
„
Erwartungswerte
t-Test
für gleiche und ungleiche Varianzen
für unabhängige u. abhängige Gruppen
Varianzen
F-Test
Zur Statistik
„
Wie lautet die Null- und wie die
Alternativhypothese für den t-Test?
Wie wird der Test durchgeführt?
Und lautet die Testentscheidung?
„
Und jetzt das ganze für den F-Test!
„
„
C. Ortseifen
33
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiel: Unabhängiger t-Test
„
Teststatistik T
T =
wo
s 2p =
| x1 − x 2 |
~ t n1 + n 2 − 2
1
1
+
sp
n1
n2
( n 1 − 1 ) s 12 + ( n 2 − 1 ) s 22
n1 + n 2 − 2
xi Mittelwerte, si Standardabweichungen, ni Fälle
„
Testentscheidung:
Wenn |T|>tn1+n2-2,1-α/2 ist, wird H0 verworfen.
Einfachster Aufruf
Proc Ttest Data=urz.blutbild;
Class pille;
Var calcium;
Run;
C. Ortseifen
34
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Kennwerte
The TTEST Procedure
Statistics
Variable
PILLE
N
CALCIUM
CALCIUM
CALCIUM
Diff (1-2)
1
2
Lower CL
Mean
Mean
Upper CL
Mean
Lower CL
Std Dev
Std Dev
Upper CL
Std Dev
Std Err
98.818
98.077
-0.681
99.878
99.098
0.78
100.94
100.12
2.2407
4.4124
4.3045
4.5264
5.0588
4.9282
4.9932
5.929
5.7649
5.5683
0.5332
0.5138
0.7403
90
92
t-Test mit Freiheitsgrad, Teststatistik,
Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
T-Tests
Variable
Method
Variances
CALCIUM
CALCIUM
Pooled
Satterthwaite
Equal
Unequal
F-Test
DF
t Value
Pr > |t|
180
180
1.05
1.05
0.2935
0.2936
Equality of Variances
Variable
Method
CALCIUM
Folded F
Num DF
Den DF
F Value
Pr > F
89
91
1.05
0.8039
Interpretation t-Test
Was sagt Pr > |t| 0.2935 aus?
Wenn Pr>|t| kleiner gleich dem vorgegebenen
Signifikanzniveau α ist, kann die Nullhypothese
H0 abgelehnt werden.
Wenn Pr>|t| ≤ α, dann H0 ablehnen.
C. Ortseifen
35
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Abhängiger t-Test
Title 'Abhängiger Vergleich (SAS/Example 77.3)';
Data blutdruck; I
Input SBD_vor SBD_nach @@;
Datalines;
120 128 124 131 130 131 118 127 140 132
128 125 140 141 135 137 126 118 130 132
126 129 127 135
Run;
Proc Ttest Data=blutdruck;
Paired sbd_vor*sbd_nach;
Run;
Abhängiger Vergleich (SAS/Example 77.3)
Kennwerte
The TTEST Procedure
Statistics
Difference
SBD_vor - SBD_nach
N
Lower CL
Mean
Mean
Upper CL
Mean
Lower CL
Std Dev
Std Dev
Upper CL
Std Dev
Std Err
12
-5.536
-1.833
1.8698
4.1288
5.8284
9.8958
1.6825
t-Test mit Freiheitsgrad, Teststatistik,
Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
T-Tests
C. Ortseifen
Difference
DF
t Value
Pr > |t|
SBD_vor - SBD_nach
11
-1.09
0.2992
36
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Zusammenfassung der Syntax
Proc Means Data=SAS-Tabelle <Noprint>;
<Var Variable|Variablenliste;>
<Output out=SAS-Tabelle;>
<Class Variable|Variablenliste;>
Proc Ttest Data=SAS-Tabelle;
Class Variable|Variablenliste;
<Var Variable|Variablenliste;>
<Paired Variable1*Variable2;>
<Where Logische Bedingung;>
<By Variable|Variablenliste;>
Themen
1.
2.
3.
4.
5.
6.
7.
8.
C. Ortseifen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
37
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Ausgabe von Prozeduren
„
„
„
Standardmäßig: Ausgabefenster
Aber:
Für Publikationen benötigt man eher
Ausgaben im Format Word, PDF oder HTML.
Da bedient man sich dem ODS
ODS = Output Delivery System
ODS RTF
„
SAS unterstützt das Rich Text Format (RTF)
für Microsoft Word:
ODS Rtf File="liste.rtf";
Proc Print Data=urz.iris;
Run;
Ods Rtf Close;
C. Ortseifen
38
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
ODS HTML
„
Für Publikationen im Internet/Intranet:
HTML-Ausgaben
ODS Html File="liste.html";
Proc Print Data=urz.iris;
Run;
Ods Html Close;
Standardausgabe: Listing
ODS Listing;
Proc Print Data=urz.iris;
Run;
Ods Listing Close;
C. Ortseifen
39
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Themen
1.
2.
3.
4.
5.
6.
7.
8.
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
Erzeugen von SAS-Tabellen:
Wie und wo liegen die Daten vor?
SAS Tabelle
„
EG: Datei > Öffnen
„
Datenschritt mit Set
„
Prozedur SQL
Anmerkung:
EG: Enterprise Guide
Nicht EG: nur mit ‚normalem‘
SAS ausführbar
ohne: im Code-Fenster vom
EG
C. Ortseifen
Fremdformat von anderer
Anwendung (Excel)
„
Libname-Engine
„
EG: Datei > Öffnen
„
EG: Datei > Daten importieren
„
Prozedur Import
ASCII-Datei (Rohwerte)
„
EG: Datei > Daten importieren
„
Datenschritt mit Infile
Auf dem Papier
„
Datenschritt mit Datalines
(oder Cards)
„
Nicht EG: Prozedur Fsedit mit
Option New=
40
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Programm1.sas
Data sasuser.adressen;
Input name $ vorname $ ort $ alter;
Datalines;
Meier Hans Walldorf 25
Schulze Karin Mannheim 27
Müller Horst Nußloch 31
Run;
Was macht dieses Programm, wenn man es ausführt?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
Programm2.sas
Data sasuser.adneu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
Was macht dieses Programm?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
C. Ortseifen
41
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Aufgabe des Datenschritts
… ist die Erzeugung von SAS-Tabellen
1.
Entweder aus Rohwerten/ASCII-Dateien:
Input + Datalines + Datenwerte
„
Input + Cards + Datenwerte
„
Infile + Input
(Datalines und Cards sind synonyme
Anweisungen.) oder
„
2.
aus vorhandenen SAS-Tabellen: Set
Die Anweisung Data
„
„
„
C. Ortseifen
ist die erste Anweisung im Datenschritt.
Dem Schlüsselwort Data folgt der Name der
zukünftigen SAS-Tabelle.
Data sasuser.adressen;
Data sasuser.adneu;
Data work.firma;
42
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Ende des Datenschritts
Der Datenschritt ist beendet, wenn
„ ein neuer Daten- oder Prozedurschritt beginnt
d.h. Data- oder Proc-Anweisung,
„ eine Run-Anweisung auftritt oder
„ nach den Datenzeilen nach einer Datalinesoder Cards-Anweisung
Anweisungen und Zuweisungen
„
„
„
Jede Anweisung beginnt mit einem
Schlüsselwort (Data, Set, Run) und endet mit
einem Semikolon (;).
Bei einer Zuweisung steht links vom
Gleichheitszeichen der Name der neuen
Variablen, rechts die Rechenvorschrift.
Zuweisungen im SAS EG mit
Daten > Filter und Abfrage … > Berechnete
Spalten > Neu
C. Ortseifen
43
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Anweisung Set
„
„
„
bezeichnet die SAS-Tabelle, die in die neue
kopiert wird.
Diese Tabelle muss existieren.
Die Tabelle in der Data-Anweisung kann mit
der in der Set-Anweisung übereinstimmen:
Data sasuser.adneu;
Set sasuser.adneu;
alter_klasse=alter/10;
Run;
Programm2 - Die Zuweisung
Data sasuser.adneu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
Es werden zwei neue Variablen, gruppe und land,
gebildet durch Zuweisung eines konstanten Wertes für alle Beobachtungen in der SAS-Tabelle.
C. Ortseifen
44
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Programm2 - Bedingte Zuweisung
Data sasuser.adneu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
Der Wert der Variable typ wird in Abhängigkeit von
einer Bedingung bestimmt (hier abhängig vom Alter).
Hinweis
„
„
Die Anweisungen im Datenschritt werden von
oben nach unten für jede einzelne Beobachtung der SAS-Tabelle – ebenfalls sequentiell
von oben nach unten – abgearbeitet.
Vorsicht! Was passiert hier:
Data sasuser.adneu;
Set sasuser.adressen;
If alter>=30 Then alter=2;
If alter<30 Then alter=1;
Run;
C. Ortseifen
45
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Programm3
Data sasuser.adneu;
Set sasuser.adneu;
If typ=‘senior‘ Then Delete;
Run;
Welche SAS-Tabelle wird erzeugt?
Wird sie aus Rohwerten oder einer SAS-Tabelle
erzeugt?
Wie heißt diese?
Was macht die Anweisung Delete?
Zuweisung von Konstanten
„
„
C. Ortseifen
Numerische Variablen
Variable=Wert;
x=3;
y=0.2;
z=.;
Text- (Alphanumerische, Character-)
Variablen
Variable='Zeichenkette'; oder
Variable="Zeichenkette";
status='ohne Befund';
sex="männlich";
wort=''; wort=' ';
46
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Arithmetische Operatoren
„
Addition +
„
Subtraktion -
„
Multiplikation *
„
Division /
„
Potenzierung
„
Es gilt dabei: Punkt- vor Strichrechnung.
a=b+c; a=b-10; a=10+20;
a=b-c; a=b-10; a=20-10;
a=b*c; a=b*10; a=10*20;
a=b/c; a=b/2;
a=b**c;
**
a=5/2;
a=b**2; a=3**2;
SAS-Funktionen
Funktionsname(Argument<,Argument2<,..>>)
„
Arithmetische Funktionen
Sqrt(x)
Exp(x)
„
y=Sqrt(x); y=Sqrt(2);
y=Exp(x); y=Exp(0);
Quantilfunktionen, z.B. t-Verteilung
Tinv(alf,df)
C. Ortseifen
x=Tinv(0.05,10);
47
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
SAS-Funktionen (2)
„
Wahrscheinlichkeitsfunktionen, z.B. tVerteilung
Probt(x,df,<nc>)
„
p=Probt(1.96,10);
Stichprobenfunktionen
Mean(x,y)
Std(x,y,z)
y=Mean(a,b,c);
y=Std(1,2,3);
Funktionen
„
Verwendung der Funktionen ausschließlich im
Datenschritt (oder Prozedur SQL):
Data work.irismein;
Set urz.iris;
sum1=sl+sw+pl+pw;
* per Formel ;
sum2=Sum(sl,sw,pl,pw); * mit Funktion;
Run;
C. Ortseifen
48
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Vorteil der Funktionen
„
„
meistens schneller im Vergleich zur ‚Formel‘Methode, zum anderen können sie adäquat
mit fehlenden Werten umgehen
(vgl. Aufgabe 10).
Vollständige Liste der verfügbaren Funktionen
„
„
SAS Language Guide oder
Hilfe > SAS Hilfe und Dokumentation > SAS
Produkte > Base SAS > SAS Language
Dictionary > Dictionary of Language Elements
> Functions and CALL Routines
Eine Übung für alle
Data eins;
a=1;
b=2;
c=3;
Run;
Data zwei;
Set eins;
a=4;
Run;
Data drei;
a=1;
a=2;
a=3;
Run;
Data vier;
Run;
Fragen
1. Welche SAS-Tabellen werden erzeugt?
2. Wie viele Variablen haben diese?
3. Wie viele Beobachtungen?
4. Welche Werte?
C. Ortseifen
49
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Rohwert-Typen
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
Programm1.sas
Data sasuser.adressen;
Input name $ vorname $ ort $ alter;
Datalines;
Meier Hans Walldorf 25
Schulze Karin Mannheim 27
Müller Horst Nußloch 31
Run;
C. Ortseifen
50
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Zum Programm1.sas
„
„
„
„
„
Datenwerte stehen in einer Liste durch
Leerzeichen getrennt. => Listengesteuert
Die Anweisung Input definiert die vier
Variablen: Name, Vorname usw..
Alphanumerische Variablen werden durch $
(nach dem Variablennamen) gekennzeichnet.
Nach der Anweisung Datalines (inkl. ;) folgen
die Datenwerte.
Run; beendet den Datenschritt.
Hinweise zur „Liste“
„
„
„
C. Ortseifen
Zwischen zwei Datenwerten muss
(mindestens) ein Leerzeichen stehen.
Werte von Textvariablen (z.B. die Namen)
dürfen nicht länger als 8 Zeichen sein und
kein Leerzeichen enthalten.
Fehlende Werte müssen durch einen Punkt
gekennzeichnet werden.
51
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Anweisung Datalines (Cards)
„
„
„
„
ist eine Anweisung des Datenschritts
teilt dem SAS-System mit, dass im Anschluss
die Datenwerte folgen
ist die letzte Anweisung des Datenschritts
Die Datenwerte werden durch ein Semikolon
beendet, das in einer neuen Zeile stehen muss.
Rohwert-Typen
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
C. Ortseifen
25
31
19
24
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
52
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Spaltengesteuertes Einlesen
„
ist angezeigt, wenn Textwerte Leerzeichen
enthalten:
Data sasuser.adressen;
Input name $ 1-10 vorname $ 11-16
wohnort $ 17-26 alter 28-29;
Datalines;
Meier
Hans St. Leon
25
van SchulzKarin Heidelberg 27
Karl
Helmut
51
Run;
Hinweise zu „Spalten“
„
„
„
„
C. Ortseifen
Die Position der Variablen wird als Bereich
von-bis angegeben.
Keine Leerzeichen zwischen Werten
notwendig
Die Datenwerte müssen exakt in Spalten
positioniert sein.
Die Spalten müssen so breit angelegt sein,
daß der längste Wert Platz hat.
53
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Rohwert-Typen
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
Formatgesteuertes Einlesen
ist angezeigt bei Textwerten länger als 8 Zeichen
oder anderen Nicht-Standardwerten, wie
Datumsangaben und Zahlen mit Kommas:
Format
Data sasuser.firma;
Input name :$50. gebdatum Ddmmyy10.
zahl1 Comma10.2 zahl2 Commax10.2;
Datalines;
Meier 01.01.1960 10,000.00 12,45
Leuthäuser-Schnarrenberger . 1.00 13,50
Karl 29.02.2000 1,000,000 100,50
Run;
C. Ortseifen
54
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Einleseformate
:$50. Textwerte bis zur Länge 50
$
Text
50
50 Zeichen
.
Kennzeichnet (Einlese-) Formate
:
bis zu … Zeichen (statt: genau …)
Ddmmyy10.
Datumsangabe der Form
tag monat jahr, 10 Zeichen
Comma10.2
Zahl mit Dezimalpunkt und
Kommata zur Abtrennung von
Tausenderstellen
Werte in externen Dateien
„
Anstelle der Anweisung Datalines verwendet
man dann INFILE vor Input
Data sasuser.klasse;
Infile 'd:\klasse.dat';
Input name $ alter;
Run;
„
C. Ortseifen
Direkt von einem Messgerät, mit einem
externem Editor erfasst oder z.B. MSWord
(Umwandlung in Ascii (als 'nur Text') nicht
vergessen!)
55
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Rohwert-Typen
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Hans
Jutta
Uwe
Jens
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
PAD und MISSOVER
„
sind Optionen der Anweisung INFILE
Infile 'd:\text.dat‘ Pad;
Infile 'd:\text.dat‘ Missover;
„
Allgemein
Infile ‘Pfad\Datei‘ <Missover> <Pad>;
„
C. Ortseifen
Beispiele im SAS-Kurs S. 71 ff.
56
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Themen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
1.
2.
3.
4.
5.
6.
7.
8.
Verknüpfen von SAS-Tabellen
„
„
„
C. Ortseifen
Ausgangszustand:
Es existieren zwei SAS-Tabellen A und B.
Ziel:
Verknüpfung dieser beiden Tabellen zu einer
Tabelle C.
Denkbar sind dabei zwei Möglichkeiten:
1.
Set
2.
Merge
57
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Set und Merge
sind zwei Anweisungen des Datenschritts.
Data ...;
Set ...;
...;
Run;
Data ...;
Merge ...;
...;
Run;
Verknüpfen mit Set
„
„
C. Ortseifen
Zwei Dateien haben die gleiche Variablenstruktur, enthalten aber unterschiedliche
Beobachtungen.
Mit der Anweisung Set verbindet man sie zu
einer neuen Datei, deren Variablenstruktur
gleich bleibt, aber deren Beobachtungszahl
sich aus der Addition der Beobachtungen der
Ausgangsdateien ergibt.
58
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiel für Set
Data alt1;
Input x y z;
Datalines;
1 2 3
4 5 6
7 8 9
;
Data alt2;
Input x y z;
Datalines;
10 11 12
13 14 15
;
Data neu;
Set alt1 alt2;
Run;
Verknüpfen mit Merge
„
„
C. Ortseifen
Zwei Dateien enthalten unterschiedliche
Merkmale für gleiche Beobachtungen.
Mit der Anweisung Merge verbindet man sie
zu einer neuen Datei, deren
Beobachtungszahl gleich bleibt, aber deren
Variablenstruktur sich aus den Variablen der
beiden Ausgangsdateien zusammensetzt.
59
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiel für Merge
Data alt1;
Input x;
Datalines;
10
11
12
;
Data alt2;
Input y;
Datalines;
100
200
300
;
Data neu;
Merge alt1 alt2;
Run;
Mögliche Probleme
Merge: In einer Datei fehlen Beobachtungen.
Data alt1;
Input x;
Datalines;
10
11
12
;
C. Ortseifen
Data alt2;
Input y;
Datalines;
100
300
;
60
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Merge mit By
Data alt1;
Input id x;
Datalines;
1 10
2 11
3 12
;
Data alt2;
Input id y;
Datalines;
1 100
3 300
;
Data neu;
Merge alt1 alt2;
By id;
Run;
Mögliche Probleme (2)
Set: In einer Datei fehlen Variablen.
Data alt1;
Input x y z;
Datalines;
1 2 3
4 5 6
7 8 9
;
Data neu;
Set alt1 alt2;
Run;
C. Ortseifen
Data alt2;
Input x y;
Datalines;
10 11
13 14
;
61
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Mögliche Probleme (3)
Variablen sind unterschiedlich benannt
oder
unter dem gleichen Variablennamen sind
unterschiedliche Merkmale abgelegt:
Î Anweisung Rename
Î Dateioption Rename=
Î Im SAS Explorer: RM View Columns und
dann Doppelklick
Mögliche Probleme (4)
Variablen sind unterschiedlich kodiert
(d.h. in einer Datei numerisch, in der anderen
als Textvariable):
Î Funktionen Input und Put zur
Umwandlung von numerisch in Text
oder umgekehrt
C. Ortseifen
62
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiel für Funktion Input
Data alt1;
Input num $ @@;
Datalines;
1 2 3 4 5 6
;
Data alt1;
Set alt1;
n=Input(num,3.0);
Drop num;
Rename n=num;
Run;
Mögliche Probleme (5)
Mindestens eine der Dateien ist sehr groß.
Dann besser anstelle eines Datenschritts:
Proc Datasets
Eine Anleitung dazu finden Sie auf der Seite mit
den Kursunterlagen.
C. Ortseifen
63
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Wiederholung: Wie …
…
…
…
…
…
…
…
werden SAS-Tabellen neu angelegt?
vorhandene geöffnet?
berechnet man neue Variable aus alten?
löscht man Variablen/Fälle?
ändert man die Eigenschaften von Variablen?
erzeugt man ein Word-Dokument mit SAS?
ermittelt man Mittelwerte?
…
Themen
1.
2.
3.
4.
5.
6.
7.
8.
C. Ortseifen
Die Oberfläche von SAS Version 9
Die Libname-Anweisung
Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Ausgaben nach RTF und HTML
Der Datenschritt
Tabellen verknüpfen
Ein Makro
64
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Beispiele
%Let datei=sashelp.class;
%PrintTable(sashelp.class);
%Macro PrintTable(datei);
Proc Print Data=&datei;
Run;
%Mend;
…
%Do i=1 To &ende;
%If &x > %Eval(2*&y) %Then …
%Let y=&i;
%End;
…
Call Symput("x", y);
%If %Symexist(datei) %Then
%Symdel(datei);
%Let cmd=dir;
dm '&cmd';
Warum eine Makro-Sprache?
„
Vereinfachung des Codes
„
„
„
Wiederverwendung
„
„
„
Durch Kollegen
Andere SAS Anwender (SAS community)
Standardisierung
„
C. Ortseifen
Leichtere Pflege
Bessere Lesbarkeit
Definierte Analyseverfahren
65
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Was sind Makros?
„
Automatisierte Programme
„
„
„
„
Parametrisierung
Modularisierung
Konditionelle Ausführung von Programmteilen
Fokus bei Entwicklung liegt auf Effizienz der
Programmierung, nicht auf inhaltlicher
Fragestellung
Wie funktionieren Makros?
„
Platzhalter-Prinzip
„
„
„
In einem Programm werden Platzhalter
referenziert
Beim Verarbeiten werden Platzhalter ersetzt
Grundprinzip ist die Textersetzung
Æ Makros sind Code-Generatoren
„
C. Ortseifen
Ergebnis ist ein SAS-Programm (bzw. ein Teil
davon)
66
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Die SAS Macro Facility besteht
aus …
„
Makrosprache (Macro Language)
„
Programmiersprache in SAS/BASE
„
„
„
„
„
Makroprozessor
„
„
Makro-Variablen
Makro-Anweisungen
Makro-Funktionen
Globale Optionen
Interpreter
Standards für die Bereitstellung
Wie werden Makros entwickelt?
„
„
„
„
„
C. Ortseifen
SAS/BASE Programm schreiben
Allgemein verwendbare Teile identifizieren
(modularisieren)
Variable Teile identifizieren
Programm in ein Makro übersetzen
Beispiel:
Proc Print Data=sashelp.class;
Run;
67
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Arbeiten mit SAS
Submit
SAS-Programm
SAS-System
Proc Print Data=sashelp.class;
Run;
Kompilierung
+
Ausführung
Aufsuchen der
Schlüsselworte
und Verarbeiten
der Anweisungen
Ergebnis
(Protokoll, Ausgabe, Datei)
Arbeiten mit SAS-Makros
Ausgeführt
SAS-Programm
Proc Print Data=sashelp.class;
Run;
Submit
SAS-Makro
Aufsuchen der
Schlüsselworte
und Verarbeiten
der Anweisungen
%PrintTable
%Macro PrintTable;
Proc Print Data=sashelp.class;
Run;
%Mend;
C. Ortseifen
SAS-System
Ergebnis
(Protokoll, Ausgabe, Datei)
68
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Wie SAS ein Makro verarbeitet
„
Kompilierungsphase
„
„
„
„
SAS verarbeitet Code
Wenn Fehler auftritt Æ Fehlermeldung oder
dummy macro
Kompiliertes Makro in Work.Sasmacr gespeichert
Aufruf des Makros
„
„
„
„
SAS lädt Makro
Makrovariablen werden aufgelöst
Logik des Makros wird verarbeitet
Resultierendes Programm wird von SAS verarbeitet
Log, Output
Ausführung
Compiler
1.
Makroprozessor
&name
%name
Word Scanner
2.
3.
Symbol
Tabelle(n)
Wenn & oder %
aufgelöst.
Input Stack
%PrintTable(Sashelp.Class)
4.
5.
6.
Kompiliertes Makro
%Macro PrintTable(tabelle);
Proc Print Data=&tabelle;
Run;
%Mend;
C. Ortseifen
7.
Word Scanner liest
Token aus Input Stack
Word Scanner erkennt
Makroreferenzen
[%,&]
Kompiliertes Makro
wird geöffnet
Lokale Symbol-Tabelle
wird angelegt
Wert für Tabelle wird
gespeichert
Makroprozessor liest
Tokens aus
kompiliertem Makro
und schreibt Ergebnis
in Input Stack zurück
Word Scanner liest
Token aus Input Stack
69
URZ-Blockkurs WS 2008/2009
SAS - Einführung in Programmierung
Makro-Anweisungen
Makro-Definiton:
„ %Macro, %Mend
Aufruf:
„ %macroname
Kommentar:
„ %*
Tutorium zu Makros
Im SAS-Anwenderhandbuch im Netz unter
http://web.urz.uni-heidelberg.de/
und die Stichworte
Programme > Statistik > SAS-Ah
C. Ortseifen
70
Herunterladen