Gli attributi di una variabile SAS

In un precedente post abbiamo introdotto la differenza tra variabili di tipo numerico e variabili di tipo alfanumerico.

Tuttavia, il datatype (e la lunghezza ad esso associata) non è l’unico attributo rilevante per una variabile SAS. Ce ne sono infatti alcuni altri che vi voglio descrivere in questo articolo.

AttributiVar

Name

Il nome della colonna è l’attributo che la identifica nel tracciato record del dataset. Costituisce il riferimento che utilizziamo nei nostri programmi SAS per elaborare, utilizzare, analizzare le informazioni contenute in quella variabile.

Il seguente script crea una variabile numerica, nominandola BMI,come rapporto tra le variabili Peso e il quadrato della variabile Altezza.

BMI = peso / altezza**2

Nell’assegnare il nome alle variabili di un dataset SAS, possiamo dare libero sfogo alla nostra fantasia…nel rispetto però di alcuni vincoli generici (non consideriamo il caso dei cosiddetti SAS literals). Per essere valido, il nome di una variabile SAS:

  • deve essere lungo al massimo 32 caratteri
  • deve iniziare con una lettera o un underscore (_)
  • non può contenere spazi
  • non può contenere caratteri “speciali” che non siano un underscore (_), ma solo lettere (a-z, A-Z o numeri 0-9)

quindi, questi sono nomi validi per una variabile SAS:

  • eta
  • datanas
  • _varX1
  • Provincia_di_Residenza

mentre questi non lo sono:

  • età
  • 3trimestre
  • provincia di nascita
  • giacenza_media_ultimi_12_mesi_apertura_conto_corrente

infatti, il primo contiene il carattere “speciale” (à), il secondo inizia con un numero, il terzo contiene spazi, il quarto eccede i 32 digit d lunghezza massima consentita.

Avrete forse notato che è possibile utilizzare sia lettere maiuscole che lettere minuscole nel nominare le variabili. SAS, infatti, è linguaggio totalmente NON CASE-SENSITIVE, se così si può dire, per quanto riguarda il nome delle variabili. In altri termini, a differenza di quanto avviene per molti altri linguaggi di programmazione, in SAS non c’è differenza tra i nomi eta, Eta ed ETA, per esempio. Tutti e tre i nomi si riferiscono alla medesima variabile, indipendentemente da come è stata referenziata la prima volta nel tracciato record del dataset. Quindi, per converso, in SAS, NON è possibile referenziare campi diversi, semplicemente nominandoli con combinazioni differenti UP/LOWCASE degli stessi caratteri.

Label

Il nome della variabile potrebbe non sempre essere sufficientemente “esplicativo” del “contenuto” della stessa. Ad esempio:

  • eta_m
  • ult_acc_val

potrebbero essere variabili il cui contenuto non è di immediata comprensione da parte di chi non è “esperto del dominio” di competenza del dataset. L’utilizzo di etichette descrittive del tipo:

  • ‘Età della madre’
  • ‘Ultimo Account valido’

potrebbero risultare un valido ausilio nella comprensione di ciò che la variabile “contiene”.

Uno dei modi possibili per attribuire una label ad una variabile è utilizzare lo statement label:

label ult_acc_val = "Ultimo Account valido";

L’unico vincolo da rispettare nell’assegnazione di un’etichetta ad una variabile è la lunghezza massima di 256 caratteri.

Format

Il formato di una variabile rappresenta il modo in cui i valori della variabile stessa vengono visualizzati all’apertura di un dataset in modalità VIEWTABLE o in report.

Ad esempio, è possibile CREARE un formato che permetta di visualizzare in un report (tabella o grafico, ad esempio) i valori della variabile pub_pri ‘1’ e ‘2’ come, rispettivamente, ‘Ente pubblico’ e ‘Ente privato’.

Il vantaggio principale di tale “soluzione” consiste nella possibilità di risparmiare notevole spazio di archiviazione soprattutto quando si ha a che fare con dataset costituiti da migliaia o milioni di osservazioni.

È facilmente comprensibile come sia molto più efficiente creare una variabile CHAR di lunghezza 1 (sufficiente per salvare i valori ‘1’ o ‘2’) piuttosto che una di lunghezza 13 (i byte necessari per salvare il valore “Ente pubblico” nativamente nel dataset). Al contempo è possibile utilizzare formati di decodifica per i valori di una variabile allo scopo di renderli maggiormente intellegibili, nell’ambito, ad esempio, di un report.

Qui viene utilizzato il formato alfanumerico $sex., appena creato tramite la proc format, per decodificare i valori della variabile sex del dataset sashelp.class e produrre una distribuzione di frequenza della variabile stessa:

proc format;
   value $sex
      'M' = 'Maschi'
      'F' = 'Femmine'
;
run; 
proc freq data = sashelp.class; 
   table sex;
   format sex $sex.;
run;

Questo è il risultato:

Freq_format

SAS System fornisce un cospicuo dizionario di formati “pronti all’uso”. In particolare sono numerosi i formati per i campi numerici e data.

Da notare che i formati utilizzati per decodificare campi alfanumerici sono identificati dal simbolo di $ come prefisso del nome del formato stesso.

Informat

L’informat è l’attributo che indica come il software deve interpretare i dati al momento della lettura da un file esterno o dell’input da parte dell’utente. Costituisce il riferimento che SAS utilizza per “tradurre” il dato in lettura e trascriverlo, “in scrittura”, in un dataset.

Supponiamo, ad esempio, di voler “leggere” i seguenti dati e di volerli salvare in un dataset:

datiINFILE

A tale scopo, possiamo scrivere il seguente passo di data (essendo il numero di record esiguo, ci limiteremo a creare il dataset “dal nulla” imputando i dati direttamente dal datastep, ossia…non leggeremo un file esterno che li contiene):

data acquisti;
   input ID_acquisto dt_acquisto imp_acquisto;
   attrib id_acquisto informat = 6. format = z6. label = "Identificativo acquisto"
          dt_acquisto informat = ddmmyy10. format = date9. label = "Data acquisto"
          imp_acquisto informat = comma6.2 format = dollar10.2 label = "Importo acquisto"
   ;
datalines; 
124325 08/10/2021 1,768.03 
325 12/02/2021 1,290.08
12 03/01/2021 12,444.01
11465 27/05/2021 84.19
124400 03/11/2021 1,117.15 
;
run;

Con questo semplice passo di data, per ciascuna delle 3 variabili da leggere, abbiamo istruito SAS, tramite lo statement attrib, a fare diverse cose:

  1. abbiamo specificato, mediante lo statement informat, come debbano essere interpretati (…detto in altri termini, come sono scritti e quindi come devono essere letti) i dati in ingresso.
  2. mediante lo statement format, abbiamo detto a SAS come dovranno essere rappresentati (visualizzati) i dati.
  3. tramite lo statement label abbiamo “assegnato” alle variabili un significato descrittivo del loro contenuto.

Questo è il risultato:

Acquisti

Osservando le proprietà delle colonne del dataset, vediamo in effetti, che anche questa volta tutto è andato secondo i piani 😁:

AttributiVar2

Anche per questa volta, è tutto.
Spero che questo post vi sia stato utile nel capire quali sono gli attributi principali di una variabile SAS e…alla prossima…👋

SAS e tutti gli altri nomi di prodotti e servizi di SAS Institute Inc. sono marchi registrati di SAS Institute Inc. negli USA e in altri paesi. ® indica la registrazione negli USA.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...