Suche…
Einführung
Informationen und Formate werden verwendet, um SAS mitzuteilen, wie die Daten gelesen bzw. geschrieben werden sollen. Informats werden häufig in einem Datenpunkt verwendet, wenn Daten aus einer externen Datei gelesen werden. Informats werden selten in PROCs verwendet. Formate werden häufig sowohl in Datenschritten als auch in PROCs verwendet.
Bemerkungen
SAS-Formate konvertieren entweder numerische Werte oder Zeichenwerte in Zeichenwerte. Ein Format kann entweder mit einer format
oder put
Anweisung angewendet werden, wodurch die Darstellung eines Werts geändert wird oder die put
Funktion zum Speichern des formatierten Werts in einer neuen Variablen verwendet wird.
Es gibt vier Kategorien von Formaten:
- Character - weist SAS an, Zeichendatenwerte aus Zeichenvariablen zu schreiben.
- Date and Time (Datum und Uhrzeit) - weist SAS an, Datenwerte aus Variablen zu schreiben, die Datumsangaben, Uhrzeiten und Datumsangaben darstellen.
- ISO 8601 - weist SAS an, Datums-, Zeit- und Datumszeitwerte unter Verwendung des ISO 8601-Standards zu schreiben.
- Numerisch - weist SAS an, numerische Datenwerte aus numerischen Variablen zu schreiben.
Formate haben normalerweise die Form <formatname><w>.<d>;
w
ist die Breite (einschließlich Dezimalstellen und Punkt), d
die Anzahl der Dezimalstellen.
Übliche Datumsformate (auf SAS-Datumswerte angewendet):
-
date9.
zB 02AUG2016 -
ddmmyyn8.
zB 02082016 -
ddmmyy8.
zB 02.08.16 -
yymmdd10.
zB 20160802 -
year4.
zB 2016
Häufige numerische Formate (auf Zahlen angewendet):
-
comma11.0
zB 1.234.567 -
comma12.2
zB 1.234.567.00 -
dollar11.2
zB $ 5.789,12 -
nlmnlgbp11.2
zB £ 2.468,02
Andere Formate:
-
$hex8.
, konvertiere String in Hex -
$upcase.
Konvertieren Sie String in Großbuchstaben -
$quote.
, füge einen String in Anführungszeichen ein
Eine vollständige Liste der Formate finden Sie hier> https://support.sas.com/documentation/cdl/de/lrdict/64316/HTML/default/viewer.htm#a001263753.htm
Verwenden Sie die Formatanweisung
Die format
wendet das angegebene Format nur für die Anzeige auf die angegebene Variable an , dh der zugrunde liegende Wert ändert sich nicht.
data example1 ; Date = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */ Date2 = '31AUG2016'd ; format Date monyy7. Date2 yymmddn8. ; run ;
Datum | Date2 |
---|---|
AUG2016 | 20160831 |
Verwenden der Formatanweisung zum Gruppieren von Daten
Sie können Formate innerhalb einer Prozedur anwenden, z. B. um die Gruppierungen innerhalb einer proc summary
oder proc freq
.
SAS-Termine gruppieren
data example2 ; do Date = '01JUN2016'dt to '31AUG2016'dt ; Days = 1 ; output ; end ; run ; /* Summarise by year & month */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ; format Date yymmn6. ; /* e.g. 201606 */ run ;
Datum | Tage |
---|---|
201606 | 30 |
201607 | 31 |
201608 | 31 |
/* Summarise by month & year */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ; format Date monyy7. ; /* e.g. JUN2016 */ run ;
Datum | Tage |
---|---|
JUN2016 | 30 |
JUL2016 | 31 |
AUG2016 | 31 |
Die Verwendung eines Formats hat den Vorteil, dass die natürliche Sortierreihenfolge beibehalten wird.
sashelp.class
, Sie sashelp.class
die Häufigkeit des ersten Buchstabens jedes Namens vergleichen, wenn Sie sashelp.class
als Beispiel verwenden. Sie können die Funktion substr()
verwenden, um den ersten Buchstaben zu finden, und eine proc freq
für die neue Variable proc freq
. Alternativ können Sie den $1.
anwenden $1.
formatieren Sie die Name
Variable:
proc freq data=sashelp.class ; table Name ; format Name $1. ; run ;
Name | ANZAHL |
---|---|
EIN | 7 |
B | 4 |
C | 2 |
usw. |
Benutzerdefinierte Formate
Benutzerdefinierte Formate, auch als benutzerdefinierte Formate bezeichnet, können wie andere Standardformate erstellt und verwendet werden.
/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef 'CA' = 'California'
'MA' = 'Massachusetts'
'NY' = 'New York';
/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;
Die Variable state-var
wird entsprechend dem neuen Format gedruckt. Beispielsweise wird der Wert 'CA'
als 'California'
gedruckt. Wenn ein Wert nicht formatiert wurde, beispielsweise 'CT'
, wird dieser Wert so gedruckt, wie er im Datensatz angezeigt wird.
Verwendung von Informationen zum Lesen von Daten
Informats werden verwendet, um SAS mitzuteilen, wie die Daten eingelesen werden sollen, und sie werden mit einer informat
Anweisung identifiziert.
data test;
infile test.csv;
informat id $6.
date mmddyy10.
cost comma10.2
;
input @1 id
@7 date
@20 cost
;
run;
Informats und Formate können auch zusammen verwendet werden, um die Daten einzulesen und in einem anderen Format auszugeben, beispielsweise mit der folgenden Gehaltsvariablen:
DATA workers;
informat first last $16.;
informat salary 12.1;
informat birthdate 8.;
input
first $
last $
birthdate
salary;
format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;