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;


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow