WEBINAR@LUNCHTIME THEMA: SAS DATUMSWERTE: ERSTELLEN EIGENER DATUMSFORMATE LEICHT GEMACHT" EVA-MARIA KEGELMANN
HERZLICH WILLKOMMEN BEI WEBINAR@LUNCHTIME Moderation Anne K. Bogner-Hamleh SAS Institute GmbH Education Consultant Training Eva-Maria Kegelmann SAS Institute GmbH Sr Technical Training Consultant Xing-Profil: http://www.xing.com/profile/annekatrin_bognerhamleh?key=0.0 Hinweise zum Ablauf des Webinars: Teilnehmer sind automatisch stumm geschaltet Sie können Nachrichten an den Moderator senden / Fragen stellen die Veranstaltung wird aufgezeichnet
LERNZIELE SAS DATUMSWERTE: ERSTELLEN EIGENER DATUMSFORMATE LEICHT GEMACHT Verstehen, wie SAS Datumswerte definiert sind Wissen, wie Datumswerte länderspezifisch dargestellt werden können Lernen, wie man ein benutzerdefiniertes Datumsformat erstellen kann
DATUMS- UND ZEITWERTE HISTORIE Datums- und Zeitwerte sind im SAS System besondere numerische Werte. Die SAS-Zeitrechnung beginnt am 01. Januar 1960.
5 EBINAR@LUNCHTIME DEUTSCHE DATUMSFORMATE: GEHEN NOCH, ABER Format Gespeicherter Wert Angezeigter Wert DEUDFDE. 17854 18Nov2008 DEUDFWDX. 17854 18. November 2008 DEUDFWKX. 17854 Dienstag, 18. November 2008 DEUDFDN. 17854 3 DEUDFDWN. 17854 Dienstag DEUDFMN. 17854 November DEUDFMY. 17854 Nov08
6 EBINAR@LUNCHTIME NLS DATUMSFORMATE SIND JETZT AKTUELL SAS National LanguageSupport (NLS) Formate konvertieren Datumsangaben in die in anderen Ländern üblichen Formate Einstellung der Sprache: OPTIONS LOCALE=xxx; Format Locale Beispiel NLDATEw. English_UnitedStates January 01, 1960 German_Germany 01. Januar 1960 NLDATEMNw. English_UnitedStates German_Germany January Januar NLDATEWw. English_UnitedStates Fri, Jan 01, 60 German_Germany Fr, 01. Jan 60 NLDATEWNw. English_UnitedStates German_Germany Friday Freitag
EINSTELLUNG DES GEBIETSSCHEMAS: LOCALE= Nicht zu verwechseln mit einer SAS-Sprachversion! Stellt verschiedene länderspezifische Konventionen und Spracheinstellungen zur Verfügung Umfasst: Regeln für die Sortierung von Zeichenketten Formatierung von Datumswerten, z. B.19.3.2014 (Deutschland), 03/19/14 (USA) Zeitangaben (12-Std. mit AM/PM oder 24-Std.) Zahlen (Dezimalpunkt oder komma) Währungskennzeichen Papiergröße (A4, letter, )
EINSTELLUNG DES GEBIETSSCHEMAS: LOCALE= Systemoption LOCALE= setzt länderspezifische Konventionen und Spracheinstellungen Beispiel: options locale=german_germany; Standardeinstellung: LOCALE= English_UnitedStates Weitere ausgewählte Werte: SAS Name Kurzbezeichnung Alias German_Austria de_at German_Germany de_de German bzw. de German_Liechtenstein German_Luxembourg German_Switzerland de_li de_lu de_ch Andere Systemoptionen wie ENCODING, DFLANG, DATESTYLE und PAPERSIZE basieren auf LOCALE=, falls nicht explizit gesetzt!
DIE SYSTEMOPTION DFLANG DFLANG= Sprache für internationale Ein- und Ausgabeformate für Datumswerte Der Standardwert ist ENGLISH. Weitere ausgewählte Werte: Finnish Spanish Swedish French Swiss_French German Swiss_German Beispiel: options dflang=german;
BENUTZERDEFINIERTE DATUMSFORMATE Kein passendes SAS Standard-Datumsformat vorhanden? Erstellen Sie ein eigenes Datumsformat mit PROC FORMAT und der PICTURE-Anweisung.
SZENARIO Das Einstellungsdatum der Angestellten soll im Format DD-MMMYYYY angezeigt werden, z.b. 02-SEP2014 Dafür gibt es kein SAS Standard-Ausgabeformat.
PROC FORMAT - PICTURE-ANWEISUNG Die PICTURE-Anweisung in PROC FORMAT definiert ein Template für Datenwerte. PROC FORMAT; PICTURE formatname value-range-set-1 <(picture-1-option(s) )>; RUN;
DATUMSFORMATE: DATATYPE-OPTION Die DATATYPE-Option für die PICTURE-Anweisung gibt an, dass das Format für einen SAS-Datums-, SAS-Zeit-bzw. SAS-Datumszeit-Wert verwendet wird. PROC FORMAT; PICTURE name value-range-set-1 (DATATYPE=DATE TIME DATETIME); RUN;
DIREKTIVEN FÜR EINE PICTURE-ANWEISUNG Direktive = % plus Buchstabe Legen fest, welche Datumskomponenten wie angezeigt werden. Groß-/Kleinschreibung hat unterschiedliche Bedeutung! Beispiel: proc format; picture myfmt low-high = '%0d-%b%Y '(datatype=date); run; Ergebnis: 02-SEP2014 Sprache: entspricht der LOCALE= Systemoption
DIREKTIVEN FÜR DIE PICTURE-ANWEISUNG Direktive Bedeutung Beispiel %a Wochentag, abgekürzt Wed %A Wochentag Wednesday %b Monatsname, abgekürzt Jan %<n>b Monatsname (Optional: n=anzahl Zeichen) January %d Tag im Monat (%0d: Mit führender Null) 1 bzw. 01 %e Tag im Monat 2-stellig, mit führendem Blank " 1 bis 31 %m Monat als Zahl (%0m: Mit führender Null) 1 bzw. 01 %n Monat als Zahl 2-stellig mit führendem Blank " 1 bis 12 %q Quartal als Zahl 1 bis 4 %Q Quartal als Text Quarter 1 %u Wochentag als Zahl (Montag=1 Sonntag=7) 1 bis 7 %V KW (%0V: mit führender Null). 1 bzw. 01bis 53 %y %Y Jahr, 2-stellig bzw. 4-stellig 14 bzw. 2014
LÄNGE DES ANGEZEIGTEN DATUM-FORMATES Achtung: verwenden Sie die DEFAULT= option, damit die Breite der Anzeige groß genug ist! (bei Verwendung der DATATYPE= Option) Ohne DEFAULT= : Breite entspricht der Anzahl Zeichen rechts vom =. Beispiel: proc format; picture myfmt (default = 50) low-high = '%0d-%b%Y'(datatype=date); run; Ohne Default= wäre hier die Standardbreite = 8
BENUTZERDEFINIERTES DATUMSFORMAT - BEISPIEL proc format; picture myfmt (default= 50) low-high = '%0d. %B %Y - KW %V - %Q' (datatype=date); run; Ergebnis: 18. August 2014 - KW 34-3. Quartal Voraussetzung: options locale=german_germany; Demo: EOT_Datumsformate_erstellen
BENUTZERDEFINIERTE DATUMSFORMATE VERWENDEN Verwenden Sie genau wie bei Standardformaten die FORMAT-Anweisung, um ein Format auf eine bestimmte SAS-Variable anzuwenden. Allgemeine Form der FORMAT-Anweisung: FORMAT variable(s) format.; Beispiel: proc print data=ia.empdata; format orderdate myformat.; run;
BENUTZERDEFINIERTES DATUMSFORMAT BEISPIEL 2 Darstellung von Datumswerten mit unterschiedlichen Detaillierungsgraden / Formatierungen Ergebnis: proc format; value schachteldate low -'31DEC1990'd = [year4.] '01Jan1991'd-'31DEC1991'd = [nldateyq.] '01JAN1992'd- high = [nldateym.]; run; Demo: EOT_Datumsformat_versch_Intervalle.sas
BENUTZERDEFINIERTES DATUMSFORMAT BEISPIEL 3 Darstellung von Datumswerten mit überlappenden Bereichen: MULTILABEL-Option in der Value-Anweisung proc format library = work; value ueberlapp (multilabel) '01jan1991'd - '31mar1991'd = '1. Quartal' '01apr1991'd - '30jun1991'd = '2. Quartal' '01jul1991'd - '30sep1991'd = '3. Quartal' '01oct1991'd - '31dec1991'd = '4. Quartal' '01jan1991'd - '30jun1991'd = 'Halbjahr I' '01jul1991'd - '31dec1991'd = 'Halbjahr II'; run; Ergebnis: Demo: EOT_Datumsformat_überlappende_Bereiche.sas
FRAGEN?
WEBINAR@LUNCHTIME VIELEN DANK FÜR IHRE TEILNAHME Interesse an weiterem Austausch? Diskutieren Sie mit uns in der XING-Gruppe Business Analytics mit SAS Sprechen Sie uns direkt an: education@ger.sas.com
WEBINAR@LUNCHTIME NÄCHSTES WEBINAR@LUNCHTIME
FOLIEN ZUM DOWNLOAD UNTER WWW.SAS.DE/LUNCHTIME WIE HAT IHNEN UNSER WEBINAR GEFALLEN? www.sas.com