En SAS, l’instruction ALTER de PROC SQL a la capacité de changer le libellé d’un data set, modifier le format/informat ou le libellé d’une variable. Mais son principale intérêt réside dans sa capacité à modifier la longueur d’une variable caractère sans changer la position de la variable dans le data set.
1. Comparaison avec deux autres méthodes : PROC DATASETS et l’étape DATA
Alors que PROC DATASETS permet de modifier le format/informat, le libellé d’une variable ou de renommer une variable, il ne permet pas de changer la longueur d’une variable.
Avec une simple étape data, il est possible de modifier la longueur de la variable en ajoutant une instruction LENGTH avant de lire les donnees avec un SET/MERGE… Mais la séquence d’affichage des variables n’est plus respecté. Il faut soit avoir sauvegardé au préalable l’ordre d’affichage (ou l’entrer manuellement, bof !), soit utiliser l’instruction ALTER de PROC SQL…
2. Quelques données pour tester soi-même
* Create two formats SEX and GENDER;
proc format;
value $ sex ‘M’=‘Male’
‘F’=‘Female’;
value $ gender ‘M’=‘Homme’
‘F’=‘Femme’;
run;
*Create a data set named CLASS ;
*based on the SASHELP.CLASS data set ;
*adding the SEX format to the SEX variable;
data class;
set sashelp.class;
format sex sex.;
run;
3. L’instruction ALTER pour modifier la longueur d’une variable
Dans l’instruction ALTER de PROC SQL, le mot-clé MODIFY introduit deux variables SEX et NAME à modifier.
proc sql;
alter table class (label=‘Changes with PROC SQL and ALTER’)
modify sex format=$gender.,
name char(20) label=‘Student Name’;
quit;
Changement le plus intéressant :
- La longueur de la variable caractère NAME est à l’origine 8. Elle est remplacée par 20.
Quelques changements secondaires :
- Libellé de data set : Dans l’exemple ci-dessus le data set CLASS a pour libellé ‘Changes with PROC SQL and ALTER’.
- format de variable : Le format de la variable SEX est à l’origine $SEX. Il est ici remplacé par le format $GENDER.
- Libellé de variabel : Le libellé de la variable NAME est ajouté. Il s’agit de ‘Student Name’.
A retenir :
- Seules les variables caractères peuvent avoir leur longueur changées au moyen de l’instruction ALTER.
- Cette instruction permet certe de modifier le format d’un data set. Néanmoins, elle ne permet pas de supprimer tous les formats d’un data set.
Lectures complementaires :
- Modifier un data set sans le lire (formater, renommer, libeller)
- Changer la sequence d’affichage des variables
- 4 etapes de base pour creer un data set avec PROC SQL
SAS Online DOC
- The SQL Procedure