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. 1comma11.0
-
comma12.2
np. 1comma12.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;