Archives pour janvier 2008

h1

4 fonctions pour enlever les blancs !

janvier 29, 2008

1. Enlever les blancs aux extrémités

Comprendre les anciens programmes et les fonctions TRIM et LEFT : jusqu’à la version SAS 8.2, pour enlever les blancs en début de la chaîne de caractères (leading blank), on les déplaçait à la fin de la chaîne (trailing blank) via LEFT, puis on les enlevait avec TRIM. Cela avait plusieurs inconvénients :

  • Il fallait utiliser deux fonctions TRIM et LEFT ;
  • Il ne fallait pas inverser l’ordre de ces deux fonctions, faute de quoi on arrivait à un résultat différent de ses attentes ;
  • Quand on appliquait cette méthode sur une chaîne de caractère vide, on se retrouvait avec une longueur de 1 au lieu de 0 ; la fonction TRIMN, qui résout ce dernier point, n’est venue qu’après, avec SAS V9.

Savoir utiliser les dernières avancées de SAS, la fonction STRIP : depuis SAS 9.1.3, la fonction STRIP résout les trois problèmes. C’est équivalent à TRIMN(LEFT()).

Si vous enlevez les blancs pour pouvoir faire une concaténation, pensez aux fonctions CATS, CATT et CATX. Pour plus de précisions, vous pouvez vous reporter à l’article “La concaténation : 4 fonctions SAS 9“.

2. Garder un seul blanc entre les mots. Vive la fonction COMPBL : il vous faudra en général un seul espace entre les mots de votre texte. Enlevez alors les doublons via la fonction COMPBL. Vous enlèverez ainsi tous les blancs en fin de chaîne sauf un.

3. Enlever tous les blancs. Vive la fonction COMPRESS : par défaut, la fonction COMPRESS enlève tous les blancs de votre texte. Ajoutez un deuxième paramètre et elle pourra vous enlever d’autres types de caractères. Mais cela dépasse le sujet d’aujourd’hui.

4. Supprimer les x premiers blancs avec RXPARSE et CALL RXCHANGE : la notation qui suit permet de remplacer n’importe quel type de texte par un autre. Ici nous nous limitons aux blancs. Dans un premier temps, définissez la valeur d’avant et la valeur d’après dans RXPARSE. Puis, dans un second temps, définissez les trois voir quatre paramètres de CALL RXCHANGE, à savoir :

  • rappelez cette définition,
  • précisez la variable à actualiser et
  • donner le nombre de fois qu’un changement doit avoir lieu.
  • par défaut, la variable d’origine sera actualisée. Pour créer une nouvelle variable, ajoutez un quatrième paramètre à CALL RXCHANGE ; la longueur de votre nouvelle variable sera de 200 à moins de l’avoir définie autrement auparavant ;

Truc : il ne peut pas y avoir plus de changement que de caractères dans la chaîne. Alors pourquoi ne pas prendre cette longueur pour remplacer tous les blancs. La fonction LENGTHC inclura les blancs en fin de texte et pourra gérer les chaînes de longueur 0.

Un exemple : voici un exemple d’une variable y de longueur 30 qui est créée à partir de la variable x à laquelle on a enlevé ses six blancs.

data one;
   length y $30;
   x= ' ZZZ ABCD AB ' ;
   rx=rxparse(" ' ' to ");
   call rxchange (rx,lengthc(x),x,y);
run;
h1

Gérer vos dossiers via UNIX, 2 raisons

janvier 26, 2008

1. Unix est très fréquemment utilisé dans le milieu professionnel : un grand nombre d’entreprises qui utilisent SAS travaillent avec de larges bases de données. Imaginez le nombre de données récoltées pour un simple appel téléphonique : le jour de l’appel, les heures de début et de fin, le numéro appelé, la zone géographique de l’émetteur et du récepteur. Ajoutez les données dérivées comme la durée de l’appel. Multipliez ce nombre de variables par le nombre d’appels et par le nombre de clients. Ajoutez les variables pour les textos et vous obtenez une base quotidienne de plusieurs millions de données. Dès lors, un système d’exploitation stable et performant sur lequel installé SAS est primordiale. Unix est donc privilégié dans la plupart des établissements.

2. Des portes ouvrent qui s’ouvrent avec les commandes propres au système d’exploitation : Alors que vous pourrez supprimer les jeux de données SAS (SAS data sets) et les catalogues SAS (SAS catalogs) à partir de la procédure datasets par exemple, vous rencontrerez de réelles difficultés pour supprimer les autres fichiers qu’il s’agisse de listing, de document Word, Excel ou de fichiers pour Internet. En plus de créer/déplacer /supprimer des fichiers, vous pouvez être amené à supprimer des répertoires ou déplacer/renommer des fichiers. Par ailleurs, pour exécuter en mode batch tous les programmes SAS d’un répertoire donné, vous aurez besoin de les lister et sauvegarder cette liste en .PGMLST. Une solution est donc de soumettre des commandes au système d’exploitation directement.

h1

8 clés pour vos en-têtes

janvier 25, 2008

Que vous programmiez en SAS, en C++, en Java ou en Visual Basic, la qualité d’un programme commence par l’utilisation de commentaires. Ceux-ci doivent être compréhensibles par les non-spécialistes. L’entête est le premier élément à apparaître dans votre programme. Les étapes de votre programme se doivent d’être lisibles sans avoir à se plonger dans chaque ligne individuelle de code.

1. Préférez un nom de programme parlant : dans le milieu pharmaceutique, les tableaux et listings suivent des règles précises. Celles-ci assurent une cohérence entre les projets ou pour répondre à des contraintes techniques. Par exemple, ‘pp’ pourra être inclus dans le nom pour préciser la population à laquelle réfère le tableau est Per Protocol, ou encore, les noms de programmes pourront apparaître en minuscule.

2. Positionnez votre programme dans son projet : il est rare d’écrire un seul programme pour un projet. Le nom du projet auquel appartient le programme pourra ainsi figurer en premier.

3. Clarifiez l’objectif de votre programme : qu’il s’agisse le titre d’un tableau statistique “Nombre de patients par centre, âge et sexe” ou le rôle d’une macro “Créer des fichiers XML à partir de jeux de données SAS”, l’objectif du programme doit être explicitement défini.

4. Listez les grandes étapes du programme : vous pourrez compléter cette rubrique en fin de programmation en exploitant les grands titres numérotés.

5. Renvoyez votre lecteur vers les références documentaires : le protocole d’une étude statistique (protocol), le cahier d’observation électronique annoté (eCRF), le descriptif détaillé du programme (specification) sont des sources de documentation possibles.

6. Enumérez vos entrées/sorties : listez les données que vous exploitez dans votre programme et les fichiers permanents que vous crées.

7. Prévenez des limites du programme : les contraintes techniques comme la version SAS requise au minimum ou le système d’exploitation ont leur place dans l’entête.

8. Datez et signez vos programmes : En plus du nom des auteurs et les dates de création et de modifications, on trouvera l’inventaire des changements intervenus.

Vous venez de voir 8 informations clés pour votre entête. Cette liste n’est pas exhaustive. Elle doit s’adapter au cas par cas. Par exemple, votre client ou votre entreprise aura probablement une liste prédéfinie des critères à faire figurer. Afin d’éviter les oublis, vous pourrez faire l’usage d’un modèle d’entête.

h1

Un besoin ponctuel de variables macros

janvier 24, 2008

Horloge

Cet article requiert une connaissance préalable de la syntaxe pour créer des macros et des variables macros.

1. Deux types de variables macros utilisateur : lorsque vous définissez un paramètre dans votre macro, vous créez une variable macro. Vous pouvez récupérer la valeur de cette variable macro n’importe où à l’intérieur de votre macro. Vous ne pourrez pas l’appeler en dehors de votre macro par défaut. C’est d’ailleurs ce que vous voulez la plupart du temps. Ainsi vous pourrez redéfinir une variable macro du même nom, plus tard, sans risquer d’utiliser une valeur antérieure. On parle de variable macro locale (local macro variable). Par contre, si vous voulez l’utiliser en dehors de la macro, vous devez clairement le préciser avant de lui assigner une valeur. On parle alors de variable macro globale (global macro variable).

2. Trois mots-clés pour afficher les statuts des variables macros dans la log : %put pour savoir quel statut porte votre variable macro, vous pouvez utiliser le statement propre au langage macro afin de les afficher dans la log. On fera suivre %put des mots-clés suivants :

  • _global_ ou _local_ pour limiter la sélection à un statut donné parmi les macros variables utilisateur,
  • _user_ pour voir toutes macro-variables de l’utilisateur
  • _all_ pour lister toutes les variables macros, y compris celles définies par le système SAS.

3. Changer de statut : pour qu’une variable macro a priori locale soit globale, faites usage du statement propre au langage macro %global suivi du nom des variables séparées par des espaces.

4. Un exemple de variable macro locale : Dans ce premier exemple, la variable macro est créée dans une macro. On appelle la macro et affiche la valeur de la macro variable dans la log via le %put statement inclus dans la macro. Une fois l’appel de macro terminé, on affiche toutes les variables macros pour constater que la macro variable locale n’existe plus.

%macro ex_local(x=);
   %put _all_;
%mend ex_local;
%ex_local;
%put _all_;

5. Un exemple de variable macro globale : dans ce second exemple, la macro variable définie dans la macro est préalablement enregistrée comme globale. On appelle la macro et montre sa valeur grâce au %put statement inséré dans la macro. Après l’appel de macro, on liste toutes les variables macros dans la log pour remarquer que la variable macro qui est globale est toujours présente.

%global y;
%macro ex_global(y=);
   %put _local_;
%mend ex_global;
%ex_global;
%put _all_;
h1

Mes 3 principales sources de documentation

janvier 23, 2008

1. SAS online DOC : la documentation SAS est énorme. Consultez les manuels de statistique et c’est déjà plusieurs milliers de pages à feuilleter. Ces manuels existent maintenant au format .pdf. Vous économiserez du temps de recherche vis l’option ‘Rechercher’ et de la place sur votre bureau. Cependant ma documentation SAS préférée reste la documentation en ligne qui regroupe toute l’information en un endroit SAS V9.1.3. Elle dispose de trois outils de recherche :

  • Approfondir un sujet : Dans la section Contenu, vous pourrez aller dans SAS Stat pour ce qui a attrait à la statistique ou dans Base SAS pour avoir la liste des procédures de base. C’est idéal pour approfondir un sujet.
  • Recherche par index : Dans l’index, vous pourrez faire une recherche dans une rubrique précise via des mots-clés.
  • Résoudre un problème précis : Mon préféré reste la section ‘rechercher’ avec l’option ‘tous les mots’ dans une rubrique ou toutes les rubriques de la documentation en ligne. Cette recherche convient parfaitement lorsqu’on recherche une réponse précise et courte sur un sujet donné.

2. Les articles des utilisateurs SAS : de nombreux articles sont publiés sur le net au format .pdf suite à la rencontre d’utilisateurs SAS lors de conférences. La base est sauvegardée sous www.lexjansen.com. Google retrouve très facilement ces articles avec une simple recherché par mot-clé.

3. Le forum de discussion SAS-L : il existe de nombreux forums de discussions traitement de SAS. Parfois ils se rapportent à un domaine d’activité comme la pharmaceutique. Parfois, ils traitent toutes les thématiques de la statistique. Ce sont plusieurs centaines de sujets abordés chaque semaine sur le forum de discussion SAS-L qui comme son nom l’indique est centré sur SAS. C’est un outil idéal pour apprendre des problématiques des autres et se poser les bonnes questions.

Mes trois principales sources de documentations SAS sont en anglais. Pour une lecture détente, je vous propose un petit dernier, le très bien présenté journal SAS mensuel « Allô Support », rédigé par l’équipe de SAS France.

h1

Structure un programme, un exemple en 5 étapes

janvier 22, 2008

Tel un menu, les commentaires donnent une vue d’ensemble de votre programme SAS. Par la suite, vous devez expliquer les étapes de votre développement. Mais comment agencer votre code ? Voici un exemple extrait de la pharmaceutique. Il s’agit de créer un tableau statistique extrait de données sur les essais cliniques.

1. Des valeurs rapidement accessibles pour la maintenance du programme : dans cette première section figurent les informations utilisables à tout moment dans le programme. Voici quelques exemples de mises à jour :

  • changement de répertoire de vos données ou programmes ;
  • changement des labels apposés sur vos données codifiées ;
  • pour connaître les valeurs prises par vos variables macros.

Suivre cette convention aidera les autres programmeurs à se familiariser avec votre travail.

2. Regrouper les informations : l’information à publier est, le plus souvent, à recueillir parmi plusieurs jeux de données. Il vous faudra donc les combiner. Par exemple, les données démographiques sur les patients seront à ajouter aux résultats de laboratoire. Si seule une sous population vous intéresse, il faudra supprimer les champs inutiles.

3. Extraire les statistiques : cette section peut inclure le calcul de simples fréquences et pourcentages. Elle peut aussi faire l’objet du calcul de tests statistiques.

4. Mettre en forme les résultats : chaque tableau devra suivre une mise en page précise. Les titres devront être adaptés à chaque tableau et ces dérivés. Les données codées se verront remplacées par du texte via des formats. L’ensemble pourra être lu par des éditeurs de texte ou sur des fichiers Internet.

5. Nettoyage : enfin vous pouvez faire du nettoyage en supprimant toutes les données temporaires, qu’il s’agisse de jeux de données, de catalogues, de fichiers .log ou de noms reconnus comme chemin d’accès à une bibliothèque de données. Ce travail vous sera d’autant plus bénéfique que vous exécuterez plusieurs programmes à la suite des uns des autres. Cela vous évitera de mauvaises surprises dues à l’utilisation involontaire de données en mémoire.

Tout au long de ces cinq étapes, vous ponctuerez votre code de commentaires. Un programme s’allonge très rapidement même s’il est bien écrit. Pour un simple tableau statistique en essai clinique il n’est pas rare de voir l’équivalent d’une dizaine d’écrans. Pour naviguer rapidement d’une section à l’autre, rien de tel que de numéroter vos commentaires. Un programme SAS est composé principalement de deux groupes de texte (data step et procedure). Commentez chacun bloque de texte. Par exemple, “extraire pour chaque effet secondaire, le nombre de patient l’ayant vécu”. Si une étape est inhabituelle, fournissez les raisons.

h1

Emploi : Consultants SAS / Freelancers (H/F)

janvier 12, 2008

DataFocus GmbH, société à taille humaine, basée à Cologne, recrute des consultants SAS pour ses clients de l’industrie pharmaceutique, des télécommunications et des milieux financiers basés en Europe. La société travaille également avec des freelancers.

Email: Véronique Bourcier veronique.bourcier@datafocus.de