Ricerca…
introduzione
Informazioni e formati vengono utilizzati per indicare a SAS come leggere e scrivere i dati rispettivamente. Gli informat sono comunemente usati in un datastep durante la lettura di dati da un file esterno. Gli informats sono usati raramente in PROC. I formati sono comunemente usati in entrambi i passi di dati e PROC.
Osservazioni
I formati SAS convertono valori numerici o di carattere in valori di carattere. Un formato può essere applicato utilizzando un format
o un'istruzione put
, che cambia il modo in cui viene visualizzato un valore o utilizzando la funzione put
per memorizzare il valore formattato in una nuova variabile.
Esistono quattro categorie di formati:
- Carattere: indica a SAS di scrivere i valori dei dati dei caratteri dalle variabili di carattere.
- Data e ora: indica a SAS di scrivere i valori dei dati da variabili che rappresentano date, orari e date.
- ISO 8601 - indica a SAS di scrivere data, ora e valori datetime utilizzando lo standard ISO 8601.
- Numerico - indica a SAS di scrivere valori di dati numerici da variabili numeriche.
I formati di solito assumono la forma <formatname><w>.<d>;
, w
essendo la larghezza (compresi eventuali decimali e il punto), d
il numero di posizioni decimali.
Formati di data comuni (applicati ai valori di data SAS):
-
date9.
ad es. 02 AGOSTO 2016 -
ddmmyyn8.
ad es. 02082016 -
ddmmyy8.
ad esempio il 02/08/16 -
yymmdd10.
es. 20160802 -
year4.
es. 2016
Formati numerici comuni (applicati ai numeri):
-
comma11.0
es.comma11.0
-
comma12.2
es.comma12.2
-
dollar11.2
ad esempio $ 5,789,12 -
nlmnlgbp11.2
ad es. 2.468,02 £
Altri formati:
-
$hex8.
, converti stringa in esadecimale -
$upcase.
, converti stringa in maiuscolo -
$quote.
, racchiudi una stringa tra virgolette
Un elenco completo di formati può essere trovato qui> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm
Utilizzando la dichiarazione di formato
L'istruzione format
applica il formato dato alla variabile specificata solo a scopo di visualizzazione , ovvero il valore sottostante non cambia.
data example1 ; Date = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */ Date2 = '31AUG2016'd ; format Date monyy7. Date2 yymmddn8. ; run ;
Data | Data2 |
---|---|
AUG2016 | 20160831 |
Utilizzando l'istruzione format per raggruppare i dati
È possibile applicare i formati all'interno di una procedura, ad esempio per modificare i raggruppamenti all'interno di un proc summary
proc freq
o proc freq
.
Raggruppamento di date 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 | giorni |
---|---|
201606 | 30 |
201.607 | 31 |
201.608 | 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 | giorni |
---|---|
JUN2016 | 30 |
JUL2016 | 31 |
AUG2016 | 31 |
Il vantaggio dell'utilizzo di un formato è il mantenimento dell'ordine di ordinamento naturale.
Usando sashelp.class
come esempio, sashelp.class
di voler confrontare la frequenza della prima lettera di ciascun nome. È possibile utilizzare la funzione substr()
per trovare la prima lettera ed eseguire un proc freq
sulla nuova variabile. In alternativa, puoi applicare $1.
formattare alla variabile Name
:
proc freq data=sashelp.class ; table Name ; format Name $1. ; run ;
Nome | CONTARE |
---|---|
UN | 7 |
B | 4 |
C | 2 |
eccetera. |
Formati personalizzati
I formati personalizzati, noti anche come formati definiti dall'utente, possono essere creati e utilizzati come qualsiasi altro formato predefinito.
/*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;
Lo state-var
variabile state-var
sarà stampato in base al nuovo formato. Ad esempio, il valore 'CA'
verrà stampato come 'California'
. Se un valore non è stato formattato, come 'CT'
, quel valore verrà stampato così come appare nel set di dati.
Utilizzare informats per leggere i dati
Gli informatori vengono utilizzati per indicare a SAS come leggere i dati e sono identificati con una dichiarazione informat
.
data test;
infile test.csv;
informat id $6.
date mmddyy10.
cost comma10.2
;
input @1 id
@7 date
@20 cost
;
run;
Gli strumenti informatici e i formati possono anche essere usati insieme per leggere i dati e scriverli in un formato diverso, come nella seguente variabile:
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;