URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Literatur Das Datenanalysesystem SAS Einführung in die Programmierung Blockkurs, SS 2005 Dr. Carina Ortseifen, URZ Heidelberg Kursunterlagen (über URZ-Homepage Software > Statistik > Kurse > SAS anklicken) 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, SAS/FSP, SAS/INSIGHT, SAS Makros … Kursaufbau Weitere Literatur Montag, 18.07. – Freitag, 22.07.2005 Kurs 09:00 - 12:00 Pause 12:00 – 13:00 Kurs 13:00 - 16:00 C. Ortseifen R 118 R 118 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: Software > Statistik > SAS > Weitere Hinweise/Literatur > Lehrbücher zu SAS 1 URZ-Blockkurs SS 2005 Warum sind Sie heute hier? Aus welchen Gründen haben Sie sich für den Besuch dieses Kurses entschieden? SAS - Einführung in die Programmierung Voraussetzungen n o Was wollen Sie hier alles lernen? Warum haben Sie sich für die SAS-Software entschieden? Es gibt doch auch SPSS. Themen 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Die Oberfläche von SAS Version 9 SAS-Tabellen: Datenschritt I SAS-Basisprozeduren Print, Sort Statistik am Beispiel von Means und Ttest Tabellen verknüpfen: Datenschritt II Schleifenprogrammierung: Datenschritt III Weitere SAS/Base Prozeduren: Transpose, Tabulate … Output Delivery System (Ods) SAS-Makroprogrammierung Weitere SAS Prozeduren: Fsedit, Insight … 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 regelmäßiger Anwesenheit (80 %) Begriffe SAS-Tabelle Variable, Beobachtung, Wert Format, Informat, Label (Etikett) Bibliothek Datenschritt Prozedurschritt Anweisung, global, lokal 2 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Themen Die Oberfläche von SAS Version 9 SAS-Tabellen: Datenschritt I SAS-Basisprozeduren Print, Sort Statistik am Beispiel von Means und Ttest Tabellen verknüpfen: Datenschritt II Schleifenprogrammierung: Datenschritt III Weitere SAS/Base Prozeduren: Transpose, Tabulate … Output Delivery System (Ods) SAS-Makroprogrammierung Weitere SAS Prozeduren: Fsedit, Insight … 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. SAS Version 9 Installiert ist: SAS 9.1.3 Englisch und Deutsch Programmierumgebung (Code-Fenster) mit Windows-Elementen: Menüleiste SASExplorer C. Ortseifen Menüleiste Icons Editor-, Log- und Outputfenster Explorer und Resultfenster Symbolleiste (Tools) Protokollfenster (Log) Editorfenster (Code) Ausgabefenster (Output) Arbeitsweise Kommando -zeile 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 3 URZ-Blockkurs SS 2005 Bibliotheken verwalten (Libname) 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 C. Ortseifen Anweisung Libname Fenster: Neue Bibliothek im Explorer Schalter für ‚permanente‘ Bibliotheken Name der Bibliothek Rechte Maustaste (RM) - auf einer Bibliothek: Anzeige der Eigenschaften, Löschen u.a.m. - auf Libraries: Anlegen einer neuen Bibliothek Neue SAS-Bibliothek anlegen über den SAS Explorer Doppelklick auf Explorer zeigt die aktuellen Bibliotheken an. Zurück mit SAS-Bibliotheken SAS - Einführung in die Programmierung OrdnerAngabe SAS Explorer Ä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 SAS/EG vergibt eigene Bibliotheksnamen. (Anzeige zur Ziehen der Tabelle ins Code-F.) 4 URZ-Blockkurs SS 2005 Menü View (Ansicht) SAS - Einführung in die Programmierung Variablenfenster (auch über RM > View columns) 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 Anzeige der Variablen samt Eigenschaften Name, Etikett, Ausgabe- und Einleseformat können über das RM-Menü geändert werden View > Details zeigt Details der Bibliotheken, Dateien .. an. Tabelleninformationen Tabelle anklicken, RM > Properties liefert: Allgemeine Optionen Details Indizes Spalten (= Variablenfenster) Tabellenansicht und zurück Doppelklick auf die Tabelle öffnet sie mit dem Viewtable Tabelle umbenennen: Tabelle markieren, RM > Rename Mit View > Up one level kehrt man eine Ebene im Explorer zurück (oder dem Icon ). Eintragungen, die sich ändern lassen, haben Popup-Menü. C. Ortseifen 5 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Tabellen kopieren Mittels Drag and Drop können Tabellen von einer Bibliothek in eine andere kopiert werden. Themen 1. 2. 3. 4. Beispiel: SPSS-Transportfile O:\KURS\SAS\Daten\iris.por (apps auf "winfile") 5. 6. 7. 8. Umbenennen geht über RM Rename 9. 10. Die Oberfläche von SAS Version 9 SAS-Tabellen: Datenschritt I SAS-Basisprozeduren Print, Sort Statistik am Beispiel von Means und Ttest Tabellen verknüpfen: Datenschritt II Schleifenprogrammierung: Datenschritt III Weitere SAS/Base Prozeduren: Transpose, Tabulate … Output Delivery System (Ods) SAS-Makroprogrammierung Weitere SAS Prozeduren: Fsedit, Insight … Erzeugen von SAS-Tabellen: Wie und wo liegen die Daten vor? Zeit für die SAS Tabelle EG: Einfügen > Daten Datenschritt mit Set Prozedur SQL Übungen zu Kapitel 1 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) EG: Daten einfügen EG: Extras > Daten importieren ASCII-Datei (Rohwerte) EG: Extras > Daten importieren Datenschritt mit Infile Auf dem Papier Datenschritt mit Datalines (oder Cards) Nicht EG: Prozedur Fsedit mit Option New= 6 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Aufbau von SAS-Programmen Globale Anweisungen LIBNAME lib 'C:\'; Datenschritte Prozedurschritte 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üsselwort 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; C. Ortseifen 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. 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? 7 URZ-Blockkurs SS 2005 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? SAS - Einführung in die Programmierung 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; Aufgabe des Datenschritts Ende des Datenschritts … ist die Erzeugung von SAS-Tabellen 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 1. Entweder aus Rohwerten/ASCII-Dateien: Input + Datalines + Datenwerte Input + Cards + Datenwerte Infile + Input (Datalines und Cards sind synonyme Anweisungen.) oder 2. C. Ortseifen aus vorhandenen SAS-Tabellen: Set 8 URZ-Blockkurs SS 2005 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; C. Ortseifen SAS - Einführung in die Programmierung 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). 9 URZ-Blockkurs SS 2005 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: SAS - Einführung in die Programmierung Zuweisung von Konstanten x=3; Data kurs.neu; Set sasuser.adressen; If alter>=30 Then alter=2; If alter<30 Then alter=1; Run; Programm3 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 y=0.2; z=.; Text- (Alphanumerische, Character-) Variablen Variable='Zeichenkette'; oder Variable="Zeichenkette"; status='ohne Befund'; sex="männlich"; wort=''; wort=' '; Arithmetische Operatoren Data kurs.neu; Set kurs.neu; If typ=‘senior‘ Then Delete; Run; Numerische Variablen Variable=Wert; 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. 10 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung SAS-Funktionen Funktionen Funktionsname(Argument<,Argument2<,..>>) Arithmetische Funktionen Sqrt(x) Exp(x) Quantilfunktionen, z.B. t-Verteilung x=Tinv(0.05,10); SAS-Funktionen (2) Wahrscheinlichkeitsfunktionen, z.B. tVerteilung Probt(x,df,<nc>) Data work.meinedatei; Set urz.iris; sum1=sl+sw+pl+pw; * "zu Fuß" ; sum2=Sum(sl,sw,pl,pw); * Funktion ; Run; y=Sqrt(x); y=Sqrt(2); y=Exp(x); y=Exp(0); Tinv(alf,df) Verwendung der Funktionen ausschließlich im Datenschritt (oder Prozedur SQL): Vorteil der Funktionen p=Probt(1.96,10); Stichprobenfunktionen 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 Mean(x,y) Std(x,y,z) C. Ortseifen y=Mean(a,b,c); y=Std(1,2,3); SAS Language Guide oder Hilfe > SAS Hilfe und Dokumentation > SAS Produkte > Base SAS > SAS Language Dictionary > Dictionary of Language Elements > Functions and CALL Routines 11 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Eine Übung für alle Data eins; a=1; b=2; c=3; Run; Programm1.sas Data drei; a=1; a=2; a=3; Run; Data zwei; Set eins; a=4; Run; Data vier; Run; Fragen 1. Welche SAS-Tabellen werden erzeugt? 2. Wie viele Variablen haben diese? 3. Wieviele Beobachtungen? 4. Welche Werte? 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 Data sasuser.adressen; Input name $ vorname $ ort $ alter; Datalines; Meier Hans Walldorf 25 Schulze Karin Mannheim 27 Müller Horst Nußloch 31 Run; Zum Programm1.sas 25 31 19 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Format (:$10.) Spalten (1-5) 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 Hans Jutta Uwe Jens Müller Schreiner Schulz Pfluger Walldorf Mannheim Nussloch Heidelberg 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. Spalten + PAD 12 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Rohwert-Typen 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. 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 Spalten (1-5) 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. C. Ortseifen Format (:$10.) Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Liste/Format + MISSOVER Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 Anweisung Datalines (Cards) 25 31 19 24 Hans Jutta Uwe Jens Müller Schreiner Schulz Pfluger Walldorf Mannheim Nussloch Heidelberg Spalten + PAD 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; 13 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Hinweise zu „Spalten“ Formatgesteuertes Einlesen 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. 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 C. Ortseifen 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.) Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Liste/Format + MISSOVER Format Data kurs.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 Zahl, Text bis zu Run; ... Zeichen Rohwert-Typen Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 ist angezeigt bei Textwerten länger als 8 Zeichen oder anderen Nicht-Standardwerten, wie Datumsangaben und Zahlen mit Kommas: Hans Jutta Uwe Jens Müller Schreiner Schulz Pfluger Walldorf Mannheim Nussloch Heidelberg Spalten + PAD 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 14 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Werte in externen Dateien Anstelle der Anweisung Datalines verwendet man dann INFILE vor Input Zeit für die Data kurs.klasse; Infile 'd:\klasse.dat'; Input name $ alter; Run; Übungen zu Kapitel 2 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 Themen 1. 2. Infile 'd:\text.dat‘ Pad; Infile 'd:\text.dat‘ Missover; 3. 4. 5. Allgemein Infile ‘Pfad\Datei‘ <Missover> <Pad>; 6. 7. 8. 9. 10. C. Ortseifen Die Oberfläche von SAS Version 9.1 (8.2) SAS-Tabellen: Datenschritt I SAS-Basisprozeduren Print, Sort Statistik am Beispiel von Means und Ttest Tabellen verknüpfen: Datenschritt II Schleifenprogrammierung: Datenschritt III Weitere SAS/Base Prozeduren: Transpose, Tabulate … Output Delivery System (Ods) SAS-Makroprogrammierung Weitere SAS Prozeduren: Fsedit, Insight … 15 URZ-Blockkurs SS 2005 Prozedur Print Darstellen der Datenwerte einer SAS-Tabelle im Ausgabefenster SAS - Einführung in die Programmierung Anweisung Var Der einfachste Aufruf Proc Print Data=sasuser.adressen; Run; Proc Print Data=sasuser.adressen; Var name alter; 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 Sollen nicht alle Variablen ausgegeben oder die Variablen in anderer Reihenfolge dargestellt werden, verwendet man die Anweisung Var. Variablenbereiche Benennung einzelner Variablen: Var name alter; mit geänderter Reihenfolge: Var wohnort alter name; Gleicher Präfix und numerische Endung: Variablenbereiche innerhalb der Datei: Var tag1-tag5; Var name--alter; 16 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Variablen ausschließen - Drop= Sollen alle Variablen bis auf wenige dargestellt werden, verwendet man die Dateioption Drop=: Proc Print Data=sasuser.adressen(Drop=sex); Run; Firstobs=, Obs= Proc Print Data=sasuser.adressen(Firstobs=11 Obs=15); 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! Die Dateioptionen folgen in Klammern dem Tabellennamen: Firstobs= Nummer der ersten Beobachtung, die verarbeitet wird Obs= Nummer der letzten Beobachtung, die verarbeitet wird Firstobs <= 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. 17 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Logische Bedingungen Numerische Variablen Textvariablen Weitere Operatoren Between-And Where x between 1 and 5; Contains Where a contains 'Dr.'; Is null|Is missing Like Where wert=1; Where wert>1; 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 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; C. Ortseifen Genaue Hinweise und Beispiele im SAS-Anwenderhandbuch im Netz unter dem Stichwort Selektion Andere Reihenfolge der Fälle 1. 2. 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; 18 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Sortierung in neuer Tabelle 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. 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 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; 19 URZ-Blockkurs SS 2005 Häufiger Fehler mit By SAS - Einführung in die Programmierung Beispiele ERROR: Data Set ...... is not sorted in ascending sequence. The current by-group has Min. = ... and the next by-group has Min. = ... Title1 ’Experiment von Fisher’; Title2 ’Vergleich von 3 Irisarten'; Footnote ’Umfang: je 50 Blüten’; Abhilfe: Einen Prozedur SORT-Schritt vorneweg ausführen. Proc Print Data=kurs.iris; Run; 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. 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 ; 20 URZ-Blockkurs SS 2005 SAS - Einführung in die 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) Ausgabe des Datums Date Nodate Anzeige der Seitennummern Number / Nonumber Verändern der Seitennummer Pageno=n Options-Fenster: Tools > Options > System .. Anweisung Options Options Nodate Nonumber; Options Nodate Pageno=5; Titel- und Fußzeilen Optionen (z.B. Seitennumerierung) Einige globale Einstellungen C. Ortseifen auf zwei Arten Nachträgliche Änderung von Einstellungen durch den Benutzer ist möglich durch Änderung der Einstellungen Options ist eine globale Anweisung. SAS System Options Kommando Option Menü Tools > Options > System … 21 URZ-Blockkurs SS 2005 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 SAS - Einführung in die 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 ...; 22 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Literatur Prozeduren Print und Sort sind Bestandteil von SAS Base: Themen Die Oberfläche von SAS Version 9.1 (8.2) SAS-Tabellen: Datenschritt I SAS-Basisprozeduren Print, Sort Statistik am Beispiel von Means und Ttest Tabellen verknüpfen: Datenschritt II Schleifenprogrammierung: Datenschritt III Weitere SAS/Base Prozeduren: Transpose, Tabulate … Output Delivery System (Ods) SAS-Makroprogrammierung Weitere SAS Prozeduren: Fsedit, Insight … 1. 2. 3. SAS Procedures Guide 4. 5. Globale Anweisungen und Dateioptionen 6. 7. SAS Language Guide 8. 9. 10. Prozedur Means Zeit für die Übungen zu Kapitel 3 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 ... 23 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Einfachster Aufruf Anweisung Class 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 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. und stellt diese im Ausgabefenster in Form einer Tabelle dar. Anweisung Var Anweisung Output 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; Ü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. 24 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Mit Output erzeugte Tabelle Prozedur Ttest iris_sl hat Vergleich von zwei Gruppen hinsichtlich deren - 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. Erwartungswerte t-Test für gleiche und ungleiche Varianzen für unabhängige u. abhängige Gruppen Varianzen F-Test Zur Statistik Proc Means Data=urz.iris Noprint; Var sl; Output out=iris_sl; Run; Wie lautet die Null- und wie die Alternativhypothese für den t-Test? Wie wird der Test durchgeführt? Und lautet die Testentscheidung? Das Ergebnis ist die neue SAS-Tabelle iris_sl. Und jetzt das ganze für den F-Test! 25 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Beispiel: Unabhängiger t-Test Teststatistik T wo T = s 2p = | x1 − x 2 | ~ t n1 + n 2 − 2 sp 1 + 1 n1 n2 ( n 1 − 1) s 12 + ( n 2 − 1 ) s 22 n1 + n 2 − 2 Statistics Variable CALCIUM CALCIUM CALCIUM PILLE Testentscheidung: Wenn |T|>tn1+n2-2,1-α/2 ist, wird H0 verworfen. Einfachster Aufruf N 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) xi Mittelwerte, si Standardabweichungen, ni Fälle Kennwerte The TTEST Procedure 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? Proc Ttest Data=urz.blutbild; Class pille; Var calcium; Run; Wenn Pr>|t| kleiner gleich dem vorgegebenen Signifikanzniveau α ist, kann die Nullhypothese H0 abgelehnt werden. Wenn Pr>|t| ≤ α, dann H0 ablehnen. C. Ortseifen 26 URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung Abhängiger t-Test Zusammenfassung der Syntax Proc Means Data=SAS-Tabelle <Noprint>; <Var Variable|Variablenliste;> <Output out=SAS-Tabelle;> <Class Variable|Variablenliste;> Proc Ttest Data=us_sozialerhebung_91; Paired mausbild*vausbild; Run; Proc Ttest Data=SAS-Tabelle; Class Variable|Variablenliste; <Var Variable|Variablenliste;> <Paired Variable1*Variable2;> <Where Logische Bedingung;> <By Variable|Variablenliste;> The TTEST Procedure Kennwerte Statistics Difference mausbild - vausbild N 974 Lower CL Mean Mean -0.189 0.0072 Upper CL Lower CL Mean Std Dev Std Dev 0.2031 2.9825 3.115 Upper CL Std Std Dev Err 3.2598 0.0998 t-Test mit Freiheitsgrad, Teststatistik, Irrtumswahrscheinlichkeit (=Ws. unter Nullhypothese) T-Tests Difference mausbild - vausbild C. Ortseifen DF t Value Pr > |t| 973 0.07 0.9426 27