Connaître et modifier les attributs des variables

Chaque variable possède les attributs suivants :

Attributs obligatoires :

Attributs facultatifs :

Les formats :

Formats prédéfinis :

Les formats numériques s'appliquent aux variables de type numérique.
Le format n. indique que la variable numérique sera lue / écrite sur n caractères.
Le format n.d indique que la variable numérique sera lue / écrite sur n caractères dont d décimales.
Le format Zn. force l'écriture sur n caractères en complétant à gauche par des 0.

Les formats caractères s'appliquent aux variables de type caractère, et commencent par un "$".
Le format $n. indique que la variable caractère sera lue / écrite sur n caractères.

Cas particulier des formats date :

En SAS, une date est une variable numérique qui représente le nombre de jours écoulés depuis une certaine date de référence interne au système. Afin de rendre les valeurs plus parlantes, on peut appliquer un des formats prédéfinis suivants (il en existe d'autres) :

FormatExemple avec le 14 janvier 2005
DATE9.14JAN2005
YYMMDD8.05-01-14
DDMMYY8.14/01/05

Formats définis par l'utilisateur :

L'utilisateur peut définir ses propres formats et informats grâce à la procédure PROC FORMAT (voir le paragraphe consacré dans la partie "Etape PROC").
La définition de formats s'avère particulièrement utile lorsqu'on souhaite faire du regroupement de modalités sans modifier les valeurs d'origine.

Note : Tous les formats se terminent par un ".".

Connaître les attributs d'une variable :

Dans la fenêtre de visualisation de la table (que l'on obtient en double cliquant sur une table dans la fenêtre Explorer), il suffit de faire un clic droit sur l'en-tête de la colonne dont on désire connaître les attributs, puis de choisir "Column Attributes".

Vous pouvez aussi retrouver tous les attributs de toutes les variables d'une table en visualisant les propriétés de la table. Deux méthodes :

Modifier les attributs obligatoires d'une variable :

Modifier le nom : Instruction RENAME

Dans une étape DATA, on utilise l'instruction ou l'option RENAME :

DATA destination;
SET source;
RENAME old=new;
RUN;

DATA destination;
SET source (rename=(old=new));
RUN;

Ces deux programmes ont pour effet de créer une table destination qui est la copie de la table source, la variable old ayant été renommée en new. Dans ce cas très simple, le choix d'utiliser l'instruction ou l'option est transparent. On verra plus loin que ce n'est pas toujours le cas.

Modifier la longueur de stockage : Instruction LENGTH

A l'intérieur d'une étape DATA, on utilise l'instruction LENGTH :

LENGTH mavariable <$> n ;

Définit pour la variable de nom mavariable une longueur de stockage de n caractères.
Dans le cas d'une variable caractère, on ajoute un $ entre le nom de la variable et le nombre de caractères n.

Cette instruction ne peut pas être appliquée à une variable déjà existante !
Si l'on souhaite modifier la longueur de stockage d'une variable existante, il faut définir une nouvelle variable de la longueur voulue, puis affecter les valeurs de l'ancienne variable à cette nouvelle variable.

Exemple :

Programme
DATA destination;
SET source;
LENGTH newvar $ 10;
newvar = var;
DROP var;
RENAME newvar=var;
RUN;
Commentaire
Je crée une table destination
Dans laquelle je recopie les données de la table source
La variable newvar (inconnue dans la table source) est une variable caractère de longueur de stockage égale à 10
La variable newvar prend les valeurs de var (appartenant à la table source)
La variable var n'appartient pas à la table destination
La variable newvar s'appellera var dans la table destination

Modifier le type : Fonctions PUT() et INPUT()

Une variable est définie dès le départ comme étant d'un certain type : caractère ou numérique. Cet attribut n'est pas destiné à être modifié. Si l'on souhaite tout de même le faire, il faut, comme précédemment, passer par une nouvelle variable.
Supposons comme exemple que la table source contienne une variable varchar, de type caractère, de longueur de stockage 4, que l'on souhaite transformer en une variable numérique.
On écrit le programme suivant :

Programme
DATA destination;
SET source;
FORMAT newvarnum 4.;
newvarnum = input (varchar , 4.);
RUN;
Commentaire
Je crée une table destination
Dans laquelle je recopie la table source
La variable newvarnum (inconnue dans source) est une variable numérique de format 4.
Les valeurs prises par newvarnum résultent de la conversion en numérique (et au format 4.) des valeurs de la variable varchar
De manière symétrique, la fonction put(varnum,format_caractère) permet de convertir des données numériques en caractères.

Modifier les attributs facultatifs d'une variable :

Appliquer un label : Instruction LABEL

A l'intérieur d'une étape DATA, on utilise simplement l'instruction LABEL :

LABEL mavariable "ceci est mon label" ;

Cette instruction applique le label "ceci est mon label" à la variable mavariable. Si la variable avait déjà un label, il est écrasé par le nouveau.

Appliquer un format ou un informat : Instructions FORMAT et INFORMAT

A l'intérieur d'une étape DATA, on utilise l'instruction FORMAT :

FORMAT mavariable monformat ;

Cette instruction applique le format monformat à la variable mavariable. Monformat doit être reconnu comme un nom de format valide, soit un format prédéfini, soit un format défini par l'utilisateur. En particulier, ne pas oublier le . à la fin.
L'instruction INFORMAT s'utilise selon la même syntaxe.

L'instruction FORMAT s'utilise aussi au sein d'une étape PROC. Dans ce cas, le format de la variable n'est pas modifié au sein de la table, mais affecte uniquement le traitement en cours. Sur ce sujet, on se reportera au paragraphe consacré à la PROC FORMAT, partie "Etape PROC".