Formato SAS PROC | Formato predefinito e definito dall'utente in SAS

Contenuti

Ho trascorso una parte significativa della mia carriera come specialista della visualizzazione dei dati. Sono molto esigente riguardo alla formattazione e ai rapporti. Quindi, quando ho iniziato a usare SAS, ha affrontato alcune sfide durante la modifica dei formati dei numeri e dei caratteri, soprattutto quando si trattava di date. Non sorprende che sia io che Kunal riceviamo un buon numero di richieste su questo argomento..

e SAS, ci sono diverse opzioni per migliorare i layout dei report. In questo articolo, parleremo in particolare dei metodi per giocare con il formato dei valori dei dati. Va notato che queste modifiche si applicano solo mentre vengono visualizzati i risultati. La modifica del formato di output non cambia la forma, i dati sono memorizzati nel backend.

Per impostazione predefinita, SAS fornisce diversi formati integrati per gestire vari formati, ma non sono sufficienti per soddisfare i requisiti personalizzati che i tuoi dati potrebbero avere. Ad esempio, potremmo aver codificato Maschio e Femmina come M e F (oh 0 e 1), ma durante la stampa vorremmo mostrare il campo solo come MASCHIO e FEMMINA. Un altro esempio comune è la visualizzazione dei prefissi sui numeri di telefono da 10 cifre (ad esempio, 123-3456-789).

PD: Questo è un articolo lungo rispetto a quello che scrivo di solito, quindi sentiti libero di digerirlo a pezzi.

L'articolo è suddiviso in 2 parti generali: Primo, comprendiamo formati predefiniti e formati definiti dall'utente in SAS. Prossimo, analizziamo varie applicazioni ed esempi di questi concetti.

1_proc_format_sas-6665279

Formati SAS integrati

Prossimo, vengono visualizzati i dati di esempio contenenti dettagli sulle prestazioni dell'agente. Useremo questo set di dati in esempi e discussioni in questo articolo. Qui DOJ è in formato numerico, come definito da SAS per impostazione predefinita, a partire dal 1 di gennaio di 1960.

2_proc_format_data-2295727Diamo prima un'occhiata alla sintassi dell'istruzione FORMAT: –

Sintassi: – FORMATO Formato variabile (S);

Facciamo alcuni esercizi con la dichiarazione di formato:

Esempio 1: Mostra DOJ nel formato GGMMAAAAA:

Codice:

Elabora dati di stampa = Vendite;
Formato Data DOJ 9. ;
Correre;

Produzione:

3_proc_format-6128743

Ecco l'elenco dei formati di data predefiniti disponibili per modificare il formato di output delle variabili:

4_proc_format-5452091

Esempio 2: visualizzare l'importo delle vendite in dollari con una cifra decimale

Codice:

Elabora dati di stampa = Vendite;
Importo di vendita formato Dollar9.1;
Correre;

Produzione:

5_proc_format_sas-1402548

Elenco dei formati di data predefiniti disponibili per modificare il formato di output delle variabili:

6_proc_format_sas1-3504838

Esempio 3: Visualizza Salesamount in dollari con due cifre decimali con virgole e DOJ in formato Weekdate.

Codice:

Elabora dati di stampa = Vendite;
Formato Importo vendite Dollari 12,2 DOJ WEEKDATE .;
Correre;

Produzione:

7_proc_format_sas-2681156

Necessità di formati definiti dall'utente:

Finora abbiamo visto come cambiare il formato di numeri e date con i formati SAS integrati. Ma ci possono essere molte volte in cui i formati integrati di SAS non soddisfano le nostre esigenze.. Come nel set di dati corrente, vogliamo:

  1. Spettacoli “MASCHILE” e “FEMMINILE” invece di “m” e “F”
  2. Ridefinire le categorie A, B, C, D ed E come Ultra, Super, Media, Basso e scarso
  3. Mostra la frequenza di Salesamount in tre categorie ” = 12000″

Tutte queste cose possono essere fatte con il passaggio dei dati (o PROC SQL) con l'istruzione If-Else (o cambia caso), pero requerirá una nueva variabile que almacenará estos valores formateados. Mentre, se vogliamo solo cambiare il display (e non i valori nel set di dati), quindi creare un formato definito dall'utente utilizzando PROC FORMAT è un modo più efficiente per apportare queste modifiche.

Formati definiti dall'utente utilizzando Proc FORMAT

PROC FORMAT è una procedura che crea una mappatura dei valori dei dati sulle etichette dei dati. La mappatura FORMAT definita dall'utente è indipendente da un SAS DATA SET e dalle variabili e deve essere assegnata esplicitamente in un DATASTEP e / la successiva PROC.

Sintassi di PROC FORMAT: –

8_proc_format_sas-8064107

Regole per definire FORMAT NAME:
  1. Per i valori dei caratteri, il primo carattere deve essere un simbolo del dollaro ($) e una lettera o un carattere di sottolineatura come secondo carattere. Per valori numerici, il nome deve avere una lettera o un carattere di sottolineatura come primo carattere
  2. Il nome non può finire con un numero
  3. Non può essere il nome di un formato SAS esistente
  4. Non deve terminare con un punto nell'istruzione VALUE

Risolviamo i problemi discussi sopra utilizzando il formato PROC:

Problema 1 (e 2): Mostra M e F come maschio e femmina.

Codice:

Formato del processo;
Valore $ Genderfmt 'M’ = 'Maschio’
'F’ = 'Donna';
Correre;
Elabora dati di stampa = Vendite;
Genere Formato $ Genderfmt. ;
Correre;

Produzione:

9_proc_format_sas-4009602Allo stesso modo, possiamo risolverlo per il problema 2. Definisci la categoria A, B, C, D ed E come Ultra, Super, Media, Basso e scarso.

Problema 3: vuoi mostrare la frequenza di Salesamount in tre categorie ” = 12000″

Codice:

Formato proc;
Valore Salegrp basso-8000 = '<8000'
8000 – <12000 = '8000-12000'
12000-Alto = '> = 12000';
Correre;
Proc Freq Data = Ventas;
Salesamount Formato Salegrp .;
Mesa Importo di vendita;
Correre;

Produzione:

10_proc_format_sas-6560974

Al di sopra, Ho usato gli intervalli per definire il formato. Può essere utilizzato per valori numerici e di caratteri.

Le parole chiave speciali utilizzate per definire gli intervalli sono: –

un) Gli intervalli possono essere più valori separati da virgole.

io) 'UN', 'B', 'C’
ii) 22, 44, 67

B) Gli intervalli possono includere o escludere valori di delimitazione, basato sull'uso di varie parole chiave come:

io) 24 – 45: Include i valori di 24 un 45 Compreso 24 e 45.
ii) 24 <- 45: Include i valori tra 24 un 45 Compreso 45 ed escludendo 24.
iii) 24 – <45: Include i valori tra 24 un 45 Compreso 24 ed escludendo 45.
IV) 24 <- <45: Include i valori tra 24 un 45 escludendo 24 e 45.

C) BASSO si riferisce al numero minimo disponibile, ALTO si riferisce al numero più alto disponibile e ALTRO include tutti i numeri non specificati. Altri includono anche valori mancanti se non specificati.

Alcuni punti importanti / applicazioni da considerare su PROC FORMAT

  • PROC Format restituisce il valore originale se non abbiamo incluso tutti i valori dei dati durante la definizione del formato.

11_proc_format_sas-6398919

  • Possiamo creare più formati in un'unica istruzione PROC FORMAT, specificando più valori in formato PROC

Codice:

Formato del processo;
Valore Salegrp basso-8000 = '<8000'
8000 – <12000 = '8000-12000'
12000-Alto = '> = 12000';
Valore $ Genderfmt 'M’ = 'Maschio’
'F’ = 'Donna';
Correre;
Elabora dati di stampa = Vendite;
Salesamount Formato Salegrp. Genere $ Genderfmt .;
Correre;

Produzione:

12_proc_format_sas-4219573

  • PAGROC FORMAT può essere utilizzato per creare unioni di dati efficienti

In FORMATO PROC, abbiamo una scelta CNTLIN, che ci consente di creare un formato da un set di dati invece di un'istruzione VALUE. Prima di usare questa opzione, diamo prima un'occhiata alle linee guida qui sotto: –

un) Il set di dati di input deve contenere tre variabili richieste da PROC FORMAT: COMINCIARE, ETICHETTA y FMTNAME.

B) Qui START è il campo chiave tra queste due tabelle e deve essere univoco nel set di dati di input (set di dati, stiamo usando in CNTLIN opzione).

C) La variabile LABEL è il valore che vogliamo assegnare a un altro set di dati.

D) La variabile FMTNAME è il nome del formato e deve essere passata tra virgolette singole.

e) Dopo aver definito il formato, possiamo usare la funzione put per creare una variabile nel set di dati in base al campo chiave e al formato che abbiamo definito.

Esempio:

Supponiamo di voler mappare l'agente DOB dal set di dati Agent_DOB (Dati di esempio) al set di dati precedente13_proc_format_sas-7383015

Qui vogliamo creare un formato basato su Agent_DOB e applicalo a Saldi. E Agent_DOB, considereremmo AGT_ID (campo chiave, tra entrambi i set di dati) como START, DOB come etichetta e FMTNAME = '$ AGENT'. Ora guarda le dichiarazioni (prossimo).

Agente dati_DOB_Fmt;
Rinomina AGT_ID = START;
Imposta Agent_DOB;
Etichetta = DOB;
FMTNAME = '$ AGENTE';
Correre;
Formato processo CNTLIN = Agent_DOB_Fmt;
Correre;

14_proc_format_sas-9892599

Il codice sopra ha generato un formato utilizzando il set di dati Agent_DOB_Fmt e quindi, per unirlo al set di dati SALES, sono stati scritti i passaggi dei dati (prossimo).

Dati Vendite_DOB;
Imposta le vendite;
Date_birth = Put (Otto_ID, $ Agente.);
Correre;

15_proc_format_sas-4787747

Limitazione di PROC FORMAT come fusione

Questo è il metodo migliore quando vogliamo unire una variabile da un altro set di dati, ma se vogliamo aggiungere cinque o più variabili, quindi dobbiamo ripetere l'istruzione PROC FORMAT tante volte insieme alla funzione PUT multipla nel passaggio dati. Quindi, Preferisco usare MERGE o PROC SQL in questi casi.

  • Possiamo salvare il formato SAS definito dall'utente per un uso futuro.

Tutti i formati SAS sono archiviati in un catalogo (raccolta di formati). Quando creiamo un formato, è memorizzato nel catalogo. Se non specifichiamo il catalogo, SAS memorizza i formati nella libreria WORK in un catalogo chiamato FORMATS. Come altri set di dati nella libreria WORK, también se eliminan al final de la sessione.

Ora, per salvare formati definiti dall'utente, dobbiamo specificare dove conservare il catalogo e come chiamarlo. Ciò può essere ottenuto memorizzando i formati in una libreria diversa da WORK.

passo 1 Primo, dobbiamo definire una libreria (qui sto usando l'edizione SAS University)

Sintassi: – LIBNAME Nome_libreria “Il percorso”
LIBNAME STATDATA “/ carpetas / miscarpetas / ECSTAT0”;

Step-2 Utilizzare l'opzione libreria in formato PROC e fornire un nome libreria con il nome del file di formato. Il nome del file deve essere un nome di set di dati SAS valido.

Sintassi: – PROC FORMAT LIBRARY = Library_Name.MYFILENAME;
Libreria dei formati di processo = STATDATA.Gender_Fmt;
Valore $ Genderfmt 'M’ = 'Maschio’
'F’ = 'Donna';
Correre;

sopra programmaam ha creato un file chiamato Gender_Fmt.sas7bcat nella posizione della tua directory.

Ora, ogni volta che vogliamo usare un formato memorizzato, dobbiamo dire a SAS di cercare i formati in quel file di catalogo. Questo è fatto con il fmtsearch opzione. Quindi, prima di usarlo, dobbiamo scrivere una dichiarazione.

Sintassi: – Opzioni fmtsearch = (Library_Name.MYFILENAME)
Opzioni fmtsearch = (STATDATA.Gender_Fmt); / * Dopo questo possiamo usare Gender_Fmt * /
Proc Stampa dati = Ventas;
Genere Formato $ Genderfmt .;
Correre;

Il formato immagine SAS crea modelli in cui definiamo come vengono visualizzati i numeri. Con l'uso del FORMATO IMMAGINE, possiamo superare più problemi di visualizzazione dei numeri come: –

1. Inserimento di decimali e virgole

2. Incorpora caratteri con numeri

3. prefissi

Esempio 1: – Voglio mostrare l'importo delle vendite che termina con un segno% e preceduto da un segno $.

Formato del processo;
Imagen New_fmt low-High = ‘000000%’ (Prefisso = '$');

Correre;
Elabora dati di stampa = Vendite;
Formato Salesamount New_fmt .;
Correre;

Produzione:

16_proc_format_sas-4904837

Esempio 2: – Diciamo, Ho un numero di telefono per 10 cifre e voglio visualizzarlo come 123-3456-789.

Telefono dati;
Contatto di ingresso;
linee dati;
1111111111
222222222
3333333333
;
Correre;
Formato del processo;
Tele basso-alto immagine = ‘000-0000-000 io;
Correre;
Proc stampa dati = Telefono;
Formato contatto telefonico .;
Correre;

17_proc_format_sas-2596746

Note finali: –

In questo articolo, abbiamo discusso vari metodi per visualizzare il formato dei valori dei dati utilizzando formati incorporati e definiti dall'utente. Abbiamo anche analizzato varie tecniche per definire i formati come intervalli, immagini, gestire i valori mancanti e i valori non corrispondenti utilizzando ALTRI. Abbiamo anche discusso dell'efficiente tecnica di fusione utilizzando PROC FORMAT. Questo dovrebbe essere tutto ciò di cui hai bisogno per essere un professionista con i formati SAS.

Non abbiamo trattato In-format durante la lettura di un set di dati non standard. Ne parleremo in uno dei nostri prossimi post..

Spero che questo articolo ti sia stato utile? Abbiamo semplificato questo argomento e abbiamo cercato di presentarlo in modo molto semplice e lucido. Se hai bisogno di ulteriore aiuto con il formato SAS, sentiti libero di fare le tue domande attraverso i commenti qui sotto.

Se ti piace quello che hai appena letto e vuoi continuare a imparare l'analisi, iscriviti alle nostre email, Seguici su Twitter o come il nostro pagina Facebook.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.