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;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow