Posts Tagged ‘programmation’

h1

SAS : obtenez des couleurs sympas dans vos rapports en 5 minutes

août 20, 2018

Publicités
h1

11 Astuces SAS – PDF à télécharger

mars 6, 2018

J’ai écris pour la conférence KSFE qui se déroule chaque année début mars dans une ville différente d’Allemagne un PDF contenant 11 astuces de programmation SAS. Vous pouvez le télécharger sur cette page : https://xxformat.com/blog/ksfe-2018/

h1

Passer de CLASS CLAS à « CLASS » « CLAS » dans une macro variable

février 1, 2013

Mettre toutes les mots contenus dans une macro variable entre guillemets (quote en anglais) est un tâche plus fréquente qu’elle n’y paraît.
Une vois le code écrit, il est souvent plus rapide de faire du copier/coller et ensuite de modifier. Voici un exemple où DSN=CLASS CLAS sert à créer DSN_QUOTE= »CLASS » « CLAS ».

1. Exemple dans une macro

Dans l’exemple, la macro est PRINTDSN. Elle a pour tâche d’imprimer dans la log tous les datasets présents dans la bibliothèque SASHELP qui sont cités dans le paramètre de macro DSN, s’ils existent.

%macro printdsn (dsn=);

%let dsn      =upcase(&dsn.);
%let dsn_quote=%sysfunc(tranwrd(%nrstr(%")&dsn.%nrstr(%"),%str( ),%str(" ");

proc sql;
 create table ref as
 select memname
 from dictionary.tables
 where upcase(libname)='SASHELP' and
       upcase(memname) in (&dsn_quote.);
quit;

data _null_;
 set ref;
 call execute ('proc print data=' || memname || ';');
 call execute ('run;');
run;
%mend printdsn;
%printdsn(dsn=class clas);

Pour ma part j’ai pris l’habitude de mettre le contenu des macros paramètres en majuscule, et ce dès le début du programme, sauf besoin spécifique contraire. Ceci explique la ligne %let dsn=upcase(&dsn.);

De plus j’ai pris l’habitude de rajouter le suffixe _quote au nom de la macro variable. Dans notre exemple il y a la macro variable DSN mise en majuscule. Cette variable est ensuite mise entre guillemets.

La macro fonction %sysfunc() permet d’utiliser la fonction tranwrd dans une expression macro. La fonction tranwrd est composée de trois paramètres :

  1. le texte d’origine entre guillemets
  2. le partie de texte à remplacer dans cette chaîne de caractères
  3. le texte de remplacement

2. Le même exemple sans macro

L’exemple est présenté dans une macro. Pour tester le code, un simple %let et %put feront l’affaire. Le résultat s’affiche alors dans la log.

%let dsn=CLASS CLAS;
%let dsn_quote=%sysfunc(tranwrd(%nrstr(%")&dsn.%nrstr(%"),%str( ),%str(" ");
%put &dsn_quote.;
h1

Aller-Retour entre dataset et format catalog avec CNTLIN en CNTLOUT

décembre 29, 2012

Dans un précédent article, je parlais des deux méthodes pour créer des formats avec une procédure proc format, la première étant de taper toutes les values dans une instruction value, la seconde étant de stocker ces valeurs dans un data set et de les convertir en format avec l’option cntlin. Aujourd’hui, je souhaite revenir sur l’option CNTLIN et son pendant CNTLOUT pour passer d’un dataset à un format et pour passer d’un format à un dataset.

1. Créer une table SAS (dataset) type

Pour débuter créons un data set (table SAS) appelée POP avec 4 colonnes START, LABEL, TYPE et FMTNAME. Cette table contient les données pour deux formats : un format numérique et un format alphanumérique. Ces deux formats sont appelés GRP.

data pop;
length start $40 label $200 type $1 fmtname $32;
retain fmtane 'GRP' type 'N';
start='10';
label='Per Protocol';
output;
start='11';
label='Modified Per Protocol';
output;
start='20';
label='Intent-to-Treat';
output;
start='21';
label='Modified Intent-to-Treat';
output;
type='C';
start='PP';
label='Per Protocol';
output;
start='mPP';
label='Modified Per Protocol';
output;
start='ITT';
label='Intent-to-Treat';
output;
start='mITT';
label='Modified Intent-to-Treat';
output;
run;

S’il est possible de convertir de convertir le nombre 100 stocker dans une variable alphanumérique en numérique, il est impossible de convertir le mot ABC en numérique. Dans cet exemple on comprend mieux pour quoi START est toujours alphanumérique qu’il s’agisse dun format numérique ou alphanumérique.

2. Passer d’un dataset à un format catalog

A présent la procédure proc format convertit le data set en format catalogue. Le data set est situé dans la bibliothèque (library) WORK. Il n’y a pas besoin de préciser la bibliothèque de la table POP. Par défaut le format catalog s’appellera FORMATS et sera stocké dans la bibliothèque WORK. L’option LIB n’est pas utilisé.

proc format cntlin=pop;
run;

Ainsi le code au dessus est équivalent à :

proc format cntlin=work.pop lib=work.formats;
run;

Le code proposé ci-dessus est uniquement là pour faciliter la compréhension. Sauf besoin particulier, la version simplifiée doit suffire.

3. Passer d’un format catalog à un dataset

Dans un second temps, je vous propose de convertir ce format dans un autre dataset.

proc format cntlout=pop2; 
run;

Ainsi le code au dessus est équivalent à :

proc format cntout=work.pop2 lib=work.formats; 
run;

A vous de jouez avec les proc print et librairies pour voir la résultat.

4. Rappel sur le nom du format

Notez ici que le nom du format est au maximum long de 32 caractères en  SAS 9.1.3 / SAS 9.2  et limité à 8 caractères pour la version SAS 8.2. Pour être plus précis, on a 32 caractères pour un format numérique et 31 caractères pour un format alphanumérique en SAS 9.1.3 et SAS 9.2, SAS gardant un caractère pour le symbole dollar $. SAS 8.2 fonctionnait sur le même principe : 8 caractères pour un format numérique et 7 caractères pour un format alphanumérique. Si le nom du format était trop long en SAS 8.2, SAS le coupe à la longueur maximum. Ainsi les nom  ALPHABETA et ALPHABETI sont interprétés pas SAS 8.2 en FMTNAME=ALPHABET pour un format numérique.

Aller plus loin

h1

Protégé : Newsletter Exercices – n°1 : Solution

juillet 14, 2012

Cet article est protégé par un mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :

h1

15 livres achetés par les lecteurs du blog

juillet 7, 2012

En achetant un livre sur Amazon en cliquant sur un lien du blog, une commission m’est versée.

Voici quelques livres, pas toujours référencés sur le blog, achetés par les lecteurs. Ils traitent de SAS, du logiciel R, de statistique ou de compétences plus générales (anglais).

Deux sorties sont prévues d’ici peu :

1. Notez qu’à la rentrée sortira la quatrième édition du livre « Data mining et statistique décisionnelle » de Stéphane Tufféry. Pour le moment voici le lien vers la 3ème Edition.

2. De même, la second édition de l’ouvrage Le modèle linéaire par l’exemple – 2e éd. – Régression, analyse de la variance et plans d’expérience: Régression, analyse de la variance et plans d’expérience illustrés avec R et SAS, de Jean-Marc Azaïs et Jean-Marc Bardet sortira en août 2012.

Parmi les autres livres consacrés à SAS, on trouve :

3. SAS for Mixed Models, de Ramon C. Littell, George A., PH.D. Milliken, Walter W. et PH.D. Stroup, mars 2006

4. SAS Certified Base Programmer for SAS 9 Certification Exam Preparation Course in a Book for Passing the SAS Certified Base Programmer for SAS 9 Exam: … on Your First Try Certification Study Guide, de William Manning, juin 2009

5. Reporting avec SAS : Mettre en forme et diffuser vos résultats avec SAS 9 et SAS 9 BI, d’Olivier Decourt, Novembre 2008

6. SAS l’essentiel – SAS v8 et SAS v9, SAS Enterprise Guide, langages SAS, SQL et macro, d’Olivier Decourt, juin 2011

7. SAS 2 édition – « introduction pratique : du data management au reporting », de Sébastien Ringuedé, avril 2011

8. Méthodes statistiques de l’économie et de la gestion : Tome 3, Econométrie théorie et application sous SAS, de Virginie Delsart, Arnaud Rys et Nicolas Vaneecloo, octobre 2009

Le logiciel R a aussi son livre

9. Initiation à la statistique avec R – Cours, exemples, exercices et problèmes corrigés, de  Myriam Maumy-Bertrand et Frédéric Bertrand, septembre 2010

Quelques notions de probabilité ensuite avec :

10. L’essentiel en théorie des probabilités, de Jean Jacod et Philip Protter, octobre 2002

La thématique des sondages est adressée avec ce livre :

11. Mon plan de sondage en 9 questions, de Sidi Tiral, mars 2010 (table_des_matieres.pdf)

D’autres applications de la statistuqes sont traitées par :

12. Statistiques pour l’économie et la gestion, de Anderson, Sweeney, Williams et traduit par Claire Borsenberger, août 2010

13. Econométrie: Méthode et Applications, de Nicolas Jacquemet et Bruno Crépon, juillet 2010

14. Modélisation statistique appliquée aux sciences sociales, de Pascal Bressoux, octobre 2010

Enfin une version audio d’une méthode d’apprentissage a été achetée.

15. Perfectionnement Anglais : Enregistrement MP3, d’Assimil, juin 2008

h1

Livre en anglais : 97 Things Every Programmer Should Know

mars 17, 2012

Voici une lecture que je tenais à vous faire partager. Il s’agit du livre 97 Things Every Programmer Should Know.

Il s’agit d’un recueil de conseils de programmeurs au sens large C++, Java, etc. mais pas de SAS. Chaque témoignage se présente sous la forme d’une double page. Certains exemples sont peux accessibles aux non initiés. Il reste quelques idées générales valables également pour le programmeur SAS. Voici les grandes thématiques :

  • Bugs and Fixes
  • Build and Deployment
  • Coding Guidelines and Code Layout
  • Design Principle and Coding Techniques
  • Domain Thinking
  • Errors, Error Handling, and Exceptions
  • Learning, Skills and Expertise
  • Nocturnal or Magical
  • Performance, Optimization, and Representation
  • Professionalism, Mindset, and Attitude
  • Programming Languages and Paradigms
  • Refactoring and Code Care
  • Reuse versus Repetition
  • Schedules, Deadlines, and Estimates
  • Simplicity
  • Teamwork and Collaboration
  • Tests, Testing, and Testers
  • Tools, Automation, and Development Environments
  • Users and Customers

Je viendrais avec ce livre lors de la rencontre annuelle des lecteurs le samedi 24 mars 2012 (inscription gratuite) pour ceux qui souhaitent le feuilleté.

Vous pouvez consulter les commentaires du livre sur Amazon : 97 Things Every Programmer Should Know