URZ-Kurs Februar 2013 SAS - Einführung in Programmierung C

Werbung
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Kursaufbau
Mittwoch, 13.02. – Freitag, 15.02.2013
Das Datenanalysesystem SAS
9:15 –maximal 12:30 Uhr
im Raum 118
Einführung in die Programmierung
3 x 4 Std., Blockkurs, Februar 2013
Dr. Carina Ortseifen, URZ Heidelberg
Literatur
„
Folien und Aufgaben
URZ-Homepage > Programme > Statistik
> SAS > Kursunterlagen zu SAS
SAS-Kursen
Kursen.
„
„
Vorkenntnisse, Erwartungen
SAS Online-Hilfe (Menü Help)
SAS Online-Doku im WWW
http://support.sas.com/documentation/
onlinedoc/index.html
n
Welche Vorkenntnisse bringen Sie mit
hinsichtlich SAS?
o
Was wollen Sie in dem Kurs erfahren, lernen?
o
Warum SAS und nicht SPSS oder Stata?
- Base SAS mit
Language Reference und Procedures Guide
- SAS/STAT
C. Ortseifen
1
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Themen
Voraussetzungen
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.
„
„
„
Begriffe
„
„
„
„
„
C. Ortseifen
SAS-Tabelle, SAS-Datei
im Unterschied zu SAS-Programm
Variable, Beobachtung,
g Wert
einer Tabelle
Variablentyp, Label (Etikett)
Format, Informat
Anwendungsroutinen/Task
Daten- und Prozedurschritte
SAS-Server / SAS-Bibliothek (Library)
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
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
2
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
SAS Version 9
„
„
„
„
„
„
Installiert ist: SAS 9.2 (TS2M3)
Englisch und Deutsch
Programmierumgebung (Code-Fenster) mit
Windows Elementen:
Windows-Elementen:
Menüleiste
Icons
Editor-, Log- und Outputfenster
Explorer und Resultfenster
Arbeitsweise
1.
2.
3.
C. Ortseifen
SAS-Programm in den Editor laden
oder neu schreiben
Programm
g
ausführen
über Menü (Run > Submit), Icon
,
oder Funktionstaste F3,
RM Submit All oder Kommando Submit
Ergebnisse betrachten
(Log-Fenster, Output-Fenster)
Menüleiste
SASExplorer
Kommando
-zeile
Symbolleiste
(Tools)
Protokollfenster
(Log)
Editorfenster
(Code)
Ausgabefenster
(Output)
Beispielprogramm beispiel.sas
Im Ordner
O:\KURS\SAS\SAS Kurs Programmierung
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;
3
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Aufbau von SAS-Programmen
„
Globale Anweisungen
SAS-Anweisungen
„
Ods RTF ...
Title
„
„
„
Datenschritte
Prozedurschritte
Data ... ;
Run;
Proc Freq .... ;
„
Proc Print ...
Proc Freq ...
Run;
C. Ortseifen
Optionen wählen Aktionen aus oder ändern
Voreinstellungen ab.
Proc Print Data=sasuser.adressen;
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.
Daten- und Prozedurschritte bestehen aus
Anweisungen.
Anweisungen werden durch ein Schlüsselwort eingeleitet (z.B. Data, Proc, Run, Title)
und enden mit einem Semikolon (;).
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
4
URZ-Kurs Februar 2013
SAS-Bibliotheken
„
sind (Unter-) Ordner, die SAS-Tabellen und
SAS-Kataloge enthalten.
Um nicht immer den g
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.
„
„
Bibliotheken
„
Work
Sasuser
Sashelp
Maps
„
Local (SAS/Enterprise Guide)
„
„
„
C. Ortseifen
temporärer Arbeitsbereich
Arbeitsbereich des Anwenders
SAS-Arbeitsbereich
SAS
Arbeitsbereich
Bibliothek mit Landkartendaten
SAS - Einführung in Programmierung
Bibliotheken verwalten (Libname)
„
„
„
ü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.
Zurück zum Beispielprogramm
…
Proc Print Data=sashelp.class;
Run;
…
Tabelle CLASS in der Bibliothek SASHELP
Alternative Schreibweise:
Proc Print
Data="C:\Programme\SAS\SASFoundation\
9.2\core\sashelp\class.sas7bdat";
Run;
5
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Eigene Bibliotheken definieren
Anweisung Libname. Beispiel:
Libname urz 'O:\Kurs\sas\daten';
Schlüsselwort
Libname
Bibliotheksname
Zugriff auf Excel-Tabellen
Libname schule Excel
'O:\Kurs\sas\SAS Kurs
Programmierung\schule xls';
Programmierung\schule.xls';
Pfadangabe
Allgemeine Syntax:
Libname bib <engine> 'Pfad';
Besonderheiten:
„ Als Pfad steht eine komplette Datei.
„ Für jedes Arbeitsblatt und für jeden
Namensbereich wird eine SAS-Tabelle angelegt.
Optionale Option: Engine (Dateiform),
z.B. V6, SPSS, Excel
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
Tabelleninformationen
Tabelle anklicken, RM > Properties
liefert:
„ Allgemeine
g
Optionen
„ Details
„ Indizes
„ Spalten (= Variablenfenster)
Eintragungen, die sich ändern lassen, haben
Popup-Menü.
6
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Variablenfenster
Tabellenansicht und zurück
(auch über RM > View columns)
„
Anzeige
g der Variablen samt Eigenschaften
g
Name, Etikett, Ausgabe- und Einleseformat
„
„
„
„
können über das RM-Menü Modify geändert
werden (Nicht: Variablentyp und Länge!)
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
C. Ortseifen
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
).
Prozedur Print
„
„
Darstellen der Datenwerte einer SAS-Tabelle im
Ausgabefenster
D einfachste
Der
i f h t A
Aufruf
f f
Proc Print Data=sashelp.class;
Run;
gibt die SAS-Tabelle sashelp.class vollständig
mit allen Variablen und Beobachtungen aus.
7
URZ-Kurs Februar 2013
Einschränkungen / Änderungen
„
„
„
„
Nur bestimmte Variablen
Î Anweisung Var
Nur bestimmte Beobachtungen
g / Teilmenge
g
Î Dateioptionen Obs= und Firstobs=
Î Anweisung Where
Beobachtungen in einer anderen Reihenfolge
Î Prozedur Sort
Listen getrennt nach bestimmten Gruppen
Î Anweisung By
Variablenbereiche
„
Benennung einzelner Variablen:
SAS - Einführung in Programmierung
Anweisung Var
„
Proc Print Data=sashelp.class;
Var name age;
Run;
Variablen ausschließen - Drop=
„
Var name age;
mit geänderter Reihenfolge:
Var weight
i h age name;
„
Var name--height;
Gleicher Präfix und numerische Endung:
„
Gleicher Präfix:
Var tag1-tag5;
Var tag: ;
C. Ortseifen
Sollen alle Variablen bis auf wenige
dargestellt werden, verwendet man die
Dateioption Drop=:
Proc Print
Data=sashelp.class(Drop=name);
Run;
Variablenbereiche innerhalb der Datei:
„
Sollen nicht alle Variablen ausgegeben oder
die Variablen in anderer Reihenfolge
dargestellt werden, verwendet man die
Anweisung Var.
„
Die Dateioptionen folgen dem Tabellennamen
in Klammern: (Drop=Variable|Variablenliste)
8
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Teilmengen
„
„
„
„
Where-Anweisung
Normalerweise werden Prozedurschritte für
alle Beobachtungen ausgeführt.
Bei g
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
„
„
Dateioptionen Obs= und Firstobs=
Anweisung Where!
Logische Bedingungen
„
„
„
„
Numerische Variablen
„
Textvariablen
Wh
Where
stadt=‘Heidelberg‘;
d ‘H id lb
‘
„
Vergleichsoperatoren
= eq gleich
> gt größer
>= ge größer oder gleich
in in der Liste enthalten
C. Ortseifen
Proc Print Data=sashelp.class;
Where age>13;
Run;
Where ist eine lokale Anweisung, die für fast
jede Prozedur verwendet werden kann.
Kombinierte Bedingungen
Where wert=1; Where wert>1;
„
Beschränkung auf Untergruppen durch
Formulierung einer logischen Bedingung, die
von den Beobachtungen erfüllt werden muss.
„
^= ne ungleich
< lt kleiner
<= le kleiner
oder gleich
„
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;
9
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Firstobs=, Obs=
Weitere Operatoren
Between-And
Contains
In
Where x between 1 and 5;
Where a contains 'Dr.';
Where a in(1,2,3);
Is null|Is missing
Like
Weitere Hinweise und zahlreiche Beispiele im
SAS-Wiki http://de.saswiki.org
unter den Stichworten Where und If
Andere Reihenfolge der Fälle
„
„
1.
2.
C. Ortseifen
Um die Beobachtungen (=Zeilen) der SASTabelle in einer anderen Reihenfolge
darzustellen, muss die Tabelle zunächst mit
d Prozedur
der
d Sort sortiert werden.
d
Anschließend kann die sortierte Tabelle mit
der Prozedur Print im Ausgabefenster
angezeigt werden.
Proc Sort ... ; Run;
Proc Print ...; Run;
„
Die Dateioptionen folgen in Klammern dem
Tabellennamen:
Proc Print
Data=sashelp class(Firstobs=4 Obs=10);
Data=sashelp.class(Firstobs=4
Run;
„
„
„
Firstobs= Nummer der ersten Beobachtung, die
verarbeitet wird
Obs= Nummer der letzten Beobachtung, die
verarbeitet wird
Firstobs <= Obs
Prozedur Sort
„
Sortieren erfolgt nach bestimmten Kriterien,
die mit der BY-Anweisung formuliert werden.
Proc Sort Data=meine.class;
By age;
Run;
sortiert die Beobachtungen nach Alter
(in aufsteigender Reihenfolge)
„
Prozedur erzeugt keine Ausgabe.
10
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Mehrfache Sortierkriterien
Beispiel: Telefonbuch
Innerhalb einer By-Gruppe wird weiter nach
dem nächsten Kriterium sortiert:
„
„
Proc Sort Data=meine.class;
By sex name age;
Run;
Die Reihenfolge der Variablen entscheidet
über die Anordnung der Beobachtungen.
„
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.
definiert
Voraussetzung: SAS-Tabelle ist nach der oder
den BY-Variablen sortiert.
Proc Print Data=sashelp.class;
Var name age;
By sex;
Run;
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.
ein
Proc Sort Data=meine.class
Out=meine.class2;
By name;
Run;
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=meine.class;
By sport;
Proc Print Data=meine.class;
...
11
URZ-Kurs Februar 2013
Beschriftungen
„
„
„
„
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.
Hinweise
„
Es können bis zu 10 Titel- und Fußzeilen
definiert werden.
SAS - Einführung in Programmierung
Beispiele
Title1 ’Experiment von Fisher’;
Title2 ’Vergleich von 3 Irisarten';
Footnote ’Umfang: je 50 Blüten’;
Proc Print Data=meine.iris;
Run;
Globale Einstellungen - Optionen
„
Beim Start der SAS-Sitzung belegt das SASSystem viele Schalter vor durch
„
„
Als globale Anweisungen gelten sie so lange,
bis sie geändert oder zurückgesetzt werden.
„
„
„
Zurücksetzung:
Title ;
Footnote ;
C. Ortseifen
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)
12
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Einige globale Einstellungen
„
Ausgabe des Datums
Date
Nodate
„
A
Anzeige
i der
d Seitennummern
S it
Number
N
b
Nonumber
„
Verändern der Seitennummer
SAS System Options
„
„
C. Ortseifen
Kommando Option
Menü Tools > Options > System …
Pageno=n
Ä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.
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 ...;
13
URZ-Kurs Februar 2013
Literatur
SAS - Einführung in Programmierung
Aufgabe
Prozeduren Print und Sort sind Bestandteil
von SAS Base:
„
Erzeugen Sie eine Liste (Listenbericht) der
SAS Procedures
d
Guide
d
SAS-Tabelle
b ll dateia
d
aus dem Ordner O:\kurs\sas\daten
Globale Anweisungen und Dateioptionen
„
SAS Language Reference
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
C. Ortseifen
Prozedur Means
„
„
„
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 ...
14
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Einfachster Aufruf
Anweisung Var
Proc Means Data=sashelp.iris;
Run;
„
berechnet für alle numerischen Variablen 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 Class
„
Berechnung der Kennwerte getrennt für die
durch die Class-Variablen definierten Gruppen
Proc Means Data=sashelp.iris;
Var sepallength;
Class species;
Run;
„
C. Ortseifen
Tabelle braucht nicht sortiert (nach species)
vorliegen.
„
beschränkt die Liste der Variablen, für die
Kennwerte berechnet werden.
Proc Means Data=sashelp.iris;
Var sepalwidth petalwidth;
Run;
Alternative Lösung:
„
Proc Means
Data=sashelp.iris(Drop=sepallength);
Run;
Anweisung Output
„
„
„
Übertragung der Kennwerte in eine neue
SAS-Tabelle
Proc Means Data=sashelp.iris;
Data=sashelp iris;
Var sepallength;
Output Out=work.iris;
Run;
Die Kennwerte werden im Ausgabefenster
angezeigt, gleichzeitig wird die SAS-Tabelle
iris angelegt.
15
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Mit Output erzeugte Tabelle
Option Noprint
iris hat
„
- 5 Beobachtungen für die fünf Kennwerte (N,
Mean, Std, Min, Max) und
„
- 4 Variablen _Type_, _Freq_, _Stat_ und die
eigentliche Variable sepallength, die die
Kennwerte enthält.
Prozedur Ttest
„
Proc Means Data=sashelp.iris
Data=sashelp iris Noprint;
Var sepallength;
Output Out=work.iris;
Run;
„
Das Ergebnis ist die neue SAS-Tabelle iris.
Einfachster Aufruf
Vergleich von zwei Gruppen hinsichtlich deren
„
„
C. Ortseifen
Die Option Noprint unterdrückt die Darstellung der Kennwerte im Ausgabefenster.
Erwartungswerte
t-Test
für gleiche und ungleiche Varianzen
für unabhängige u. abhängige Gruppen
Varianzen
F-Test
Proc Ttest Data=sashelp.class;
Class sex;
Var weight;
Run;
16
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
The TTEST Procedure
Variable:
Sex
F
M
Diff (1-2)
Sex
Kennwerte
Weight
N
Mean
Std Dev
Std Err
Minimum
Maximum
9
10
90.1111
109.0
-18.8389
19.3839
22.7272
21.2196
6.4613
7.1870
9.7497
50.5000
83.0000
112.5
150.0
Method
Mean
95% CL Mean
F
90.1111
M
109.0
Diff (1-2)
(1 2) Pooled
-18
18.8389
8389
Diff (1-2) Satterthwaite -18.8389
Method
Variances
Pooled
Satterthwaite
Equal
Unequal
75.2113
92.6920
-39
39.4090
4090
-39.2325
Std Dev
105.0
125.2
1
1.7313
7313
1.5547
19.3839
22.7272
21
21.2196
2196
DF
t Value
Pr > |t|
17
16.962
-1.93
-1.95
0.0702
0.0680
Equality of Variances
Method
Num DF
Den DF
F Value
Pr > F
9
8
1.37
0.6645
Folded F
Mehr zur Proc Ttest
… in der Online-Hilfe:
95% CL Std Dev
13.0930
15.6326
15
15.9229
9229
Help
> SAS Help
l and
d Documentation
> SAS Products
> SAS/STAT
> SAS/STAT 9.22 User's Guide
> The TTEST Procedure
> Examples: TTEST Procedure
37.1351
41.4910
31
31.8112
8112
t-Test mit
Freiheitsgrad,
Teststatistik,
Irrtumswahrscheinlic
hkeit
(=Ws. unter
Nullhypothese)
F-Test
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;>
C. Ortseifen
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
17
URZ-Kurs Februar 2013
Ausgabe von Prozeduren
„
„
„
Standardmäßig: Ausgabefenster
Aber:
Für Publikationen benötigt
g man eher
Ausgaben im Format Word, PDF oder HTML.
Da bedient man sich dem ODS
ODS = Output Delivery System
SAS - Einführung in Programmierung
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;
ODS HTML
„
Für Publikationen im Internet/Intranet:
HTML-Ausgaben
ODS Html File="liste.html";
Proc Print Data=urz.iris;
Run;
Standardausgabe: Listing
ODS Listing;
Proc Print Data=urz.iris;
Run;
Ods Listing Close;
Ods Html Close;
C. Ortseifen
18
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
ODS GRAPHICS ON/OFF
„
„
Für HTM, RTF und Listing werden zusätzliche
Grafiken erzeugt.
Beispiel: Prozedur TTEST
Je nach Situation werden erzeugt: Boxplots,
Histogramme, Profile, QQ-Plots …
(Details siehe Online-Hilfe .. >Syntax
> PROC TTEST Statement)
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
SAS-Tabellen erzeugen
SAS-Tabellen erzeugen
mit SAS/Enterprise Guide:
mit SAS 9.2:
„
„
Datei > Öffnen
für SAS-Tabellen
SAS-Tabellen, Excel-Arbeitsblätter …
„
oder:
„
Datei > Daten importieren
für Textdateien, Excel-Arbeitsblätter …
„
Datenschritt mit Anweisung Set
für SAS-Tabellen, Excel-Arbeitsblätter …
Datenschritt mit Anweisung Infile
für Textdateien (Rohwerte)
Prozeduren SQL und Import
für SAS-Tabellen, Datenbankentabellen und
Fremdformate
mit Libname-Anweisung f. permanente Tabellen
C. Ortseifen
19
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Programm1.sas
Programm2.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;
Data sasuser.adneu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
Was macht dieses Programm, wenn man es ausführt?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
Was macht dieses Programm?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
Aufgabe des Datenschritts
Die Anweisung Data
… ist die Erzeugung von SAS-Tabellen
„
1.
Entweder aus Rohwerten/ASCII-Dateien:
Input + Datalines
l
+ Datenwerte
„
Input + Cards + Datenwerte
„
Infile + Input
(Datalines und Cards sind synonyme
Anweisungen.) oder
„
„
2.
C. Ortseifen
aus vorhandenen SAS-Tabellen: Set
„
ist die erste Anweisung im Datenschritt.
Dem Schlüsselwort Data folgt
g der Name der
zukünftigen SAS-Tabelle.
Data sasuser.adressen;
Data sasuser.adneu;
Data work.firma;
20
URZ-Kurs Februar 2013
Ende des Datenschritts
Der Datenschritt ist beendet, wenn
„ ein neuer Daten- oder Prozedurschritt beginnt
d.h. Data- oder Proc-Anweisung,
g
„ eine Run-Anweisung auftritt oder
„ nach den Datenzeilen nach einer Datalinesoder Cards-Anweisung
SAS - Einführung in Programmierung
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
Anweisung Set
„
„
„
bezeichnet die SAS-Tabelle, die in die neue
kopiert wird.
Diese Tabelle muss existieren.
Die Tabelle
b ll in der
d Data-Anweisung kann
k
mit
der in der Set-Anweisung übereinstimmen:
Data sasuser.adneu;
Set sasuser.adneu;
aklasse=alter/10;
Run;
C. Ortseifen
Programm2 - Die Zuweisung
Data sasuser.adneu;
Set sasuser.adressen;
g pp
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.
21
URZ-Kurs Februar 2013
Programm2 - Bedingte Zuweisung
Data sasuser.adneu;
Set sasuser.adressen;
g pp
gruppe=1;
;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
SAS - Einführung in Programmierung
Hinweis
„
Die Anweisungen im Datenschritt werden von
oben nach unten für jede einzelne Beobachtung der SAS-Tabelle – ebenfalls sequentiell
von oben
b nach
h unten – abgearbeitet.
b
b
Der Wert der Variable typ wird in Abhängigkeit von
einer Bedingung bestimmt (hier abhängig vom Alter).
Programm3
Data sasuser.adneu;
Set sasuser.adneu;
If typ
typ=‘senior‘
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?
C. Ortseifen
Zuweisung von Konstanten
„
Numerische Variablen
Variable=Wert;
x=3;
y=0 2;
y=0.2;
„
z=
z=.;
;
Text- (Alphanumerische, Character-) Variablen
Variable='Zeichenkette'; oder
Variable="Zeichenkette";
status='ohne Befund';
sex="männlich";
wort='';
wort=' ';
22
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Arithmetische Operatoren
„
Addition +
„
Subtraktion -
„
Multiplikation *
„
Division /
„
Potenzierung
„
a=b+c; a=b-10; a=10+20;
a=b-c; a=b-10; a=20-10;
a=b/c; a=b/2;
a=b**c;
**
Wahrscheinlichkeitsfunktionen, z.B. tVerteilung
p=Probt(1.96,10);
P bt(1 96 10)
Stichprobenfunktionen
y=Mean(a,b,c);
y=Std(1,2,3);
Arithmetische Funktionen
Sqrt(x): y=Sqrt(x); y=Sqrt(2);
Exp(x): y=Exp(x); y=Exp(0);
„
Es gilt dabei: Punkt- vor Strichrechnung.
Mean(x,y):
Std(x,y,z):
C. Ortseifen
„
a=5/2;
a=b**2; a=3**2;
P bt( df
Probt(x,df,<nc>):
)
„
Funktionsname(Argument<,Argument2<,..>>)
a=b*c; a=b*10; a=10*20;
SAS-Funktionen (2)
„
SAS-Funktionen
Quantilfunktionen, z.B. t-Verteilung
Tinv(alf,df):
x=Tinv(0.05,10);
Funktionen
„
Verwendung der Funktionen ausschließlich im
Datenschritt (oder mit Prozedur SQL):
Data work.irismein;
ork irismein
Set urz.iris;
sum1=sl+sw+pl+pw;
* per Formel ;
sum2=Sum(sl,sw,pl,pw); * mit Funktion;
Run;
23
URZ-Kurs Februar 2013
Vorteil der Funktionen
„
„
meistens schneller im Vergleich zur ‚Formel‘Methode, zum anderen können sie adäquat
mit fehlenden Werten umgehen
(vgl Aufgabe 22)
(vgl.
22).
Vollständige Liste der verfügbaren Funktionen
„
„
SAS Language Guide oder
Help > SAS Hielp and Documentation > SAS
Products > Base SAS > SAS Language
Dictionary > Dictionary of Language Elements
> Functions and CALL Routines
SAS - Einführung in Programmierung
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?
Struktur der Daten
Programm1.sas
… bestimmt den Datenschritt:
1.
Daten in Form einer Liste
Daten in Spaltenform
Nichtstandard-Formate
2.
Eine Zeile pro Beobachtung
mehrere Zeilen pro Beobachtung
mehrere Beobachtungen pro Zeile
3.
Datenwerte im Datenschritt
Datenwerte in externer Datei
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
Daten als Liste:
Freies oder listengesteuertes Einlesen
24
URZ-Kurs Februar 2013
Zum Programm1.sas
„
„
„
„
„
Datenwerte stehen in einer Liste durch
Leerzeichen getrennt.
Die Anweisung
g 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.
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.
SAS - Einführung in Programmierung
Hinweise zur „Liste“
„
„
„
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.
Programm2.sas
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;
Daten in Spalten bzw. Textwerte mit Leerzeichen:
Spaltengesteuertes Einlesen
C. Ortseifen
25
URZ-Kurs Februar 2013
Hinweise zu „Spalten“
„
„
„
„
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.
Programm3.sas
SAS - Einführung in Programmierung
Nicht-Standard-Werte
„
„
„
Texte mit mehr als 8 Zeichen
Datumsangaben
Zahlenwerte mit Komma als
Dezimaltrennzeichen
Einleseformate
Data sasuser.test;
Informat name $50. zahl Commax10.2;
Input name zahl;
Datalines;
Einleseformat
Meier 12,45
Leuthäuser-Schnarrenberger 13,50
Karl 100,50
Run;
$50. Textwerte der Länge 50
$
Text
50
50 Zeichen
.
Kennzeichnet (Einlese-) Formate
Nicht-Standard-Werte:
Formatgesteuertes Einlesen
Commax10.2
Zahl mit Dezimalpunkt und
Kommata zur Abtrennung von
Tausenderstellen
C. Ortseifen
Ddmmyy10.
Datumsangabe der Form
tag monat jahr, 10 Zeichen
26
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Themen
Werte in externen Dateien
„
Anstelle der Anweisung Datalines verwendet
man dann INFILE vor Input
Data sasuser.klasse;
Infile 'o:\kurs\sas\daten\klasse
o:\kurs\sas\daten\klasse.dat
dat'
firstobs=2;
Input name $ alter;
Run;
„
Direkt von einem Messgerät, mit einem
externem Editor erfasst oder z.B. MSWord
(Umwandlung in Ascii (als 'nur Text') nicht
vergessen!)
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
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
Set und Merge
sind zwei Anweisungen des Datenschritts.
Data ...;
;
Set ...;
...;
Run;
Data ...;
;
Merge ...;
By...;
Run;
27
URZ-Kurs Februar 2013
Verknüpfen mit Set
„
„
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.
Verknüpfen mit Merge
„
„
C. Ortseifen
Zwei Dateien enthalten unterschiedliche
Merkmale für gleiche Beobachtungen.
Mit der Anweisung
g Merge
g verbindet man sie
zu einer neuen Datei, deren
Beobachtungszahl gleich bleibt, aber deren
Variablenstruktur sich aus den Variablen der
beiden Ausgangsdateien zusammensetzt.
SAS - Einführung in Programmierung
Beispiel für Set
Data dat1;
Input x y z;
Datalines;
1 2 3
4 5 6
7 8 9
;
Data dat2;
Input x y z;
Datalines;
10 11 12
13 14 15
;
Data datneu;
Set dat1 dat2;
Run;
Beispiel für Merge
Data dat3;
Input n x;
Datalines;
1 10
2 11
3 12
;
Data datneu2;
Merge dat3 dat4;
By n;
Run;
Data dat4;
Input n y;
Datalines;
1 100
2 200
3 300
;
28
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Mögliche Probleme (Set)
Mögliche Probleme
In einer Datei fehlen Variablen.
Variablen sind unterschiedlich benannt
Data dat5;
Input x y z;
D t li
Datalines;
1 2 3
4 5 6
7 8 9
;
Data datneu3;
Set dat5 dat6;
Run;
Data dat6;
Input x y;
D
Datalines;
t li
10 11
13 14
;
Mögliche Probleme (2)
Variablen sind unterschiedlich kodiert
(d.h. in einer Datei numerisch, in der anderen
als
l Textvariable):
bl )
Î Funktionen Input und Put zur
Umwandlung von numerisch in Text
oder umgekehrt
C. Ortseifen
oder
unter dem gleichen Variablennamen sind
unterschiedliche Merkmale abgelegt:
Î Anweisung Rename oder
Î Dateioption Rename=
Beispiel für Funktion Input
Data dat7;
Input num $ @@;
Datalines;
1 2 3 4 5 6
;
Data dat8;
Set dat7;
n=Input(num,3.0);
Drop num;
Rename n=num;
Run;
29
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Mögliche Probleme (3)
Themen
Mindestens eine der Dateien ist sehr groß.
Dann besser anstelle eines Datenschritts:
1.
2.
3.
Proc Datasets
4.
5.
Eine Anleitung dazu finden Sie auf der Seite mit
den Kursunterlagen.
6.
7.
8.
Beispiele
%Let datei=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;
…
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
Warum eine Makro-Sprache?
%PrintTable(sashelp.class);
„
Vereinfachung des Codes
„
„
Call Symput("x", y);
„
„
„
%Let cmd=dir;
dm '&cmd';
Wiederverwendung
„
%If %Symexist(datei) %Then
%Symdel(datei);
Leichtere Pflege
Bessere Lesbarkeit
Durch Kollegen
Andere SAS Anwender (SAS community)
Standardisierung
„
Definierte Analyseverfahren
30
URZ-Kurs Februar 2013
Was sind Makros?
„
Automatisierte Programme
„
„
„
SAS - Einführung in Programmierung
Wie funktionieren Makros?
„
Parametrisierung
Modularisierung
Konditionelle Ausführung von Programmteilen
„
„
„
„
Fokus bei Entwicklung liegt auf Effizienz der
Programmierung, nicht auf inhaltlicher
Fragestellung
Die SAS Macro Facility besteht
aus …
„
Programmiersprache in SAS/BASE
„
„
„
„
„
Ergebnis ist ein SAS-Programm (bzw. ein Teil
davon)
Wie werden Makros entwickelt?
Makro-Variablen
M k A
Makro-Anweisungen
i
Makro-Funktionen
Globale Optionen
„
„
„
SAS/BASE Programm schreiben
Allgemein verwendbare Teile identifizieren
(modularisieren)
Variable Teile identifizieren
Programm in ein Makro übersetzen
Makroprozessor
„
C. Ortseifen
Grundprinzip ist die Textersetzung
Æ Makros sind Code-Generatoren
„
„
In einem Programm werden Platzhalter
referenziert
Beim Verarbeiten werden Platzhalter ersetzt
Makrosprache (Macro Language)
„
„
Platzhalter-Prinzip
Interpreter
Standards für die Bereitstellung
„
Beispiel:
Proc Print Data=sashelp.class;
Run;
31
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Arbeiten mit SAS
Makro %PrintTable
„
Submit
SAS-Programm
SAS-System
Proc Print Data=sashelp.class;
Run;
Kompilierung
+
Ausführung
%Macro PrintTable;
Proc Print Data
Data=sashelp.class;
sashelp class
Run;
%Mend;
Aufsuchen der
Schlüsselworte
und Verarbeiten
der Anweisungen
„
Ergebnis
(Protokoll, Ausgabe, Datei)
Arbeiten mit SAS-Makros
Proc Print Data=sashelp.class;
Run;
Submit
SASMakro
%Macro PrintTable;
Proc Print Data=sashelp.class;
Run;
%Mend;
C. Ortseifen
„
Aufsuchen der
Schlüsselworte
und Verarbeiten
der Anweisungen
„
„
Ergebnis
(Protokoll, Ausgabe, Datei)
Kompilierungsphase
„
SAS-System
%PrintTable
Aufruf:
%PrintTable
Wie SAS ein Makro verarbeitet
„
Ausgeführt
SAS-Programm
Definition:
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
32
URZ-Kurs Februar 2013
Log, Output
Ausführung
Compiler
SAS - Einführung in Programmierung
1.
Makroprozessor
&name
%name
Word Scanner
2.
3.
Symbol
Tabelle(n)
Wenn & oder %
aufgelöst.
f lö t
Input Stack
%PrintTable(Sashelp.Class)
4.
5.
6.
Kompiliertes Makro
%Macro PrintTable(tabelle);
Proc Print Data=&tabelle;
Run;
%Mend;
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
Makro-Anweisungen
Makro-Definiton:
„ %Macro, %Mend
Aufruf:
„ %macroname
Kommentar:
„ %*
Tutorium zu Makros
E-Learning Kurse von SAS
Im deutschsprachigen SAS-Wiki unter
„
http://de.saswiki.org/wiki/Hauptseite
Englischsprachige Online- Kurse zu den
Themen
„
„
und die Suche nach
Makro- Tutorium
„
„
„
C. Ortseifen
SAS
SAS
SAS
SAS
SAS
Enterprise Guide
Macro Language
Programming
SQL
Statistics
33
URZ-Kurs Februar 2013
SAS - Einführung in Programmierung
Zur Grafik
„
„
„
Philip Holland: Why should you be using the new SG
procedures in SAS 9.2?
http://support.sas.com/resources/papers/proceedings
11/427-2011.pdf
/
df
Robert Allison: Gplot and SGPlot
http://robslink.com/SAS/papers/sg_procs/sgplot.html
Robert Allison: Gchart and SGPlot bar charts
http://robslink.com/SAS/papers/sg_procs/sgplot_bar.
html
C. Ortseifen
34
Herunterladen