Posts Tagged ‘programmation’

h1

Une formation gratuite d’introduction à SAS en deux clics

août 20, 2016

Bonjour,

La plateforme de formation en ligne : programmeur-pro.com vient de bénéficier d’un petit lifting.

Elle contient la formation gratuite : « Introduction à SAS pour vrai débutant « .

Introduction à SAS pour vrai débutant, le descriptif:

Ce programme s’adresse aux vrais débutants en langage SAS. Vous devez travailler en collaboration avec des programmeurs SAS, faire tourner des programmes existants ou naviguer dans une table SAS, ce programme d’introduction est fait pour vous.

Ici, on vous donne les outils de base pour gagner en autonomie dans votre travail, acquérir une meilleure compréhension des contraintes de la programmation et acquérir le vocabulaire pour dialoguer avec des programmeurs.

Ce programme est composé de 7 unités.

Pour créer un compte, cliquez sur S’inscrire. Confirmez ensuite votre inscription en cliquant sur le mail que vous recevrez.

Si vous pensez que dans votre entourage d’autres personnes pourraient bénéficier de ce programme, alors partagez le lien : programmeur-pro.com

A très bientôt sur la plateforme.

Véronique

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

h1

5 points pour rendre la maintenance d’un programme la plus inaperçu possible pour l’utilisateur

mars 4, 2012

La maintenance des programmes est toujours mieux acceptée si les utilisateurs sont informés au préalable et si la durée de l’intervention est limitée dans le temps. Voici cinq points qui rendront l’intervention plus douce.

  1. S’il est préférable de faire une maintenance de programme dans un environnement de développement, il est parfois plus rapide de faire certains changements directement en production après avoir fait une copie des fichiers d’origine, surtout les changements rapides. L’utilisateur est dans l’indisponibilité d’utiliser le programme durant cet intervalle de temps.
  2. Idéalement la maintenance sera planifiée. Les utilisateurs seront informés une semaine à l’avance par email de la date et durée d’indisponibilité. Ils pourront ainsi adapter leur travail en fonction.
  3. Le créneau horaire sera choisi de préférence en dehors des heures d’utilisation les plus fréquentes (le week-end, le matin, le soir).
  4. Un email informera du début de la maintenance.
  5. Un autre email confirmera la fin de la maintenance et donc la remise à disposition du service.