SAS PROC-Format | Vordefiniertes und benutzerdefiniertes Format in SAS

Inhalt

Ich habe einen bedeutenden Teil meiner Karriere als Spezialist für Datenvisualisierung verbracht. Ich bin sehr wählerisch bei der Formatierung und Berichterstellung. Dann, als ich anfing, SAS zu verwenden, stand vor einigen Herausforderungen beim Ändern von Zahlen- und Zeichenformaten, vor allem wenn es um daten ging. Es überrascht nicht, dass sowohl Kunal als auch ich sehr viele Anfragen zu diesem Thema erhalten..

Und SAS, Es gibt mehrere Optionen zur Verbesserung des Berichtslayouts. In diesem Artikel, wir werden insbesondere über die Methoden diskutieren, mit dem Format der Datenwerte zu spielen. Es ist zu beachten, dass diese Änderungen nur gelten, während die Ergebnisse angezeigt werden. Das Ändern des Ausgabeformats ändert nicht die Form, Daten werden im Backend gespeichert.

Standardmäßig, SAS bietet mehrere integrierte Formate zur Verarbeitung verschiedener Formate, aber sie reichen nicht aus, um die personalisierten Anforderungen zu erfüllen, die Ihre Daten haben können. Zum Beispiel, möglicherweise haben wir männlich und weiblich als M und F codiert (Ö 0 Ja 1), aber beim Drucken möchten wir das Feld nur als MALE und FEMALE anzeigen. Ein weiteres häufiges Beispiel ist die Anzeige von Ortsvorwahlen auf Telefonnummern von 10 Ziffern (zum Beispiel, 123-3456-789).

PD: Dies ist ein langer Artikel im Vergleich zu dem, was ich normalerweise schreibe, also fühl dich frei, es in stücke zu verdauen.

Der Artikel ist unterteilt in 2 allgemeine teile: Zuerst, wir verstehen vordefinierte Formate und benutzerdefinierte Formate in SAS. Dann, wir analysieren verschiedene Anwendungen und Beispiele dieser Konzepte.

1_proc_format_sas-6665279

Integrierte SAS-Formate

Dann, Beispieldaten mit Details zur Agentenleistung werden angezeigt. Wir werden diesen Datensatz in Beispielen und Diskussionen in diesem Artikel verwenden. Hier ist DOJ im numerischen Format, wie von SAS standardmäßig definiert, von 1 vom Januar von 1960.

2_proc_format_data-2295727Schauen wir uns zunächst die Syntax der FORMAT-Anweisung an: –

Syntax: – FORMAT Variablenformat (S);

Machen wir einige Übungen mit der Formatdeklaration:

Beispiel 1: DOJ im Format TTMMJJJJ anzeigen:

Code:

Druckdaten verarbeiten = Verkauf;
DOJ-Datum formatieren 9. ;
Laufen;

Produktion:

3_proc_format-6128743

Hier ist die Liste der vordefinierten Datumsformate, die zum Ändern des Ausgabeformats von Variablen verfügbar sind:

4_proc_format-5452091

Beispiel 2: Dollar-Umsatzbetrag mit einer Dezimalstelle anzeigen

Code:

Druckdaten verarbeiten = Verkauf;
Verkaufsbetrag Dollar9.1-Format;
Laufen;

Produktion:

5_proc_format_sas-1402548

Liste vordefinierter Datumsformate, die zum Ändern des Ausgabeformats von Variablen verfügbar sind:

6_proc_format_sas1-3504838

Beispiel 3: Verkaufsbetrag in Dollar mit zwei Dezimalstellen mit Kommas und DOJ im Wochendatumsformat anzeigen.

Code:

Druckdaten verarbeiten = Verkauf;
Format Verkaufsbetrag Dollar12.2 DOJ WEEKDATE .;
Laufen;

Produktion:

7_proc_format_sas-2681156

Bedarf an benutzerdefinierten Formaten:

Bisher haben wir gesehen, wie man das Format von Zahlen und Datumsangaben mit integrierten SAS-Formaten ändert. Es kann jedoch vorkommen, dass die integrierten Formate von SAS unsere Anforderungen nicht erfüllen.. Wie im aktuellen Datensatz, wir wollen:

  1. Zeigt an “MÄNNLICH” Ja “FEMININ” anstatt “m” Ja “F”
  2. Kategorien neu definieren A, B, C, D und E als Ultra, Super, Durchschnitt, Niedrig y Schlecht
  3. Zeigt die Häufigkeit des Verkaufsbetrags in drei Kategorien an ” = 12000″

All diese Dinge können mit Datenübergabe erledigt werden (o PROC-SQL) mit der If-Else-Anweisung (oder Fall ändern), aber es wird eine neue Variable benötigt, die diese formatierten Werte speichert. Während, wenn wir nur die Anzeige ändern wollen (und nicht die Werte im Datensatz), Daher ist das Erstellen eines benutzerdefinierten Formats mit PROC FORMAT eine effizientere Möglichkeit, diese Änderungen vorzunehmen.

Benutzerdefinierte Formate mit Proc FORMAT

PROC FORMAT ist eine Prozedur, die eine Zuordnung von Datenwerten zu Datenlabels erstellt. Das benutzerdefinierte FORMAT-Mapping ist unabhängig von einem SAS DATA SET und Variablen und muss explizit in einem DATASTEP zugewiesen werden und / das nachfolgende PROC.

Syntax von PROC FORMAT: –

8_proc_format_sas-8064107

Regeln zum Definieren von FORMAT NAME:
  1. Für Zeichenwerte, das erste Zeichen muss ein Dollarzeichen sein ($) und ein Buchstabe oder Unterstrich als zweites Zeichen. Für Zahlenwerte, der Name muss als erstes Zeichen einen Buchstaben oder Unterstrich enthalten
  2. Der Name darf nicht mit einer Zahl enden
  3. Darf nicht der Name eines vorhandenen SAS-Formats sein
  4. Es sollte nicht mit einem Punkt in der VALUE-Anweisung enden

Lassen Sie uns die oben besprochenen Probleme mit dem PROC-Format lösen:

Ärger 1 (Ja 2): M und F als männlich und weiblich anzeigen.

Code:

Prozessformat;
Wert $ Genderfmt ‘M’ = ‚Männlich’
'F’ = ‚Frau‘;
Laufen;
Druckdaten verarbeiten = Verkauf;
Genre-Format $ Genderfmt. ;
Laufen;

Produktion:

9_proc_format_sas-4009602Ähnlich, Wir können es für das Problem lösen 2. Kategorie A definieren, B, C, D und E als Ultra, Super, Durchschnitt, Niedrig y Schlecht.

Ärger 3: Sie möchten die Salesamount-Häufigkeit in drei Kategorien anzeigen ” = 12000″

Code:

Proc-Format;
Valor Salegrp niedrig-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alt = ‘> = 12000’;
Laufen;
Proc Freq-Daten = Ventas;
Verkaufsbetrag Verkaufsgrp-Format .;
Mesa-Verkaufsbetrag;
Laufen;

Produktion:

10_proc_format_sas-6560974

Über, Ich habe Bereiche verwendet, um das Format zu definieren. Kann für Zahlen- und Zeichenwerte verwendet werden.

Die speziellen Schlüsselwörter, die verwendet werden, um die Bereiche zu definieren, sind: –

ein) Bereiche können mehrere durch Kommas getrennte Werte sein.

ich) 'EIN', 'B', 'C’
ii) 22, 44, 67

B) Bereiche können Begrenzungswerte einschließen oder ausschließen, basierend auf der Verwendung verschiedener Schlüsselwörter wie:

ich) 24 – 45: Enthält Werte von 24 ein 45 einschließlich 24 Ja 45.
ii) 24 <- 45: Enthält Werte zwischen 24 ein 45 einschließlich 45 und ausgenommen 24.
iii) 24 – <45: Enthält Werte zwischen 24 ein 45 einschließlich 24 und ausgenommen 45.
NS) 24 <- <45: Enthält Werte zwischen 24 ein 45 ausschließlich 24 Ja 45.

C) LOW bezieht sich auf die verfügbare Mindestanzahl, HIGH bezieht sich auf die höchste verfügbare Zahl und OTHERS umfasst alle nicht spezifizierten Zahlen. Andere beinhalten auch fehlende Werte, wenn nicht angegeben.

Einige wichtige Punkte / zu berücksichtigende Anwendungen für PROC FORMAT

  • PROC-Format gibt den ursprünglichen Wert zurück, wenn wir bei der Definition des Formats nicht alle Datenwerte berücksichtigt haben.

11_proc_format_sas-6398919

  • Wir können mehrere Formate in einer einzigen PROC FORMAT-Anweisung erstellen, Angeben mehrerer Werte im PROC-Format

Code:

Prozessformat;
Valor Salegrp niedrig-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alt = ‘> = 12000’;
Wert $ Genderfmt ‘M’ = ‚Männlich’
'F’ = ‚Frau‘;
Laufen;
Druckdaten verarbeiten = Verkauf;
Verkaufsbetrag Verkaufsgrp-Format. Geschlecht $ Genderfmt .;
Laufen;

Produktion:

12_proc_format_sas-4219573

  • PAGROC FORMAT kann verwendet werden, um effiziente Datenverbindungen zu erstellen

Im PROC-FORMAT, wir haben die wahl CNTLIN, was es uns ermöglicht, ein Format aus einem Datensatz anstelle einer VALUE-Anweisung zu erstellen. Bevor Sie diese Option verwenden, Wir schauen uns zuerst die folgenden Richtlinien an: –

ein) Der Eingabedatensatz muss drei von PROC FORMAT . benötigte Variablen enthalten: ANFANG, LABEL und FMTNAME.

B) Hier ist START das Schlüsselfeld zwischen diesen beiden Tabellen und muss im Eingabedatensatz eindeutig sein (Datensatz, wir verwenden in CNTLIN Möglichkeit).

C) Die Variable LABEL ist der Wert, den wir einem anderen Datensatz zuweisen möchten.

D) Die Variable FMTNAME ist der Name des Formats und muss zwischen einfachen Anführungszeichen übergeben werden.

e) Nach der Definition des Formats, wir können die put-Funktion verwenden, um eine Variable im Datensatz basierend auf dem Schlüsselfeld und dem von uns definierten Format zu erstellen.

Beispiel:

Nehmen wir an, wir möchten Agenten-DOB aus dem Datensatz zuordnen Agent_DOB (Beispieldaten) zum vorherigen Datensatz13_proc_format_sas-7383015

Hier wollen wir ein Format erstellen basierend auf Agent_DOB und wende es an Der Umsatz. Und Agent_DOB, wir würden AGT_ID in Betracht ziehen (Schlüsselfeld, zwischen beiden Datensätzen) como START, Geburtsdatum als Label und FMTNAME = '$ AGENT'. Schau dir jetzt die Aussagen an (dann).

Datenagent_DOB_Fmt;
AGT_ID umbenennen = START;
Agent_DOB setzen;
Label = Geburtsdatum;
FMTNAME = '$ AGENT';
Laufen;
Prozessformat CNTLIN = Agent_DOB_Fmt;
Laufen;

14_proc_format_sas-9892599

Der obige Code hat ein Format mit dem Agent_DOB_Fmt-Dataset generiert und dann, um es mit dem SALES-Datensatz zusammenzuführen, Datenschritte wurden geschrieben (dann).

Datenverkäufe_DOB;
Verkauf einstellen;
Date_birth = Put (Acht_ID, $ Agent.);
Laufen;

15_proc_format_sas-4787747

Beschränkung von PROC FORMAT als Fusion

Dies ist die beste Methode, wenn wir eine Variable aus einem anderen Datensatz zusammenführen möchten, aber wenn wir fünf oder mehrere Variablen hinzufügen möchten, dann müssen wir die PROC FORMAT-Anweisung zusammen mit der multiplen PUT-Funktion im Datenpass so oft wiederholen. Dann, In solchen Fällen verwende ich lieber MERGE oder PROC SQL.

  • Wir können das benutzerdefinierte SAS-Format für die zukünftige Verwendung speichern.

Alle SAS-Formate werden in einem Katalog gespeichert (Formatsammlung). Wenn wir ein Format erstellen, ist im Katalog gespeichert. Wenn wir den Katalog nicht angeben, SAS speichert die Formate in der WORK-Bibliothek in einem Katalog namens FORMATE. Wie andere Datensätze in der WORK-Bibliothek, werden auch am Ende der Sitzung entfernt.

Jetzt, um benutzerdefinierte Formate zu speichern, wir müssen angeben, wo der Katalog gespeichert und wie er aufgerufen werden soll. Dies kann durch Speichern von Formaten in einer anderen Bibliothek als WORK . erreicht werden.

Paso 1 Zuerst, wir müssen eine Bibliothek definieren (hier verwende ich die SAS University Edition)

Syntax: – LIBNAME Library_Name “Weg”
LIBNAME STATDATA “/ carpetas / miscarpetas / ECSTAT0”;

SSchritt-2 Verwenden Sie die Bibliotheksoption im PROC-Format und geben Sie einen Bibliotheksnamen mit dem Namen der Formatdatei an. Der Dateiname muss ein gültiger SAS-Datensatzname sein.

Syntax: – PROC FORMAT LIBRARY = Library_Name.MYFILENAME;
Prozessformatbibliothek = STATDATA.Gender_Fmt;
Wert $ Genderfmt ‘M’ = ‚Männlich’
'F’ = ‚Frau‘;
Laufen;

Obiges Programmam hat eine Datei namens Gender_Fmt.sas7bcat in Ihrem Verzeichnis erstellt.

Jetzt, wann immer wir ein gespeichertes Format verwenden wollen, wir müssen SAS anweisen, in dieser Katalogdatei nach Formaten zu suchen. Dies geschieht mit der fmtsearch Möglichkeit. Dann, bevor Sie es verwenden, wir müssen eine erklärung schreiben.

Syntax: – Optionen fmtsearch = (Library_Name.MYFILENAME)
Optionen fmtsearch = (STATDATA.Gender_Fmt); / * Danach können wir Gender_Fmt . verwenden * /
Proc Druckdaten = Ventas;
Genre-Format $ Genderfmt .;
Laufen;

Das SAS-Bildformat erstellt Vorlagen, in denen wir definieren, wie die Zahlen angezeigt werden. Bei Verwendung von BILDFORMAT, Wir können mehrere Probleme mit der Zahlenanzeige überwinden, wie z: –

1. Dezimalstellen und Kommas setzen

2. Einbetten von Zeichen mit Zahlen

3. Präfixe

Beispiel 1: – Ich möchte den Verkaufsbetrag anzeigen, der mit einem %-Zeichen endet und dem ein Zeichen vorangestellt ist $.

Prozessformat;
Imagen New_fmt low-High = ‘000000%’ (Präfix = '$');

Laufen;
Druckdaten verarbeiten = Verkauf;
Verkaufsbetrag New_fmt-Format .;
Laufen;

Produktion:

16_proc_format_sas-4904837

Beispiel 2: – Sagen wir, Ich habe eine Telefonnummer für 10 Ziffern und ich möchte es anzeigen als 123-3456-789.

Datentelefon;
Eingangskontakt;
Datenleitungen;
1111111111
222222222
3333333333
;
Laufen;
Prozessformat;
Tele Low-High-Bild = ‘000-0000-000 Ich;
Laufen;
Proc Druckdaten = Telefon;
Telekontaktformat .;
Laufen;

17_proc_format_sas-2596746

Abschließende Anmerkungen: –

In diesem Artikel, Wir haben verschiedene Methoden besprochen, um das Format von Datenwerten mit integrierten und benutzerdefinierten Formaten anzuzeigen. Wir haben auch verschiedene Techniken analysiert, um Formate als Bereiche zu definieren, Bilder, Umgang mit fehlenden Werten und nicht übereinstimmenden Werten mit OTHERS. Wir haben auch die effiziente Fusionstechnik mit PROC FORMAT . diskutiert. Dies sollte alles sein, was Sie brauchen, um ein Profi mit SAS-Formaten zu sein.

Wir haben das In-Format beim Lesen eines nicht standardmäßigen Datensatzes nicht behandelt. Darüber werden wir in einem unserer zukünftigen Beiträge sprechen..

Ich hoffe, dieser Artikel war hilfreich für Sie? Wir haben dieses Thema vereinfacht und versucht, es sehr einfach und anschaulich darzustellen. Wenn Sie weitere Hilfe zum SAS-Format benötigen, Fühlen Sie sich frei, Ihre Fragen in den Kommentaren unten zu stellen.

Wenn Ihnen das, was Sie gerade gelesen haben, gefällt und Sie weiter über Analytics lernen möchten, abonnieren Sie unsere E-Mails, Folge uns auf Twitter oder wie bei uns Seite auf Facebook.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.