C. Ortseifen 1. Themen. SAS/Base Prozeduren. 7.1 Prozedur Datasets. Metainformationen



Ähnliche Dokumente
Schritt für Schritt-Einführung in die Prozedur Tabulate

Makros sind Code-Generatoren Ergebnis ist SAS/BASE Programm (bzw. ein Teil davon)

Output Delivery System ODS. Die Prozedur Template. Das ODS-Konzept. Grischa Pfister Seit 1993 SAS aktiv 1999 Info Ware seit 04/2003 icasus

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

SAS für Excel-Anwender

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

GEONET Anleitung für Web-Autoren

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

GITS Steckbriefe Tutorial

Bedingungen. Bedingungen. Bedingungen

ecaros2 - Accountmanager

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

12. Dokumente Speichern und Drucken

Informationen zu den regionalen Startseiten

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar CAP-News 40

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Layoutmodelle. Steffen Schwientek Große Klostergasse Friedberg schwientek@web.de Web :schlaukopp.org

Schulung Marketing Engine Thema : Einrichtung der App

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

5 Zweisprachige Seiten

HTML Programmierung. Aufgaben

Installations- und Bedienungsanleitung für Macro Excel_Table Version 10

Text Formatierung in Excel

Excel Auswertungen in XAuftrag / XFibu

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Willkommen. Benutzerhandbuch für die OECD Online-Bibliothek

ecall sms & fax-portal

Synchronisations- Assistent

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Ermittlung der übereinstimmenden Variablen (-Namen) zweier Datasets

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Installation der SAS Foundation Software auf Windows

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September


FRILO-Aktuell Ausgabe 2/2013

CodeSaver. Vorwort. Seite 1 von 6

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Standard-Formatvorlagen in WORD und WRITER

Scanning- Reservationslösung Gemeinden Benutzerhandbuch

Einstellen der Makrosicherheit in Microsoft Word

Einführung in die SAS Makro Sprache

Zwischenablage (Bilder, Texte,...)

Aufklappelemente anlegen

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Erstellen von x-y-diagrammen in OpenOffice.calc

Kapitel 3 Frames Seite 1

Anleitung für die Formularbearbeitung

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

F. Keim (kiz, Universität Ulm) SOGo Kurzreferenz 1

Der neue persönliche Bereich/die CommSy-Leiste

teamsync Kurzanleitung

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

Webalizer HOWTO. Stand:

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

Feiertage in Marvin hinterlegen

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Technical Note 0606 ewon

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

Online - Zusammenarbeit bei Google

5. Übung: PHP-Grundlagen

SCHNELLEINSTIEG FÜR HOSTED EXCHANGE BASIC / PREMIUM

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

HTML5 HOCKEYSTICK EXPANDABLE BANNER v1.0

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Effektives Arbeiten mit SAS

WEBSEITEN ENTWICKELN MIT ASP.NET

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Arbeiten mit UMLed und Delphi

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Anleitung zum LPI ATP Portal

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

SAS Metadatenmanagement Reporting und Analyse

Anleitung zur Anmeldung beim EPA zur Nutzung von OPS 3.1

Benutzerhandbuch - Elterliche Kontrolle

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Ausgabe von Grafiken in editierfähige EMF-Formate unter SAS 9.3 und SAS Notwendige Änderungen in der SAS Registry

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Informationen zum neuen Studmail häufige Fragen

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

COMPUTERIA VOM SERIENBRIEFE UND ETIKETTENDRUCK

Format- oder Stilvorlagen

NMP-Verlag Verlag für Nationalökonomie, Management und Politikberatung

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

<script type="text/javascript"> <! <%= page(page.searchsuggestionsscript) %> // > </script>

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

WAWI Preiswartung Systemschulung für Einsteiger

Transkript:

Themen SAS/Base Prozeduren 1. Die Oberfläche von SAS Version 9.1 (8.2) 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung Datenmanagement Datasets Append Copy Contents Catalog Compare Format Sql Transpose Einstellungen Options Liniengrafik Chart Plot Timeplot Listenberichte Print / Printto Tabulate Report Im- und Export Import / Export Cimport / Cport Statistik Rank Standard Sort Summary Corr Freq Means Univariate 7.1 Prozedur Datasets Oder: Wie schafft man sich schnell einen Überblick über neue SAS-Tabellen? Wie organisiert man SAS-Tabellen? Wie schützt man diese gegen fremden Zugriff? Metainformationen... über SAS-Tabellen, d.h. Informationen zu Struktur und Inhalt, liefern: SAS Explorer, Libraries-Fenster (rechtes Mausmenü, Viewtable) Prozedur Datasets mit Anweisung Contents und Optionen Data= und Out= Prozedur Contents C. Ortseifen 1

Unterschiede SAS Explorer und Libraries-Fenster: Interaktiv einsetzbar liefert Strukturinformation und die Datenwerte zu einer SAS-Tabelle Prozedur Datasets und Contents: Programmierbar, im Batchmodus einsetzbar liefert Strukturinformation, die auch in neue Tabelle überführt werden kann; liefert nicht die Datenwerte Datenmanagement mit der Prozedur Datasets Inhalt anzeigen und in Tabelle überführen: Anweisung Contents SAS Tabellen umbenennen: Change Namen zweier SAS Tabellen austauschen: Exchange Variablen umbenennen, Labels, Informate und Formate setzen: Modify Einzelne SAS Tabellen (Delete ) und ganze Bibliotheken (Kill) löschen Programmbeispiel Proc Datasets Lib=d; Contents Data=iris Out=work.infos; run; Change iris=blume; run; Exchange class=class2; run; Modify blume; Label sl='länge der Sepalen'; Rename sl=lenkelch; Delete blume; QUIT; run; run; Bemerkungen Formate und Labels können auch interaktiv geändert werden. (Libraries-Fenster, Properties > Columns) Und SAS Tabellen können außerhalb vom SAS System umbenannt und gelöscht werden, z.b. mit dem Explorer. Proc Datasets Lib=d Kill;Quit; C. Ortseifen 2

Verknüpfen von SAS-Tabellen Klassischer Ansatz des "Anfängers": Datenschritt mit Anweisung SET: Data gesamt; Set ds1 ds2; Aber: Bei großen Datenmengen ist dies ineffizient! Besser: Prozedur Datasets mit der Anweisung Append: Proc Datasets Lib=work; Append Base=ds1 Data=ds2; Quit; Die Basistabelle (Base=) stellt Referenz für die Verknüpfung dar. Voraussetzung: Identische Strukturen, sonst: Abbruch mit ERROR-Meldung. Abhilfe schafft z.t. Option FORCE: Proc Datasets Lib=work Force; SAS Tabellen kopieren Datasets mit Anweisung Copy Erzeugung von Transportfile (XPORT) Nicht ganz einfache Syntax Proc Datasets Lib=work; Copy Out=sasuser <Mt=DATA>; Select eins zwei; Quit; Nicht innerhalb einer Bibliothek!!! Ausweg Prozedur DATASETS mit Anweisung APPEND - was aber nicht sehr intuitiv ist Proc Datasets Lib=work; Append Base=kopie_klein Data=klein; Quit; Oder: Kopieren über das Betriebssystem (mit Explorer oder Kommando) C. Ortseifen 3

Literatur zu Proc Datasets Online Hilfe: Kommando help datasets Ortseifen, Pfister, Stürzl: Tipps & Tricks Nützliche Lösungen aus der Praxis. Proceedings zur 4. KSFE 2000 in Gießen. 7.2 Prozedur Transpose Auch: Transponieren, Kippen der Tabelle tauscht die Rollen von Spalten und Zeilen Proc Transpose Data=a Out=b; Variablen _name_, col1, col2... Für komplexere Daten: By, Var Anweisung By: Benennung der Variablen, die nicht transponiert werden sollen Anweisung Var: Transponiere alle genannte Variablen Option Prefix: Präfix für die transponierten Variablen Option Name: Name für die Variable mit den ursprünglichen Variablennamen 7.3 Prozedur Tabulate berechnet statistische Kennwerte wie andere Prozeduren auch. stellt diese in Form einer Tabelle dar (darin liegt die Stärke). ist schwer zu erlernen - soll nach dieser Einführung nicht mehr zutreffen. C. Ortseifen 4

Prdsale.Sas7bdat Verkaufszahlen (Tatsächlich und Erwartete) von Möbeln für verschiedene Produktgruppen für drei Länder unterteilt in zwei Regionen und über einen Zeitraum von zwei Jahren. Tabulate Schritt für Schritt 1. Eindimensionale Tabellen 2. Zweidimensionale Tabellen 3. Dreidimensionale Tabellen 4. Verschönerung der Tabellen Eindimensionale Tabellen Der Proc Tabulate Schritt benötigt drei Anweisungen: Proc Tabulate Data=d.prdsale; Table actual; Var actual; * (oder Class); Anweisung Table Anweisung Table beschreibt, welche Variablen verwendet werden und wie diese angezeigt werden. Wird nur eine Variable verwendet, genügt die Anweisung Table actual; C. Ortseifen 5

Anweisung VAR Ohne die Anweisung Var (oder Class) erkennt SAS nicht, ob actual eine Analysevariable ist (die verwendet würde, um Statistiken zu berechnen) oder eine Klassifizierungsvariable, um Spalten oder Zeilen der Tabelle zu definieren. Var actual; Programmschritt 1 Proc Tabulate Data=d.prdsale; Table actual; Var actual; * (oder Class); Eine Spalte Kopf: Actual Sales Statistik: Sum Zelle: Summe der aktuelle Verkaufszahlen ƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒ Sum ƒƒƒƒƒƒƒƒƒƒƒƒ 730337.00 ŠƒƒƒƒƒƒƒƒƒƒƒƒŒ Ändern der Statistik Summenbildung ist die Statistik, die berechnet wird, wenn keine explizit genannt wird. Andere Statistiken erhält man durch Änderung der Anweisung Table Table actual*mean; * ist ein Tabulate-Operator, der den Variablennamen mit der Statistik verknüpft (rechts davon). Programmschritt 2 Proc Tabulate Data=d.prdsale; Table actual*mean; Var actual; Statistik: Mean Zelle: Mittlere aktuelle Verkaufszahlen ƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒ Mean ƒƒƒƒƒƒƒƒƒƒƒƒ 507.18 ŠƒƒƒƒƒƒƒƒƒƒƒƒŒ C. Ortseifen 6

Hinzufügen einer weiteren Statistik Zusätzlich zum Mittelwert soll auch die Anzahl der Beobachtungen ausgegeben werden: Änderung in der Anweisung Table. Programmschritt 3 ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Proc Tabulate Data=d.prdsale; Actual Sales Actual Sales Var actual; ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ N Mean Table actual*n actual*mean; ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 1440.00 507.18 Šƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Mit Klammern: ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Proc Tabulate Data=d.prdsale; Actual Sales Var actual; ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ N Mean Table actual*(n Mean); ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 1440.00 507.18 Šƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Klassifizierungsvariable hinzufügen Alles bisherige kann auch mit Proc Means erledigt werden. Jetzt: Kennwerte getrennt für Untergruppen berechnen. Anweisung Class identifiziert die Klassifizierungsvariable. Anweisung Table und *-Operator teilt der Proc Tabulate mit, wie die Untergruppen dargestellt werden. Programmschritt 4 Proc Tabulate Data=d.prdsale; Class country; Var actual; Table actual*mean*country; ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 514.56 512.50 494.48 Šƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ C. Ortseifen 7

Zweidimensionale Tabellen Interessanter werden die Tabellen, wenn eine 2. Dimension eingetragen wird, d.h. die Tabelle mehrere Spalten und Zeilen hat. Die 2. Dimension wird definiert, indem die Variable in der Anweisung Table durch Komma vom Rest abgetrennt wird. Programmschritt 5 Proc Tabulate Data=d.prdsale; Class prodtype; Var actual; Table prodtype, actual*(n Mean); ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ N Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 576.00 504.56 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 864.00 508.93 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Bemerkungen 1. Steht die Klassifizierungsvariable links von der Analysevariable, erscheint sie in den Zeilen, rechts dagegen in den Spalten. 2. Eine 2-dimensionale Tabelle muss mindestens eine Klassifizierungs-variable enthalten. Klassifizierung in zwei Dimensionen ist neu in Bezug auf Proc Means. Zwei Klassifizierungsvariablen und beide in der Anweisung Table aufgeführt. Programmschritt 6 Proc Tabulate Data=d.prdsale; Class country prodtype; Var actual; Table prodtype,actual*country*mean; C. Ortseifen 8

Ergebnis von Programmschritt 6 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Mean Mean Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 509.71 527.05 476.91 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 517.80 502.79 506.19 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Die dritte Klassifizierungsvariable Programmschritt 7 Proc Tabulate Data=d.prdsale; Class country prodtype year; Var actual; Table prodtype year, actual*country*mean; Ergebnis von Programmschritt 7 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Mean Mean Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 509.71 527.05 476.91 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 517.80 502.79 506.19 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Year ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1993 504.25 530.85 504.39 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 1994 524.88 494.14 484.57 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Geschachtelte Untergruppen Im Programmschritt 7 wurden lediglich zwei Tabellen untereinander gehängt. Jetzt werden die Tabellen verschachtelt, d.h. wir untersuchen, wie sich die Verlaufszahlen für die beiden Produkttypen mit den Jahren verändern. C. Ortseifen 9

Programmschritt 8 Proc Tabulate Data=d.prdsale; Class country prodtype year; Var actual; Table prodtype*year, actual*country*mean; ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Mean Mean Mean ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product Year type ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒ FURNITURE 1993 505.88 565.06 480.05 ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 1994 513.54 489.04 473.77 ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 1993 503.17 508.04 520.61 ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ 1994 532.43 497.54 491.76 Šƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Spalten- und Zeilensummen Komplexe Tabellen werden übersichtlicher, wenn Zeilen- und Spaltensummen angegeben werden. Interne Klassifizierungsvariable All. Programmschritt 9: Proc Tabulate Data=d.prdsale; Class country prodtype; Var actual; Table prodtype,(country All)*N; Ergebnis von Programmschritt 9 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. All ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ N N N N ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 192.00 192.00 192.00 576.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 288.00 288.00 288.00 864.00 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ C. Ortseifen 10

Dreidimensionale Tabellen sind keine Würfel, sondern mehrere zweidimensionale Tabellen. 1 Dim.: Spalten 2 Dim.: Zeilen und Spalten 3 Dim.: Seiten, Zeilen und Spalten Vorgehen: Zuerst zweidimensionale Tabelle festlegen, dann dritte Dimension hinzufügen Programmschritt 10 Proc Tabulate Data=d.prdsale; Class country prodtype year; Var actual; Table year, prodtype, (country All)*actual*Mean; Ergebnis von Programmschritt 10 Tabellenkosmetik Zwei Tabellen für die Jahre 1993 und 1994. Year 1993 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Country ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. All ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Actual Sales Actual Sales Actual Sales Actual Sales ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Mean Mean Mean Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 505.88 565.06 480.05 517.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 503.17 508.04 520.61 510.61 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Spalten- und Zeilenbeschriftungen Titel (Box) Zellenbreite (Formate) C. Ortseifen 11

Spalten- und Zeilenbeschriftungen Text ersetzen: Variable= Text Zeile/Spalte entfernen: Variable= Programmschritt 11 Proc Tabulate Data=d.prdsale; Class country prodtype; Var actual; Table prodtype, (country=' ' All='Total')*actual=' '*Mean=' '; Ergebnis von Programmschritt 11 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ CANADA GERMANY U.S.A. Total ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 509.71 527.05 476.91 504.56 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 517.80 502.79 506.19 508.93 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ Titel: Option Box= Die leere linke obere Zelle der Tabelle läßt sich mithilfe der Option Box= beschriften. Programmschritt 12: Proc Tabulate Data=d.prdsale; Class country prodtype; Var actual; Table prodtype, (country=' ' All='Total')*actual=' '*Mean=' ' / Box='Average Actual Sales'; Ergebnis von Programmschritt 12 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Average Actual Sales CANADA GERMANY U.S.A. Total ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE 509.71 527.05 476.91 504.56 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ OFFICE 517.80 502.79 506.19 508.93 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒœ C. Ortseifen 12

Formate für die Zellenwerte Die Zellenwerte können mit der Option Format= in der Anweisung Proc Tabulate formatiert werden. Damit wird auch die Breite der Spalte festgelegt. Programmschritt 13 Proc Tabulate Data=d.prdsale Format=Dollar10.; Class country prodtype; Var actual; Table prodtype, (country=' ' All='Total')*actual=' '*Mean=' ' / Box='Average Actual Sales'; Ergebnis von Programmschritt 13 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ Average Actual Sales CANADA GERMANY U.S.A. Total ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒ Product type ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ FURNITURE $510 $527 $477 $505 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒ OFFICE $518 $503 $506 $509 Šƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒœ Literatur zu Proc Tabulate C. Ortseifen: Einführung in die Prozedur Tabulate. Proceedingsband zur 8. KSFE. Shaker-Verlag, Aachen, 2004. Lauren Haworth: Anyone Can Learn Proc Tabulate, SUGI27, Beginning Tutorial. http://www2.sas.com/ proceedings/sugi27/proceed27.pdf Online Doku von SAS (Kommando help tabulate und Concepts liefert bspw. die möglichen Statistiken.) C. Ortseifen 13

Themen 1. Die Oberfläche von SAS Version 9.1 (8.2) 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung Export von Ergebnissen mit ODS ODS = Output Delivery System Verfügbar im SAS System seit Version 8 Export nach Word: ODS-Kanal RTF Internet: ODS-Kanal HTML Acrobat Reader: ODS-Kanal PDF Excel, Access: ODS-Kanäle HTML, XML, 8. ODS - Inhalt 8.1 Konzept 8.2 Grundlegende Beispiele 8.3 Ausgaben in Excel öffnen 8.4 Ausgabe-Objekte 8.5 Ausgabekanal Output 8.6 Seitenkontrolle beim Kanal Rtf, HTML 8.7 Ods-Styles 8.8 Style und Table Templates 8.1 Konzept von ODS C. Ortseifen 14

SAS-Ausgaben mit ODS Volle Verfügbarkeit (WYSIWYG) Alles, was im Ausgabe-Fenster erscheint, steht im ODS zur Verfügung, d.h. alle Informationen aller Prozeduren Parallelisierung der Ausgabe Ergebnisse werden an viele Kanäle gleichzeitig geliefert Gliederung der Ergebnisse Prozedur-Ausgabe wird in Objekte zerlegt, die einzeln ansprechbar sind ODS Ausgabe-Kanäle Listing Ausgabe-Fenster Output SAS-Tabelle HTML Dokument für WWW PDF Dokument für Acrobat Reader RTF Dokument für Microsoft Word PRINTER Systemdrucker PS Postscript CSVALL Komma-separierte Dateien LateX Dokument für Latex XML Dokument im XML-Format DOCUMENT neutrale Form zum Weiterverarbeiten Funktionsweise des ODS ODS-Syntax Daten- Komponente Table Template Output-Objekt Kanal Listing Output HTML RTF PDF PRINTER... Style Template Listing SAS-Tabelle HTML Dokument RTF Dokument PDF Dokument Ausdruck Globale Anweisungen Voll batch-fähig Schalterprinzip Kanal wird geöffnet Ausgabe von Prozeduren/Datenschritten Kanal wird geschlossen... Ergebnis ist betrachtbar C. Ortseifen 15

Kanal öffnen und schließen Öffnen eines Kanals: Ods Listing; Ods Html File= ; Ods Output output-object=sas-tabelle; Schließen eines Kanals: Ods kanal Close; Ods _All_ Close; Standard (Default): Listing geöffnet die anderen geschlossen 8.2 Grundlegende Beispiele Ods Listing Ein-/Ausschalten Ods Listing;... Ods Listing Close; Ods Rtf Ein-/Ausschalten Ods Rtf File=fileref "pfad";... Ods Rtf Close; Ods01.sas Ods02.sas C. Ortseifen 16

Result Viewer Rtf-Dateien werden standardmäßig mit dem SAS-internen Result Viewer angezeigt. Über Tools > Options > Preferences und Register Results: Results options kann ein externer Browser eingetragen werden und wenn man View results as they are generated deaktiviert, werden die Ergebnisse nicht angezeigt. Ods Csv Ein-/Ausschalten Ods Csv File=fileref "pfad" Options(Delimiter=";") ;... Ods Csv Close; Ods03.sas (Es gibt auch Csvall, Csvbyline.) Ods Html Ein-/Ausschalten Ods Html File=fileref "pfad";... Ods Html Close; Mehrere Kanäle gleichzeitig Unterschiedliche Kanäle Ods Pdf File = Fileref "pfad"; Ods Html File = Fileref "pfad";... Ods _All_ Close Ods04.sas Ods05.sas C. Ortseifen 17

Mehrere Kanäle gleichzeitig (2) Gleiche Kanäle Ods Rtf (Id=1) File=Fileref "pfad"; Ods Rtf (Id=2) File=Fileref "pfad";... Ods Rtf (1) close;... Ods Rtf (2) close Ods06.sas Ods Grundeinstellungen Tools > Options > Preferences Register Results Ods Listing; Ergebnisse als HTML Style = default Web-Browser Umstellen unter Register Web Direkte Anzeige der Ergebnisse Excel Dateien mit Ods Html 8.3 Ausgaben in Excel öffnen Die Dateien sind von Excel lesbar, (aber keine nativen Excel Dateien). Benennt man die Datei mit Endung.xls oder.csv, können sie aufgrund der Registrierung direkt mit Excel geöffnet werden. Vorteil: Formatierung bleibt in Excel erhalten. Nachteil: Dateien können sehr groß werden, die die Formatierungen Bestandteil der Datei sind (Ausweg: Stylesheet-Option). C. Ortseifen 18

Export nach Excel Export nach Excel Ods Html File="test.xls";... Ods Html Close; Ods Html3 ods html3 file="toxls_html3.html" style=sasweb; title 'Erster Report mit Ods Html3'; proc report data=adressen nowd; run; title 'Zum zweiten'; proc report data=adressen nowd; run; ods html3 close; Ergebnis in Excel 1. Zeile ist leer Titel bestimmt die Breite der 1. Spalte Prozedurausgaben in einem Arbeitsblatt. Ods Html ods html file="toxls_html.html" style=sasweb; title 'Erster Report mit Ods Html3'; proc report data=adressen nowd; run; title 'Zum zweiten'; proc report data=adressen nowd; run; ods html close; C. Ortseifen 19

Ergebnis von Ods Html Report beginnt in der 1. Zeile. Ods Tagsets.MSOffice2K Datei kann mit Office 2000 und höher geöffnet werden: ods tagsets.msoffice2k file="toxls_mso.html" style=sasweb; title 'Erster Report mit Ods tagsets.msoffice2k'; proc report data=adressen nowd; run; title 'Zum zweiten'; proc report data=adressen nowd; run; ods tagsets.msoffice2k close; Formatierungen aus SAS bleiben erhalten. Ods Tagsets.ExcelXP Datei kann mit Office 2002 und höher geöffnet werden. Datei enthält spezielle Microsoft Spreadsheet Markup konforme Tags. ods tagsets.excelxp file="toxls_mso.html" style=sasweb;... ods tagsets.excelxp close; 8.4 Ausgabe-Objekte Jede Prozedurausgabe wird in separatem Arbeitsblatt abgelegt. C. Ortseifen 20

Ausgabe-Objekte (1) Ods teilt Prozedur-Output in Objekte ein Jedes Objekt ist identifizierbar Jedes Objekt ist einzeln ansprechbar Anzahl der Ausgabe-Objekte ist abhängig von Prozedur Prozedur-Optionen By-Gruppen Ausgabe-Objekte (2) Identifizieren von Ausgabe-Objekten Ods Trace On;... Ods Trace Off; Inhalt des Trace-Satzes Name des Ausgabe-Objektes Label des Ausgabe-Objektes Name des verwendeten Table Templates Pfad des Ausgabe-Objekts Ods07.sas Results-Fenster zeigt Ausgabe-Objekte an Auswahl von Ausgabe-Objekten Select-/Exclude-Liste Enthält Auswahl von Ausgabe-Objekten Eine globale Liste Eine Liste für jeden aktiven Kanal Anzeigen der Select-/Exclude-Liste Ods <Kanal> Show; Dabei muss der Kanal aktiv sein Ods08.sas Auswahl Ausgabe-Objekte (2) Ods <Kanal> Select ods-obj <ods-obj...>; Ods <Kanal> Exclude ods-obj <ods-obj...>; Ods <Kanal> Select Exclude All None; Dabei kann ods-obj sein: Name aus Trace-Satz Pfad aus Trace-Satz Label aus Trace-Satz Mischung aus Label und Pfad Ods09.sas C. Ortseifen 21

Voreinstellungen der Auswahllisten Globale Select-/Exclude-Liste Select all Alle Bericht-Kanäle Select all Output-Kanal Exclude all Ods10.sas Gültigkeit der Auswahl nur für die nachfolgende Prozedur, oder: Option persist macht Auswahl eines Objektes dauerhaft muss mit neuer Anweisung überschrieben werden Ods <Kanal> Select Exclude ods-objekt (persist);... Ods <Kanal> Select All; Ods11.sas Ods Output 8.5 Der Ausgabe-Kanal Output Ein-/Ausschalten Ods Output ods-objekt=sas-tabelle...;... Ods Output Close; Ods12.sas C. Ortseifen 22

Verarbeitung von By-Gruppen Standardverhalten: alle By-Gruppen in eine Tabelle Option Match_all: Ods Output ods-objekt(match_all<=mvar>) = SAS-Tabelle; jede By-Gruppe in eigene Tabelle automatische Benennung mvar enthält Namen der erzeugten Tabellen Ods13.sas Verarbeiten mehrerer Prozeduren Optionen Match_all + Persist Ods Output ods-objekt(match_all <=mvar> <Persist=Run Proc>) = SAS-Tabelle;... Ods Output Close; erhält Benennungsschema. Beispiel Ods Output Moments=Momente; Proc Univariate Data=kurs.iris; Var sl sw; NOTE: The Data Set WORK.MOMENTE has 12 observations and 7 variables. NOTE: There were 150 observations read from the dataset KURS.IRIS. 8.6 Seitenkontrolle bei Rtf, HTML (sowie Pdf und Printer) C. Ortseifen 23

Grundeinstellung Jede Prozedur beginnt eine neue Seite. Innerhalb der Prozedur selbst gibt es keine Eingriffsmöglichkeit. Seitenumbrüche steuern: Option Startpage= Ods Kanal Startpage=Off; Schaltet automatischen Seitenumbruch nach Prozedur aus Ods Kanal Startpage=On; Schaltet automatischen Seitenumbruch nach Prozedur ein Ods Kanal Startpage=Now; In Verbindung mit Ods Startpage Off erzwingt Seitenumbruch an bestimmter Stelle Ods14.sas Optionen für die Seitengestaltung Title Footnote Titel Fußnoten [no]center linksbündig [no]number keine Seitenzahlen [no]date kein Datum Orientation = portrait Hochformat landscape Querformat papersize = A4 (x,y) Seitengröße [left right top bottom]margin=n Randeinstellungen Funktionieren aber nicht immer mit allen Kanälen... Ods15.sas Weitere Optionen Ods Optionen für die Seitengestaltung Notoc (Pdf) Kein Inhaltsverzeichnis BodyTitle (Rtf) Titel im Text Für Title & Footnote, ähnlich wie SAS/GRAPH Font = Schriftart Height = Schriftgröße Color = Farbe Justification = Ausrichtung Ods16.sas C. Ortseifen 24

Html Kanal - Frameset Konzept in HTML Zeigt gleichzeitig mehrere HTML-Dateien an Unterteilt die Anzeige in verschiedene Bereiche (Frames) Mit Ods möglich Inhaltsverzeichnis Seitenverzeichnis Hauptseite HTML Kanal erzeugt bis zu vier Files: File= / eigentliche Prozedurausgabe Body= (Table-Tags, Img-Tags) Contents= Inhaltsangabe mit Links zu einzelnen Output Objekten in Body Page= Links zu einzelnen Seiten in Body Frame= Web-Seite, die alle erzeugten Files anzeigt Beispiel Ods Html File='body.htm' Contents='contents.htm' Frame='frame.htm'; Proc Means Data=kurs.iris; Ods Html Close; HTML mit Styles Ods Html File='body.htm' Contents='contents.htm' Frame='frame.htm' Style=Styles.Beige; Proc... Ods Html Close; Styles sind Elemente mit Attributen für Farbe, Schriftart etc. für die HTML-Seiten. C. Ortseifen 25

ODS Styles 8.7 ODS Styles Abstrakte Beschreibung von ODS-Elementen Dokument Inhaltsverzeichnis Seitenverzeichnis Layoutangaben Farben Schriftarten (Größe, Gestaltung) Tabellengestaltung (Abstände, Ränder) Beschriftung (z.b. des Inhaltsverzeichnisses) Verwendete Styles Mitgelieferte Styles HTML: RTF: PDF: Default Rtf Printer Default Brick Minimal BarrettsBlue D3d StatDoc SasWeb Einstellungen: Tools > Options > Preferences > Register Results Verwendung von Styles: Ods Kanal Style=name; Ods17.sas C. Ortseifen 26

Liste der verfügbaren Styles Proc Template; List styles; 8.8 Table & Style Templates Templates Table Template Grund-Layout Aufteilung in Spalten Spaltenbeschriftung Zahlenformatierung Kann auch Style-Anweisungen enthalten Style Template Layout der Elemente Abhängig vom Kanal Objekt-orientierter Ansatz Verwaltung von Table und Style Templates Hierarchische Organisation in sogenannten "itemstore"s Default: Sashelp.tmplmst (schreibgeschützt) Open Source, d.h. Definition ist einsehbar und auch kopierbar Der Ods Template Viewer (Kommando odstemplate) erlaubt die Betrachtung der Templates. Eigene Itemstores können mit der Prozedur Template angelegt werden. Z.B. Sasuser.Templat C. Ortseifen 27

Verwaltung (2): Ods Suchpfad Ods Path Show; Ods Path libref.itemstore(modus); * modus = read update write; Ods Path append prepend remove libref.itemstore(modus); Table Templates verändern Beispiel: Proc Univariate Beschriftung "Extreme Observations" soll eingedeutscht werden. Template wird in sasuser.templat gespeichert. Ods18.sas Style Templates anpassen Neuen Style ableiten und Gewünschte Änderungen vornehmen Aufbau des Styles Default Definition von Schriftarten Definition von Farben Definition der einzelnen Elemente Hierarchie wird in der OnlineDoc beschrieben: SAS Products > Base SAS > Output Delivery System > The TEMPLATE Procedure Ods19.sas Änderungen im Contents Files 1. Table of Contents Label - Style-Element ContentTitle 2. The XXX Procedure Label - Style-Element ContentProcName - Anweisung Ods Proclabel 3. Label für jedes Output Objekt abhängig von Prozedur Option Contents= Option Description= Option Contents_Label C. Ortseifen 28

1. Table of Contents Anlegen eines neuen Styles mit Proc Template: Proc Template; Define Style Styles.ContentsChanges; Parent=styles.default; Style ContentTitle From ContentTitle / Pretext = 'Inhaltsverzeichnis'; End; 2. The XXX Procedure Style-Element ContentProcName: Proc Template; Define Style styles.contentschanges; Parent=styles.default; Style ContentProcName From ContentProcName / Pretext = 'Ergebnis der Prozedur ' Posttext= '.'; End; The XXX Procedure (2) Anweisung Ods Proclabel Ods Proclabel 'UNIVARIATE ist mehr!'; Proc Univariate Data=kurs.iris; Var sl; 3. Label für einzelne OOs Proc Tabulate, Print, Freq: Option Contents der Anweisung Proc SAS/GRAPH Prozeduren: Option Description Andere Prozeduren: Option Contents_Label von Proc Template C. Ortseifen 29

Proc Print Data=kurs.iris Contents='Fishers Iris-Daten'; Proc Gplot Data=kurs.iris; Plot sl*sw / description='fishers Iris- Daten - Plot von Sl*Sw'; Quit; Proc Template; Edit base.sql; Mvar cont; Contents_label=cont; End; Eigene Styles definieren Wenn man nicht einen vorhandenen Style kopieren möchte, sondern einen Style komplett neu definieren will, findet man Infos auf dem SAS Server unter http://www.sas.com/rnd/base/topics/ style-template/style.html %Let cont=kennwerte von SL; Proc Sql; Select * From kurs.iris; Quit; Literatur zu Ods A. Christmann: Einführung in Ods im SAS-Ah (www.urz.uni-heidelberg.de/statistik/sas-ah) L. E. Haworth: Output Delivery System: The Basics. Cary, NC SAS Institute, 2001. Tipps und Tricks auf den KSFE (Konferenz der SAS-Anwender in Forschung und Entwicklung), abgedruckt im SAS-Ah, Kapitel 5 L. Haworth: Introduction to ODS. Sugi 29, Paper 245. http://www2.sas.com/proceedings/ sugi29/245-29.pdf [06.05.2005] L. Bryant et.all: Ods, YES! Odious, NO! SUGI 25, 2000, Paper 149 Literatur zu Ods (2) Ch. Olinger: Ods for Dummies. SUGI 25, 2000, Paper 64. beide unter: www.sas.com/usergroups/sugi/proceedings/ S. Gupta: Using Styles and Templates to Customize SAS ODS Output. Sugi 29, Paper 246. http://www2.sas.com/proceedings/ sugi29/246-29.pdf [06.05.2005] SAS OnlineDoc Help > SAS Help and Documentation SAS Web-Server, http://support.sas.com Communities > SAS/BASE > ODS C. Ortseifen 30

Themen Beispiele 1. Die Oberfläche von SAS Version 9.1 (8.2) 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung %Let datei=sashelp.class; %Macro PrintTable(datei); Proc Print Data=&datei; %Mend; %Do i=1 To &ende; %If &x > %Eval(2*&y) %Then %Let y=&i; %End; %PrintTable(sashelp.class); Call Symput("x", y); %If %Symexist(datei) %Then %Symdel(datei); %Let cmd=dir; dm '&cmd'; Warum eine Makro-Sprache? Was sind Makros? Vereinfachung des Codes Leichtere Pflege Bessere Lesbarkeit Wiederverwendung Durch Kollegen Andere SAS Anwender (SAS community) Standardisierung Definierte Analyseverfahren Automatisierte Programme Parametrisierung Modularisierung Konditionelle Ausführung von Programmteilen Fokus bei Entwicklung liegt auf Effizienz der Programmierung, nicht auf inhaltlicher Fragestellung C. Ortseifen 31

Wie funktionieren Makros? Platzhalter-Prinzip In einem Programm werden Platzhalter referenziert Beim Verarbeiten werden Platzhalter ersetzt Grundprinzip ist die Textersetzung Makros sind Code-Generatoren Ergebnis ist ein SAS-Programm (bzw. ein Teil davon) Die SAS Macro Facility besteht aus Makrosprache (Macro Language) Programmiersprache in SAS/BASE Makro-Variablen Makro-Anweisungen Makro-Funktionen Globale Optionen Makroprozessor Interpreter Standards für die Bereitstellung Wie werden Makros entwickelt? Arbeiten mit SAS SAS/BASE Programm schreiben Allgemein verwendbare Teile identifizieren (modularisieren) Variable Teile identifizieren Programm in ein Makro übersetzen SAS-Programm Submit Proc Print Data=sashelp.class; Kompilierung + Ausführung SAS-System Aufsuchen der Schlüsselworte und Verarbeiten der Anweisungen Beispiel: Proc Print Data=sashelp.class; Ergebnis (Protokoll, Ausgabe, Datei) C. Ortseifen 32

SAS-Programm Proc Print Data=sashelp.class; SAS-Makro Arbeiten mit SAS-Makros Submit %PrintTable Ausgeführt SAS-System Aufsuchen der Schlüsselworte und Verarbeiten der Anweisungen Ergebnis %Macro PrintTable; Proc Print Data=sashelp.class; (Protokoll, Ausgabe, Datei) %Mend; Wie SAS ein Makro verarbeitet Kompilierungsphase SAS verarbeitet Code Wenn Fehler auftritt Fehlermeldung oder dummy macro Kompiliertes Makro in Work.Sasmacr gespeichert Aufruf des Makros SAS lädt Makro Makrovariablen werden aufgelöst Logik des Makros wird verarbeitet Resultierendes Programm wird von SAS verarbeitet Log, Output Ausführung Compiler Word Scanner Input Stack &name %name %PrintTable(Sashelp.Class) Kompiliertes Makro Makroprozessor Symbol Tabelle(n) Wenn & oder % aufgelöst. %Macro PrintTable(tabelle); Proc Print Data=&tabelle; %Mend; 1. Word Scanner liest Token aus Input Stack 2. Word Scanner erkennt Makroreferenzen [%,&] 3. Kompiliertes Makro wird geöffnet 4. Lokale Symbol-Tabelle wird angelegt 5. Wert für Tabelle wird gespeichert 6. Makroprozessor liest Tokens aus kompiliertem Makro und schreibt Ergebnis in Input Stack zurück 7. Word Scanner liest Token aus Input Stack Makro-Anweisungen Makro-Definiton: %Macro, %Mend Aufruf: %macroname Kommentar: %* C. Ortseifen 33

Ablaufsteuerung Verzweigung mit %If - %Then - %Else %Do... %End Analog zum Data Step Sprungmarken %Goto label; %label: <macro statement>; Abbruch des Makros %Return; [ab V9] %Goto %Abort (setzt Fehlercode) Schleifen %Do %While Until ( bedingung );... %End; %Do i=1 %To n <%By step>; %End; i wird automatisch als MVAR angelegt (!) Impliziter Aufruf von %Eval Es gibt keine LEAVE Anweisung vorzeitiges Verlassen der Schleife nur mit %Goto Makrovariablen (MVAR) speichern Zeichenketten sind keine SAS-Datenschritt-Variablen entsprechen den üblichen SAS- Namenskonventionen (32 Zeichen Länge) Länge des Textstrings kann in V9 zwischen 0 und 65 KBytes liegen (maximaler Wert hängt vom Betriebssystem ab) Def. %let mvar=wert; %put &mvar; Automatische MVar: &sysdate Makro-Funktionen für Textwerte: %Let mvar = %Funktion(para1<,para2, >); %Index(mvar,text) %Length(mvar) %Scan(mvar,n<,delimiter>) %Substr(mvar,start<,end>) %Upcase(mvar) C. Ortseifen 34

Makro-Funktionen (2) für Zahlenwerte: Bei Anweisungen implizite Konvertierung Grundsätzlich ganzzahlig [-2 64-1,2 64-1] %Eval( ausdruck ) %Sysevalf( ausdruck ) für Fließkommadarstellung Ergebnis ist aber immer eine Zeichenkette! Schnittstelle zu allen Datenschritt-Funktionen: %Sysfunc() Beispiel %Let a=10; %Let b=20; %Let c=1.9; %Put %Eval(&a+&b) und %Eval(&a+&c); %Put %Sysevalf(&a+&c,floor); %Put %Sysevalf(&a+&c,ceil); Macro Quoting Maskieren / Verstecken von Sonderzeichen der Makrosprache, so dass diese als Text interpretiert werde anstelle als Makroelement. %Let prog=proc Print;; Dieser Text muss maskiert werden. Drei Arten von Quotingfunktionen Zur Zeit der Kompilierung (Compile time), d.h. wenn die MVAR befüllt oder übergeben wird Zur Zeit der Ausführung (Execution time), wenn MVAR in einem Makro aufgelöst wird Funktionen, die das Auflösen der Trigger % und & verhindern C. Ortseifen 35

Maskierungsfunktionen Zugriff auf SAS-Daten in Makros %Str und %NrStr %Quote, %Bquote, %Nrquote und %NrBquote %Superq SAS-Datenschritt Program Data Vector Makro-Sprache Symboltabelle NR Bedeutet not resolved (d.h. auch % und & maskiert) B By itself (für normalerweise paarweise auftretende tokens wie Anführungszeichen oder Klammern) Datenschritt- Variablen Symput Symget Makro- Variablen Globale SAS Optionen [No]mprint Zeigt den von Makros generierten BASE Code [No]mlogic Zeigt Programmfluss des Makros [No]symbolgen Zeigt die aufgelösten Makrovariablen [No]source und [No]source2 Literaturhinweise Offizielle SAS-Dokumentation SAS OnlineDoc, online verfügbar http://support.sas.com/documentation/dadoc/ Download von support.sas.com: base_macro_6997.pdf?? Gibts das noch? Books by User (Neuer Name) Michele M. Burlew (200?): SAS Macro Programming Made Easy. Cary, NC: SAS Institute Inc. Carpenter, Art (2004): Carpenter s Complete Guide to the SAS Macro Language, Second Edition. Cary, NC: SAS Institute Inc. C. Ortseifen 36

Literatur Zwei Tutorien zur Makroprogrammierung (D. Hildebrandt, SAS Institute, 7. KSFE Potsdam und G. Pfister, icasus, 9. KSFE Berlin) SAS-Anwenderhandbuch im Netz, Kapitel 4 www.urz.uni-heidelberg.de/statistik/sasah/index.html Schlussbemerkungen Diverse Tutorials und Beiträge von den SUGI- Konferenzen 27-30. http://support.sas.com/usergroups/sugi/proceedings/ index.html Kurse am URZ SAS Treff am URZ Freitag nachmittags verschiedene Themen Ankündigung über Diskussionsliste sas-infos@urz.uni-heidelberg.de (Anmeldung: listserv.uni-heidelberg.de) Diskussionslisten SAS-INFOS und SAS-EDU deutschsprachig, am URZ HD angesiedelt SAS-L englischsprachig, international jeweils über http://listserv.uni-heidelberg.de Deutschsprachiges Benutzerforum Emails werden auf Server verwaltet, Hol-System http://www.urz.uni-heidelberg.de/statistik C. Ortseifen 37

WWW und Beratung WWW-Seiten zum Thema SAS am URZ mit Links zu anderen Unis/Einrichtungen mit interessanten SAS-Seiten http://www.urz.uni-heidelberg.de/statistik/ Beratung Dienstags und freitags 9:00-11:00 Uhr im Raum X002 oder nach Absprache bei mir (Raum 106a). Empfehlung zum Schluss Machen Sie jetzt gleich weiter mit SAS, entweder in Form eines Kurses oder in Form einer eigenen Auswertung/Anwendung. Wenn Sie zu lange pausieren, haben Sie alles vergessen und müssen wieder beim Punkt Null anfangen. Vielleicht können Sie sich auch eine Hiwi- Stelle suchen, bei der Sie mit SAS zu tun haben. Bedarf besteht häufig, nicht nur am URZ, auch an anderen Instituten. C. Ortseifen 38