View
214
Download
0
Category
Preview:
Citation preview
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 1
Das Datenanalysesystem SAS
Einführung in die Programmierung
Blockkurs, SS 2005Dr. Carina Ortseifen, URZ Heidelberg
Kursaufbau
Montag, 18.07. – Freitag, 22.07.2005
Kurs 09:00 - 12:00 R 118
Pause 12:00 – 13:00
Kurs 13:00 - 16:00 R 118
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 2
Literatur
Kursunterlagen (über URZ-Homepage Software > Statistik > Kurse > SAS anklicken)
SAS Online-Hilfe (Hilfe-Menü)
SAS Online-Doku im WWWhttp://support.sas.com/documentation/ onlinedoc/index.html
SAS Language, Reference, SAS Procedures Guide,SAS/STAT, SAS/FSP, SAS/INSIGHT, SAS Makros …
Weitere Literatur
Das SAS-Anwenderhandbuch im Netzwww.urz.uni-heidelberg.de/statistik/sas-ahDort im Kapitel 5: Carina Ortseifen: Der SAS-KursWeitere Lehrbücher über die URZ-Homepagewww.urz.uni-heidelberg.de: Software > Statistik > SAS > Weitere Hinweise/Literatur > Lehrbücher zu SAS
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 3
Warum sind Sie heute hier?
Aus welchen Gründen haben Sie sich für den Besuch dieses Kurses entschieden?
Was wollen Sie hier alles lernen?
Warum haben Sie sich für die SAS-Software entschieden? Es gibt doch auch SPSS.
Themen
1. Die Oberfläche von SAS Version 92. SAS-Tabellen: Datenschritt I3. SAS-Basisprozeduren Print, Sort4. Statistik am Beispiel von Means und Ttest5. Tabellen verknüpfen: Datenschritt II6. Schleifenprogrammierung: Datenschritt III7. Weitere SAS/Base Prozeduren: Transpose, Tabulate …8. Output Delivery System (Ods)9. SAS-Makroprogrammierung10. Weitere SAS Prozeduren: Fsedit, Insight …
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 4
Voraussetzungen
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 regelmäßiger Anwesenheit (80 %)
Begriffe
SAS-TabelleVariable, Beobachtung, WertFormat, Informat, Label (Etikett)
BibliothekDatenschrittProzedurschrittAnweisung, global, lokal
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 5
Themen
1. Die Oberfläche von SAS Version 92. SAS-Tabellen: Datenschritt I3. SAS-Basisprozeduren Print, Sort4. Statistik am Beispiel von Means und Ttest5. Tabellen verknüpfen: Datenschritt II6. Schleifenprogrammierung: Datenschritt III7. Weitere SAS/Base Prozeduren: Transpose, Tabulate …8. Output Delivery System (Ods)9. SAS-Makroprogrammierung10. Weitere SAS Prozeduren: Fsedit, Insight …
SAS Version 9
Installiert ist: SAS 9.1.3 Englisch und DeutschProgrammierumgebung (Code-Fenster) mitWindows-Elementen:
MenüleisteIconsEditor-, Log- und OutputfensterExplorer und Resultfenster
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 6
Menüleiste
Symbolleiste(Tools)Kommando
-zeile
SAS-Explorer
Protokollfenster (Log)
Editorfenster (Code)
Ausgabefenster(Output)
Arbeitsweise
SAS-Programme in den Editor laden (oder neu schreiben), ausführen und Ergebnisse betrachtenProgramm ausführen über Menü (Run > Submit), Icon , Funktionstaste F3, RM Submit All oder Kommando SubmitHilfe zu einzelnen ProzedurenKommando help ProzedurnameBeispiel: help Print
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 7
Bibliotheken verwalten (Libname)
über den SAS ExplorerDoppelklick auf Explorer zeigt die aktuellen Bibliotheken an.
Zurück mit
Rechte Maustaste (RM)- auf einer Bibliothek: Anzeige der
Eigenschaften, Löschen u.a.m. - auf Libraries: Anlegen einer neuen
Bibliothek
SAS-Bibliotheken
sind (Unter-) Ordner, die SAS-Tabellen enthalten.Um nicht immer den gesamten Pfad schreiben zu müssen, vergibt SAS Kürzel für die Ordner:Bibliotheksname (oder libref).Zur Definition
Anweisung LibnameFenster: Neue Bibliothek im Explorer
SAS/EG vergibt eigene Bibliotheksnamen.(Anzeige zur Ziehen der Tabelle ins Code-F.)
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 8
Neue SAS-Bibliothek anlegenName der Bibliothek
Ordner-Angabe
Schalter für ‚permanente‘Bibliotheken
SAS Explorer
Ähnlich wie Windows-Explorer viele Funktionalitäten auf rechter Maustaste (RM)
Anzeige und Bearbeiten von Tabellen, Bibliotheken und KatalogenErzeugen neuer Bibliotheken, Filerefs, Tabellen und KatalogenKopieren und Export von Dateien
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 9
Menü View (Ansicht)
Zum Ändern der Explorer Darstellung(Explorer Fenster ist das aktive Fenster.):
View > Show treeöffnet Baumstruktur, die Drill-Down erlaubt, um einzelne Dateien zu öffnen
View > Details zeigt Details der Bibliotheken, Dateien .. an.
Tabelleninformationen
Tabelle anklicken, RM > Propertiesliefert:Allgemeine OptionenDetailsIndizesSpalten (= Variablenfenster)
Eintragungen, die sich ändern lassen, haben Popup-Menü.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 10
Variablenfenster
(auch über RM > View columns)
Anzeige der Variablen samt EigenschaftenName, Etikett, Ausgabe- und Einleseformat
können über das RM-Menü geändert werden
Tabellenansicht und zurück
Doppelklick auf die Tabelle öffnet sie mit dem ViewtableTabelle umbenennen: Tabelle markieren, RM > RenameMit View > Up one level kehrt man eine Ebene im Explorer zurück (oder dem Icon ).
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 11
Tabellen kopieren
Mittels Drag and Drop können Tabellen von einer Bibliothek in eine andere kopiert werden.
Beispiel: SPSS-Transportfile O:\KURS\SAS\Daten\iris.por(apps auf "winfile")
Umbenennen geht über RM Rename
Zeit für die
Übungen zu Kapitel 1
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 12
Themen
1. Die Oberfläche von SAS Version 92. SAS-Tabellen: Datenschritt I3. SAS-Basisprozeduren Print, Sort4. Statistik am Beispiel von Means und Ttest5. Tabellen verknüpfen: Datenschritt II6. Schleifenprogrammierung: Datenschritt III7. Weitere SAS/Base Prozeduren: Transpose, Tabulate …8. Output Delivery System (Ods)9. SAS-Makroprogrammierung10. Weitere SAS Prozeduren: Fsedit, Insight …
Erzeugen von SAS-Tabellen:Wie und wo liegen die Daten vor?
SAS TabelleEG: Einfügen > DatenDatenschritt mit SetProzedur SQL
Anmerkung: EG: Enterprise GuideNicht EG: nur mit ‚normalem‘SAS ausführbarohne: im Code-Fenster vom EG
Fremdformat von anderer Anwendung (Excel)EG: Daten einfügenEG: Extras > Daten importieren
ASCII-Datei (Rohwerte)EG: Extras > Daten importierenDatenschritt mit Infile
Auf dem PapierDatenschritt mit Datalines (oder Cards)Nicht EG: Prozedur Fsedit mit Option New=
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 13
Aufbau von SAS-Programmen
Globale Anweisungen
Datenschritte
Prozedurschritte
LIBNAME lib 'C:\';
Data lib.abc;Set lib.abc;y=x+10;
Run;
Proc Freq Data=lib.abc;TABLES a*b;
Run;
SAS-Anweisungen
Daten- und Prozedurschritte bestehen aus Anweisungen.Anweisungen werden durch ein Schlüssel-wort eingeleitet (z.B. Data, Proc, Run, Title) und enden mit einem Semikolon (;).
Proc Sort .... ;
Optionen wählen Aktionen aus oder ändern Voreinstellungen ab.
Proc Print Data=sasuser.adressen;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 14
Meldungen im Protokollfenster
NoteHinweis zur Abfolge des Programms (Dauer, welche Datei(en) wurde(n) angelegt/gelöscht)
WarningSAS ist auf einen behebbaren Fehler gestoßen. Der Daten- oder Prozedurschritt wurde vollständig ausgeführt.
ErrorDer Fehler konnte nicht behoben werden. Der Programmschritt wurde abgebrochen.
Programm1.sas
Data sasuser.adressen;Input name $ vorname $ ort $ alter;Datalines;
Meier Hans Walldorf 25Schulze Karin Mannheim 27Müller Horst Nußloch 31Run;
Was macht dieses Programm, wenn man es ausführt? Was ist die Aufgabe des Datenschritts? Was tun die einzelnen Anweisungen?
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 15
Programm2.sas
Data kurs.neu;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?
Aufgabe des Datenschritts
… ist die Erzeugung von SAS-Tabellen
1. Entweder aus Rohwerten/ASCII-Dateien:Input + Datalines + DatenwerteInput + Cards + DatenwerteInfile + Input
(Datalines und Cards sind synonyme Anweisungen.) oder
2. aus vorhandenen SAS-Tabellen: Set
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 16
Die Anweisung Data
ist die erste Anweisung im Datenschritt.
Dem Schlüsselwort Data folgt der Name der zukünftigen SAS-Tabelle.
Data sasuser.adressen;Data kurs.neu;Data work.firma;
Ende des Datenschritts
Der Datenschritt ist beendet, wenn ein neuer Daten- oder Prozedurschritt beginntd.h. Data- oder Proc-Anweisung,eine Run-Anweisung auftritt odernach den Datenzeilen nach einer Datalines-oder Cards-Anweisung
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 17
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 Extras > Abfragen > … > Auswählen, Neu
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 kurs.neu;Set kurs.neu;alter_klasse=alter/10;
Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 18
Programm2 - Die Zuweisung
Data kurs.neu;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.
Programm2 - Bedingte Zuweisung
Data kurs.neu;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).
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 19
Hinweis
Die Anweisungen im Datenschritt werden von oben nach unten für jede einzelne Beobach-tung der SAS-Tabelle – ebenfalls sequentiell von oben nach unten – abgearbeitet.Vorsicht! Was passiert hier:
Data kurs.neu;Set sasuser.adressen;If alter>=30 Then alter=2;If alter<30 Then alter=1;
Run;
Programm3
Data kurs.neu;Set kurs.neu;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?
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 20
Zuweisung von Konstanten
Numerische VariablenVariable=Wert;
x=3; y=0.2; z=.;
Text- (Alphanumerische, Character-) VariablenVariable='Zeichenkette'; oderVariable="Zeichenkette";
status='ohne Befund';sex="männlich";wort=''; wort=' ';
Arithmetische Operatoren
Addition +a=b+c; a=b-10; a=10+20;Subtraktion -a=b-c; a=b-10; a=20-10;Multiplikation *a=b*c; a=b*10; a=10*20;Division /a=b/c; a=b/2; a=5/2;Potenzierung **a=b**c; a=b**2; a=3**2;Es gilt dabei: Punkt- vor Strichrechnung.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 21
SAS-Funktionen
Funktionsname(Argument<,Argument2<,..>>)
Arithmetische Funktionen
Sqrt(x) y=Sqrt(x); y=Sqrt(2);Exp(x) y=Exp(x); y=Exp(0);
Quantilfunktionen, z.B. t-Verteilung
Tinv(alf,df) x=Tinv(0.05,10);
SAS-Funktionen (2)
Wahrscheinlichkeitsfunktionen, z.B. t-Verteilung
Probt(x,df,<nc>) p=Probt(1.96,10);
Stichprobenfunktionen
Mean(x,y) y=Mean(a,b,c);Std(x,y,z) y=Std(1,2,3);
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 22
Funktionen
Verwendung der Funktionen ausschließlich im Datenschritt (oder Prozedur SQL):
Data work.meinedatei;Set urz.iris;sum1=sl+sw+pl+pw; * "zu Fuß" ;sum2=Sum(sl,sw,pl,pw); * Funktion ;
Run;
Vorteil der Funktionen
meistens schneller im Vergleich zur 'Zu Fuß'-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 LanguageDictionary > Dictionary of Language Elements > Functions and CALL Routines
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 23
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;
Fragen1. Welche SAS-Tabellen werden erzeugt?2. Wie viele Variablen haben diese?3. Wieviele Beobachtungen? 4. Welche Werte?
Data vier;Run;
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger . 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz 19Jens Pfluger St. Ilgen 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg
Mehrere Zeilen pro Beobachtung (#1, /)Mehrere Beobachtungen pro Zeile (@@)
Liste/frei Spalten (1-5) Format (:$10.)
Spalten + PAD
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Jens Pfluger Heidelberg 24
Liste/Format + MISSOVERINFILE +
Rohwert-Typen
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 24
Programm1.sas
Data sasuser.adressen;Input name $ vorname $ ort $ alter;Datalines;
Meier Hans Walldorf 25Schulze Karin Mannheim 27Müller Horst Nußloch 31Run;
Zum Programm1.sas
Datenwerte stehen in einer Liste durch Leerzeichen getrennt. => ListengesteuertDie 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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 25
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.
Anweisung Datalines (Cards)
ist eine Anweisung des Datenschrittsteilt dem SAS-System mit, dass im Anschluss die Datenwerte folgenist die letzte Anweisung des DatenschrittsDie Datenwerte werden durch ein Semikolon beendet, das in einer neuen Zeile stehen muss.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 26
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger . 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz 19Jens Pfluger St. Ilgen 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg
Mehrere Zeilen pro Beobachtung (#1, /)Mehrere Beobachtungen pro Zeile (@@)
Liste/frei Spalten (1-5) Format (:$10.)
Spalten + PAD
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Jens Pfluger Heidelberg 24
Liste/Format + MISSOVERINFILE +
Rohwert-Typen
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 25van SchulzKarin Heidelberg 27 Karl Helmut 51Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 27
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.
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger . 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz 19Jens Pfluger St. Ilgen 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg
Mehrere Zeilen pro Beobachtung (#1, /)Mehrere Beobachtungen pro Zeile (@@)
Liste/frei Spalten (1-5) Format (:$10.)
Spalten + PAD
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Jens Pfluger Heidelberg 24
Liste/Format + MISSOVERINFILE +
Rohwert-Typen
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 28
Formatgesteuertes Einlesen
ist angezeigt bei Textwerten länger als 8 Zeichen oder anderen Nicht-Standardwerten, wie Datumsangaben und Zahlen mit Kommas:
Data kurs.firma;Input name :$50. gebdatum :Ddmmyy10.
zahl1 :Comma10.2 zahl2 :Commax10.2;Datalines;
Meier 01.01.1960 10,000.00 12,45Leuthäuser-Schnarrenberger . 1.00 13,50Karl 29.02.2000 1,000,000 100,50Run;
Format
Zahl, Text bis zu... Zeichen
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger . 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz 19Jens Pfluger St. Ilgen 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg
Mehrere Zeilen pro Beobachtung (#1, /)Mehrere Beobachtungen pro Zeile (@@)
Liste/frei Spalten (1-5) Format (:$10.)
Spalten + PAD
Hans Müller Walldorf 25Jutta Schreiner Mannheim 31Uwe Schulz Jens Pfluger Heidelberg 24
Liste/Format + MISSOVERINFILE +
Rohwert-Typen
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 29
Werte in externen Dateien
Anstelle der Anweisung Datalines verwendet man dann INFILE vor Input
Data kurs.klasse;Infile 'd:\klasse.dat';Input name $ alter;
Run;
Direkt von einem Meßgerät, mit einem externem Editor erfaßt oder z.B. WinWord(Umwandlung in Ascii (als 'nur Text') nicht vergessen!)
PAD und MISSOVER
sind Optionen der Anweisung INFILE
Infile 'd:\text.dat‘ Pad;Infile 'd:\text.dat‘ Missover;
Allgemein
Infile ‘Pfad\Datei‘ <Missover> <Pad>;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 30
Zeit für die
Übungen zu Kapitel 2
Themen
1. Die Oberfläche von SAS Version 9.1 (8.2)2. SAS-Tabellen: Datenschritt I3. SAS-Basisprozeduren Print, Sort4. Statistik am Beispiel von Means und Ttest5. Tabellen verknüpfen: Datenschritt II6. Schleifenprogrammierung: Datenschritt III7. Weitere SAS/Base Prozeduren: Transpose, Tabulate …8. Output Delivery System (Ods)9. SAS-Makroprogrammierung10. Weitere SAS Prozeduren: Fsedit, Insight …
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 31
Prozedur PrintDarstellen der Datenwerte einer SAS-Tabelle im Ausgabefenster
Der einfachste Aufruf
Proc Print Data=sasuser.adressen;Run;
gibt die SAS-Tabelle sasuser.adressenvollständig mit allen Variablen und Beobachtungen aus.
Einschränkungen / Änderungen
Nur bestimmte VariablenAnweisung Var
Nur bestimmte Beobachtungen / TeilmengeDateioptionen Obs= und Firstobs=Anweisung Where
Beobachtungen in einer anderen ReihenfolgeProzedur Sort
Listen getrennt nach bestimmten GruppenAnweisung By
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 32
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 und numerische Endung:Var tag1-tag5;
Variablenbereiche innerhalb der Datei:Var name--alter;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 33
Variablen ausschließen - Drop=
Sollen alle Variablen bis auf wenige dargestellt werden, verwendet man die Dateioption Drop=:
Proc PrintData=sasuser.adressen(Drop=sex);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
Dateioptionen Obs= und Firstobs=Anweisung Where!
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 34
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 wirdObs= Nummer der letzten Beobachtung, die verarbeitet wirdFirstobs <= Obs
Where-Anweisung
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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 35
Logische Bedingungen
Numerische VariablenWhere wert=1; Where wert>1;
TextvariablenWhere id=‘DORLE‘;Where ort in('HD','MA','KA');
Vergleichsoperatoren= eq gleich ^= ne ungleich> gt größer < lt kleiner>=ge größer oder gleich <= le kleiner
in in der Liste enthalten oder gleich
Kombinierte Bedingungen
KombinationWhere 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öhenWhere (sport>2 or sport=.) and alter>20;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 36
Weitere Operatoren
Between-And Where x between 1 and 5;Contains Where a contains 'Dr.';Is null|Is missingLike
Genaue Hinweise und Beispiele im
SAS-Anwenderhandbuch im Netzunter dem Stichwort Selektion
Andere Reihenfolge der Fälle
Um die Beobachtungen (=Zeilen) der SAS-Tabelle 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.
1. Proc Sort ... ; Run;2. Proc Print ...; Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 37
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: TelefonbuchInnerhalb einer By-Gruppe wird weiter nach dem nächsten Kriterium sortiert:
Proc Sort Data=sasuser.adressen;By wohnort alter name;
Run;
Die Reihenfolge der Variablen entscheidet über die Anordnung der Beobachtungen.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 38
Sortierung in neuer TabelleSoll 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.adressenOut=kurs.sp;
By alter;Run;
Getrennte Liste – Anweisung By
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;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 39
Häufiger Fehler mit ByERROR: 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
Jede Seite im Ausgabefenster kann Titel- und Fußzeilen enthalten. Standardtitel: The SAS SystemEigene 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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 40
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 ;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 41
Globale Einstellungen - Optionen
Beim Start der SAS-Sitzung belegt das SAS-System viele Schalter vor durch
Konfigurationsfile Sasv9.cfgAnweisungen, 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ßzeilenOptionen (z.B. Seitennumerierung)
Einige globale EinstellungenAusgabe des Datums Date
Nodate
Anzeige der Seitennummern Number / Nonumber
Verändern der Seitennummer Pageno=n
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 42
Ä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
Kommando Option Menü Tools > Options > System …
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 43
SpezialitätenZum Schluß noch zwei Spezialitäten der Prozedur Print:
Darstellung der LabelsBerechnung 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 Labelwerden sie angezeigt:Proc Print Data=sasuser.adressen
Label;Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 44
Spaltensummen mit SumWerte von numerischen Variablen können mit der Anweisung Sum spaltenweisesummiert werden.
Proc Print Data=sasuser.adressen;Sum alter;
Run;
Zusammenfassung der SyntaxProc 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 ...;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 45
Literatur
Prozeduren Print und Sort sind Bestandteil von SAS Base:
SAS Procedures Guide
Globale Anweisungen und Dateioptionen
SAS Language Guide
Zeit für die
Übungen zu Kapitel 3
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 46
Themen
1. Die Oberfläche von SAS Version 9.1 (8.2)2. SAS-Tabellen: Datenschritt I3. SAS-Basisprozeduren Print, Sort4. Statistik am Beispiel von Means und Ttest5. Tabellen verknüpfen: Datenschritt II6. Schleifenprogrammierung: Datenschritt III7. Weitere SAS/Base Prozeduren: Transpose, Tabulate …8. Output Delivery System (Ods)9. SAS-Makroprogrammierung10. Weitere SAS Prozeduren: Fsedit, Insight …
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 ...
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 47
Einfachster Aufruf
Proc Means Data=urz.iris;Run;berechnet für alle numerischen Variablen (auch für blume !) die Kennwerte N Anzahl der nichtfehlenden WerteMean MittelwertStd Dev StandardabweichungMin/Max kleinster/größter Wertund 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:Proc Means Data=kurs.iris(Drop=blume);Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 48
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
Ü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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 49
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
Die Option Noprint unterdrückt die Dar-stellung 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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 50
Prozedur Ttest
Vergleich von zwei Gruppen hinsichtlich derenErwartungswertet-Test
für gleiche und ungleiche Varianzenfür unabhängige u. abhängige Gruppen
VarianzenF-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!
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 51
Beispiel: Unabhängiger t-TestTeststatistik T
wo
xi Mittelwerte, si Standardabweichungen, ni Fälle
Testentscheidung: Wenn |T|>tn1+n2-2,1-α/2 ist, wird H0 verworfen.
2
21
2121
~11||
−++
−= nn
p
tnns
xxT
s n s n sn np
2 1 12
2 22
1 2
1 12
=− + −
+ −( ) ( )
Einfachster Aufruf
Proc Ttest Data=urz.blutbild;Class pille;Var calcium;
Run;
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 52
The TTEST Procedure
Statistics
Lower CL Upper CL Lower CL Upper CLVariable PILLE N Mean Mean Mean Std Dev Std Dev Std Dev Std Err
CALCIUM 1 90 98.818 99.878 100.94 4.4124 5.0588 5.929 0.5332CALCIUM 2 92 98.077 99.098 100.12 4.3045 4.9282 5.7649 0.5138CALCIUM Diff (1-2) -0.681 0.78 2.2407 4.5264 4.9932 5.5683 0.7403
T-Tests
Variable Method Variances DF t Value Pr > |t|
CALCIUM Pooled Equal 180 1.05 0.2935CALCIUM Satterthwaite Unequal 180 1.05 0.2936
Equality of Variances
Variable Method Num DF Den DF F Value Pr > F
CALCIUM Folded F 89 91 1.05 0.8039
Kennwerte
t-Test mit Freiheitsgrad, Teststatistik, Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
F-Test
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.
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 53
Abhängiger t-Test
Proc TtestData=us_sozialerhebung_91;
Paired mausbild*vausbild;Run;
The TTEST Procedure
Statistics
Lower CL Upper CL Lower CL Upper CL StdDifference N Mean Mean Mean Std Dev Std Dev Std Dev Err
mausbild - vausbild 974 -0.189 0.0072 0.2031 2.9825 3.115 3.2598 0.0998
T-Tests
Difference DF t Value Pr > |t|
mausbild - vausbild 973 0.07 0.9426
Kennwerte
t-Test mit Freiheitsgrad, Teststatistik, Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung
C. Ortseifen 54
Zusammenfassung der SyntaxProc 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;>
Recommended