Benutzer:Fortwengel/SAS Format4

Aus SAS-Wiki
< Benutzer:Fortwengel(Weitergeleitet von SAS Format4)
Wechseln zu: Navigation, Suche

4 Die Prozedur Format

Die Prozedur Format bietet dem Anwender die Möglichkeit, neue/eigene Formate zu definieren, beispielsweise für die Variablen Geschlecht und Note. Im Prozedur FORMAT- Schritt setzt man dazu die Anweisung VALUE ein. Mit der Anweisung PICTURE werden ebenfalls Formate definiert, allerdings da, wo es darum geht, Zahlen in bestimmter Form, wie z.B. Telefonnummern oder Längen mit Maßeinheit auszugeben.

Die allgemeine Syntax der Prozedur FORMAT lautet:

Proc Format <Optionen>;
  Value ...;
  Picture ...;
Run;

4.1 Die Anweisung VALUE

Für die SAS Tabelle klasse werden wir jetzt zwei Formate definieren: gender, um die Werte 1 und 2 der Variable Geschlecht zu erklären, und note, um die Noten im Klartext auszugeben. Das Format gender weist jedem Wert einen neuen Wert zu: 1 wird zu weiblich, 2 zu männlich. Bei dem Format note dagegen wird einem Wertebereich ein neuer Wert zugewiesen, beispielsweise Werte zwischen 0.7 und 1.3 werden zu „sehr gut“.

Dem Schlüsselwort VALUE folgt zunächst der Formatname, bei Textformaten muss dieser mit $ beginnen. Anschließend wird der alte Wert bzw. der alte Bereich angegeben und gefolgt von einem Gleichheitszeichen der neue Wert. Unser Beispiel lautet dann:

Proc Format;
   Value gender 1 = "weiblich"
                2 = "männlich";
Value note      Low-<1.5='sehr gut'
                1.5-<2.5='gut'
                2.5-<3.5='befriedigend'
                3.5-<4.5='ausreichend'
                4.5-<5.5='mangelhaft'
                5.7-High='ungenügend';
Run;

LOW und HIGH in der Definition des Formats Note bezeichnen den kleinsten bzw. größtmöglichen Wert.

Wir nutzen die neu definierten Formate nun in einem Listenbericht:

Proc Print Data=klasse;
   Var name vorname geschlecht note;
   Format geschlecht gender. note note.;
Run;

Und erhalten folgende Darstellung:

Format41.JPG






4.2 Die Anweisung PICTURE

Während man mit der Anweisung VALUE Wertebereichen oder Einzelwerten neue Werte zuweist, bietet die Anweisung PICTURE die Möglichkeit, die Form von Zahlenwerten festzulegen. So kann beispielsweise eine Größeneinheit wie „m“ (für Meter) an die Körpergröße angefügt werden, das $- oder €-Zeichen kann vor einem Geldbetrag angezeigt werden, führende Nullen lassen sich ausgegeben, z.B. bei numerisch kodierten Postleitzahlen, oder Telefonnummern lesbar formatieren (siehe auch [5]).

Wir werden für unsere Beispieldatei die Variable groesse mit einem entsprechenden Format belegen. Dazu formulieren wir folgende Picture-Anweisung in einem PROC FORMAT-Schritt:

Proc Format;
     Picture groesse Low-High='009.99 m';
Run;

Der Formatname lautet groesse. Die Definition gilt für den gesamten Wertebereich, also: „Low-High“. Nach dem Gleichheitszeichen erfolgt in Anführungszeichen eine Kombination von Nullen und Neunen. Diese geben die Stellen an, die ausgegeben werden. „0“ wird nur ausgegeben, wenn vorhanden, „9“ wird immer ausgegeben, d.h. die Werte werden immer mit zwei Nachkommastellen dargestellt. Das Leerzeichen und „m“ geben die Maßeinheit an, hier: Meter.

In Form eines Listenberichts

Proc Print Data=klasse;
  Var name vorname groesse;
  Format groesse groesse.;
Run;

zeigt sich das dann wie folgt:

Format42.JPG






Der durch das Picture-Format definierte Wert kann eine Länge von bis zu 40 Zeichen annehmen.

Die Option PREFIX= (die Option muss hierbei in Klammern gesetzt werden) gestattet die Einfügung von Zeichen vor dem eigentlichen Wert. Auch hierzu ein Beispiel:

Proc Format;
     Picture groesse Low-High='009.99' (Prefix="(in Metern) ");
Run;

Liefert im Listenbericht (gleicher Prozedurschritt wie im vorherigen Beispiel):

Format42b.JPG







Weitere hilfreiche Optionen der PICTURE Anweisung sind ROUND und MULT=. ROUND rundet den Wert auf den nächsten ganzzahligen Wert (ab 0,5 wird aufgerundet, ansonsten abgerundet), MULT=n oder MULTIPLIER=n bezeichnet den Faktor, mit dem der Wert multipliziert wird. Also n=3 bedeutet, dass der Wert mit 103 multipliziert wird. ROUND und MULT= werden vor dem Formatieren angewandt, d.h. erst wird gerundet bzw. multipliziert, dann die mittels Picture definierte Form angewendet. Für Beispiele siehe [8].


4.3 Geschachtelte Formate

Bei der Definition neuer Formate können im Label-Teil der Anweisung VALUE anstelle einzelner Werte mit Hilfe von eckigen Klammern bereits vorhandene Formate benannt werden.

Im folgenden Beispiel wird das Format gebgruppen definiert.

Proc Format;
   Value gebgruppen
   . = "k.A."
   Low-"31dec1990"d = [Year4.]
   "01jan1991"d-High = [Monyy7.];
Run;

Fehlende Werte werden damit als „k.A.“ (für keine Angabe) dargestellt, Datumsangaben bis zum 31. Dezember 1990 mit der Jahreszahl (ausgedrückt mit Hilfe des Formats Year4.), und Datumsangaben ab dem 1. Januar 1991 mit Monat und Jahresangabe (Format Monyy7.). Für unsere Beispieldatei sieht der Listenbericht mit

Proc Print Data=klasse;
   Format gebdatum gebgruppen.;
   Var vorname name gebdatum;
Run;

dann wie folgt aus:

Format43.JPG