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.0es.comma11.0 -
comma12.2es.comma12.2 -
dollar11.2ad esempio $ 5,789,12 -
nlmnlgbp11.2ad 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;