
2 méthodes pour de nouveaux formats
février 13, 2008Deux méthodes sont disponibles pour créer des formats sous SAS :
- entrée les données manuellement dans une instruction value d’une part ;
- réutiliser les données stockées dans un SAS data set.
Chacune des méthodes à un champ d’action privilégié.
- On préférera l’entrée manuelle pour un format ayant peu de valeurs et qui ne soit pas un standard pour plusieurs projets.
- Dans le cas contraire, de nombreuses valeurs ou des valeurs récurrentes entre études, l’utilisation d’un data set sera plus appropriée.
Dans les deux cas, la procédure format sert. Le nom du format ne doit pas déjà exister parmi les formats actifs. Chaque valeur à convertir ne doit apparaître qu’une fois. Quatre informations sont requises avec les deux méthodes :
- Le nom du format
- La valeur d’origine
- La nouvelle valeur
- Le type de données pouvant recevoir ce format (caractère ou numérique).
Deux précisions :
- Par défaut le type est numérique. Il n’est donc pas obligatoire de le préciser. Seul un changement explicite peut le modifier.
- Le nom du format ne doit pas avoir plus de 32 caractères, voir 31 pour les formats destinées aux variables caractères, l’espace restant étant réservé au symbole dollar. Sous SAS 8.2, il ne fallait pas plus de 8 et 7 caractères respectivement. De plus, le format ne doit pas se terminer par un chiffre.
1. Le cas du data set transformé en format : en créant un data set avec ces 4 informations, vous pouvez créer un format. Ces variables seront toutes caractères et s’appelleront respectivement :
- FMTNAME pour le nom du format,
- START pour la valeur d’origine (la valeur stockée dans SAS),
- LABEL pour la nouvelle valeur (celle qui sera affichée)
- TYPE avec C pour un format s’appliquant à des données caractères et N pour un format numérique.
Le type n’aura besoin d’être précisé que dans le cas de données caractères. Sans précision de votre part, SAS choisira TYPE=N.
Dans l’instruction PROC FORMAT, le mot CNTLIN= introduit le nom du jeu de données.
proc format cntlin=grp;
run;
2. Le cas des données saisies manuellement : après le mot-clé on précisera
- le type du format via le symbole dollar ($) si caractère seulement
- le nom du format
Puis sont listées chacune des valeurs d’origine suivies de la nouvelle valeur entre guillemets. Chaque rapprochement est présenté sous forme d’égalité. Les valeurs d’origines seront entre guillemets si elles sont caractères.
Conseil : par soucis de lisibilité, les différentes valeurs du format seront mises l’une en dessous de l’autre.
proc format;
value grp 10 = ‘Per Protocol’
11 = ‘Modified Per Protocol’
20 = ‘Intent-to-Treat’
21 = ‘Modified Intent-to-Treat’;
value $ grp ‘PP’ = ‘Per Protocol’
‘mPP’ = ‘Modified Per Protocol’
‘ITT’ = ‘Intent-to-Treat’
‘mITT’ = ‘Modified Intent-to-Treat’;
run;
Pour plus d’informations sur la notation de l’instruction VALUE, reportez vous à l’article intitulé « Proc Format : 7 points forts de VALUE« .
Créer des formats permanents via l’option LIBRARY : jusqu’à présent les formats ne seront valables que le temps de l’exécution de votre programme (batch mode) ou le temps de la session SAS (interactive mode). Pour les sauvegarder sur votre disque dur, et donc de manière permanente, précisez l’endroit via un nom de bibliothèque en tant qu’option LIB= de l’instruction proc format. Par défaut, il s’agit de la bibliothèque temporaire WORK. L’appel d’un format, qu’il soit temporaire ou permanent, dépasse le sujet d’aujourd’hui.
libname sasref ‘C:/sasref’;
proc format lib=sasref;
*…;
run;
Les formats du bibliothèque donnée sont regroupés dans un fichier nommé CATALOG SAS. Le nom de ce catalogue s’appelle FORMATS à moins qu’un autre nom soit donné dans l’option LIB=. Par exemple, lib=sasref.std créera un fichier et plus particulière un catalogue pour les formats nommé STD et ce catalogue sera sauvegardé dans la bibliothèque LIB.
Comment gérer les valeurs « other » avec la méthode du data set ?