Szukaj…


Wprowadzenie

Informacje i formaty są używane do informowania SAS, jak odpowiednio odczytywać i zapisywać dane. Informacje są zwykle używane w kroku danych podczas odczytywania danych z pliku zewnętrznego. Informacje są rzadko używane w PROC. Formaty są powszechnie używane zarówno w krokach danych, jak i PROC.

Uwagi

Formaty SAS konwertują wartości liczbowe lub znakowe na wartości znakowe. Format można zastosować za pomocą instrukcji format lub put , która zmienia sposób wyświetlania wartości, lub za pomocą funkcji put do zapisania sformatowanej wartości w nowej zmiennej.


Istnieją cztery kategorie formatów:

  • Znak - instruuje SAS, aby zapisywał wartości danych znakowych ze zmiennych znakowych.
  • Data i godzina - instruuje SAS, aby zapisywała wartości danych ze zmiennych reprezentujących daty, godziny i godziny danych.
  • ISO 8601 - instruuje SAS, aby zapisywał daty, godziny i wartości daty i godziny przy użyciu standardu ISO 8601.
  • Numeryczny - instruuje SAS, aby zapisywał wartości danych liczbowych ze zmiennych numerycznych.

Formaty zwykle przyjmują postać <formatname><w>.<d>; , w oznacza szerokość (w tym dowolne miejsca po przecinku i kropkę), d oznacza liczbę miejsc po przecinku.


Typowe formaty dat (stosowane do wartości dat SAS):

  • date9. np. 02AUG2016
  • ddmmyyn8. np. 02082016
  • ddmmyy8. np. 02/08/16
  • yymmdd10. np. 20160802
  • year4. np. 2016

Typowe formaty numeryczne (stosowane do liczb):

  • comma11.0 np. 1 comma11.0
  • comma12.2 np. 1 comma12.2
  • dollar11.2 np. 5 789,12 USD
  • nlmnlgbp11.2 np. 2 468,02 £

Inne formaty:

  • $hex8. , zamień ciąg na hex
  • $upcase. , konwertuj ciąg na wielkie litery
  • $quote. , dołącz ciąg w cudzysłowie

Pełna lista formatów znajduje się tutaj> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm

Korzystanie z instrukcji formatowania

Instrukcja format stosuje podany format do określonej zmiennej wyłącznie do celów wyświetlania , tzn. Podstawowa wartość nie zmienia się.

data example1 ;
  Date  = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */
  Date2 = '31AUG2016'd ;
  format Date monyy7. Date2 yymmddn8. ;
run ;
Data Data 2
AUG2016 20160831

Używanie instrukcji formatowania do grupowania danych

Możesz zastosować formaty w ramach procedury, np. Aby zmienić grupy w proc summary proc freq lub proc freq .


Grupowanie dat SAS

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 ;
Data Dni
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 ;
Data Dni
JUN2016 30
JUL2016 31
AUG2016 31

Zaletą użycia formatu jest zachowanie naturalnego porządku sortowania.


Używając sashelp.class jako przykładu, powiedz, że chcesz porównać częstotliwość pierwszej litery każdej nazwy. Możesz użyć funkcji substr() aby znaleźć pierwszą literę i uruchomić proc freq na nowej zmiennej. Alternatywnie możesz zastosować $1. format do zmiennej Name :

proc freq data=sashelp.class ;
  table Name ;
  format Name $1. ;
run ;
Nazwa LICZYĆ
ZA 7
b 4
do 2)
itp.

Niestandardowe formaty

Formaty niestandardowe, znane również jako formaty zdefiniowane przez użytkownika, mogą być tworzone i używane jak wszystkie inne formaty domyślne.

/*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;

Zmienna state-var zostanie wydrukowana zgodnie z nowym formatem. Na przykład wartość 'CA' zostanie wydrukowana jako 'California' . Jeśli wartość nie została sformatowana, na przykład 'CT' , wartość ta zostanie wydrukowana tak, jak pojawia się w zestawie danych.

Używanie informacji do odczytu danych

Informacje służą do informowania SAS, jak wczytać dane, i są identyfikowane za pomocą instrukcji informat .

data test;
 infile test.csv;
 informat     id $6.
              date mmddyy10.
              cost comma10.2
 ;
 input @1 id
       @7 date
       @20 cost
 ;
run; 

Informacje i formaty mogą być również używane razem do wczytywania danych i zapisywania ich w innym formacie, np. Ze zmienną wynagrodzenia poniżej:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow