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.0np. 1comma11.0 -
comma12.2np. 1comma12.2 -
dollar11.2np. 5 789,12 USD -
nlmnlgbp11.2np. 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;