h1

A partir de quelle lettre y a-t-il une différence : la fonction compare

mai 25, 2015

La fonction COMPARE retourne le nombre zéro si aucune différence n’existe entre deux chaînes de caractères. Sinon elle retourne la position la position du premier caractère différent.

Dans l’exemple ci-dessous, deux datasets sont créés. Une fois combinés, on s’intéresse à la différence entre la variable LABEL_ONE du premier dataset et la variable LABEL_TWO du second dataset. La première différence a lieu sur la deuxième lettre. La variable DIFF prend donc la valeur 2.

data one;
   length start $8 label_one $8;
   start='1';
   label_one='ABC';
run;

data two;
   length start $8 label_two $8;
   start='1';
   label_two='AbC';
run;

data diff;
   merge one two;
   by start;
run;

data diff;
   set diff;
   diff=compare(label_one,label_two);
run;

proc print data=diff;
run;

Vous pouvez ajouter un troisième paramètre dans la fonction si vous ne voulez pas tenir compte des différences de majuscule, de blancs de début de chaîne de caractère,…

Dans quel cas utiliser cette fonction ? Si vous réalisez un rapport listant la différence entre deux valeurs pour pouvoir ensuite les corriger, vous pouvez utiliser cette fonction pour préciser à partir de quel moment la couleur devra changer.

Pour en savoir plus : la documentation SAS 9.2

Publicités
h1

Retrouver la semaine avec la fonction WEEK

septembre 28, 2014

A partir d’une date SAS, le numéro de la semaine est extrait avec la fonction WEEK. Cette fonction est composée de deux paramètres: la date SAS obligatoire et une lettre entre guillemets (‘U’,’V’ ou ‘W’) facultative. Ne pas mettre de lettre revient à choisir l’option ‘U’.

Les questions à se poser

La première question à se poser est : le premier jour de la semaine est-il un dimanche ou un lundi ?

La seconde question à se poser est : si le 1er janvier est en semaine, est-ce en semaine 0 ou la semaine 1 ?

Illustration de la fonction WEEK avec un exemple.

Prenons l’exemple de la première semaine de janvier 2015.

  • Jeudi 1er janvier
  • Vendredi 2 janvier
  • Samedi 3 janvier
  • Dimanche 4 janvier
  • Lundi 5 janvier
  • Mardi 6 janvier

Le premier jour de la semaine est un dimanche avec la lettre U. Le 1er janvier sera en semaine zéro.

Tandis que les options V et W considèrent le lundi comme le premier jour de la semaine.

  • Avec l’option V, le 1er janvier sera en semaine 1
  • Avec l’option W, le 1er janvier sera en semaine 0

Tester avec du code SAS

data one;
   today='01JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
   today='02JAN2015'd;
   output;
run;

data one;
   set one;
   week=week(today);
   weeku=week(today,'U');
   weekv=week(today,'V');
   weekw=week(today,'W');
run;

proc print data=one;
   format today date9.;
run;

Avec les fonctions SAS, il est important de garder en mémoire que le premier jour de la semaine par défaut est le dimanche et non le lundi. Ainsi la fonction WEEKDAY est également touchée par cette règle. Elle donnera un 1 pour le dimanche et un 2 pour le lundi.

Autres lectures

h1

Vidéo : Pourquoi utilisons la lettre X pour représenter l’inconnue en algèbre ?

juillet 1, 2014

Pour ces vacances d’été, je vous propose de regarder une vidéo de l’émission américaine TED où Terry Moore nous explique pourquoi nous utilisons la lettre X pour représenter l’inconnue en algèbre.

N’hésitez pas à changer le s’éteint pour avoir le sous-titre en Français.

www.ted.com/talks/terry_moore_why_is_x_the_unknown

h1

Lister fichiers et répertoires sous UNIX

novembre 2, 2013

La fonction call system permet dans le cas présent de stocker du code Unix pour rechercher des fichiers dans des répertoires données. Le résultat de la recherche est stocké dans un fichier .txt qui est lu dans une étape data.

1. Créer une macro variable pour stocker le chemin d’accès de la bibliothèque WORK

Le chemin d’accès à la bibliothèque WORK est extrait avec la fonction système PATHNA?E et est stocké dans la macro variable WORKDIR. Ce chemin d’accès sera celui où sera sauvegardé le fichier .txt de la recherche.

%let workdir=%sysfunc(pathname(work));

2. Utiliser call symput pour appeler la commande find d’UNIX 

La commande find est suivie de trois composants :

  • le chemin d’accès au(x) fichier(x) d’entrée. L’astérisk indique que tous les sous répertoire du répertoire PROJET sont consultés
  • le chemin d’accès au fichier final (ici resultat.txt) où sera stocké le résultat de la recherche. Dans l’exemple, le fichier est stocké de manière temporaire dans le répertoire utilisé par la bibliothèque WORK de SAS.
  • La page anglaise de Wikipedia http://en.wikipedia.org/wiki/Find explique que le code 2>/dev/null supprime des messages d'erreurs liés à des droits d'accès.

« If you’re doing this as a user other than root, you might want to ignore permission denied (and any other) errors. Since errors are printed to stderr, they can be suppressed by redirecting the output to /dev/null. »

Dans le second appel le double >> permet d’ajouter au fichier existant le résultat de la recherche au lieu de remplacer l’ancien.

data _null_;
   call system ("find c:/projet/*/demographie.sas7bdat > &workdir./resultat.txt 2>/dev/null
                      c:/project/*/laboratoire.sas7bdat >> &workdir./resultat.txt 2>/dev/null");
run;

L’étape data  sert à lire le fichier .txt et de la trocker dans un dataset (ici REF) via infile/input. Des options à l’instruction infile peuvent être ajoutées pour lire le fichier correctement.

data ref (keep=);

   infile "&workdir./resultat.txt" ;*lrecl=2000 truncover firstobs=1;

   input pathdsn $1-100;

run;
h1

S’informer des prochains rendez-vous via le calendrier Google

septembre 21, 2013

Via l’agenda Google du blog, soyez informé des prochains rendez-vous.

 

 

h1

Pharma: CDISC Interchange 2014 à Paris

août 11, 2013

CDISC interchange est un événement rassemblant de nombreux acteurs de l’industrie pharmaceutique traitant des standards internationaux dans les essais cliniques.

La prochaine rencontre en Europe aura lieu à Paris du 7 au 11 avril 2014.

Pour suivre l’actualité sur cette événement, vous pouvez vous reporter à la page www.cdisc.org/interchange.

Sur ce même site vous trouverez un blog en anglais www.cdisc.org/cdisc-blog avec un article sur les groupes d’utilisateurs de CDISC www.cdisc.org/cdisc-user-networks dont celui des utilisateurs francophones qu’on peut rejoindre sur linkedin.

h1

Un alias de mes emails pour recevoir des newsletters

mai 25, 2013

Vous vous inscrirez probablement à plusieurs newsletters et ne souhaitez probablement pas les mélanger avec les messages de vos proches. Après avoir créé un alias dans votre messagerie, vous mettez en place une redirection vers un dossier newsletter pour ranger les messages adressés à cet alias séparément des autres messages.

Sur hotmail, clichez sur votre photo pour pouvoir sélectionner « Account Settings » et créer un alias. Une fois l’alias créé, cliquez sur l’icône de roue crantée pour choisir « More email settings ». ImagePuis sélectionnez « Rules for sorting new messages » et enfin « New » pour avoir l’écran ci-dessous. J’ai choisi de créer un répertoire du même nom que l’alias dans l’exemple.

Image