Pratique de Sas Windows ...9.3 Volume 2 - Ined
Pratique de Sas Windows ...9.3 Volume 2 - Ined
Pratique de Sas Windows ...9.3 Volume 2 - Ined
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapitre 1 ODS complément au V1:<br />
PROC TEMPLATE Ma<strong>de</strong><br />
Easy: A Gui<strong>de</strong> for <strong>Sas</strong> Users<br />
By Kevin D. Smith<br />
Avril 2013<br />
<strong>de</strong>ux types <strong>de</strong> proc template<br />
1 Data Component + 1 Template <strong>de</strong> Table =<br />
1 Output Object ornementé par 1 Gabarit<br />
(ou template <strong>de</strong> style)<br />
et parfois restructuré par un template <strong>de</strong> type tagset.<br />
https://support.sas.com/pubscat/book<strong>de</strong>tails.jsp?catid=1&pc=62007<br />
1.1 Le template <strong>de</strong> table<br />
1.1.1 Introduction<br />
Déjà usager <strong>de</strong> l’ODS (qui, <strong>de</strong>puis la 9.2, contient 4 types <strong>de</strong> template table/style/tagsets/graph), vous avez pu cotoyer<br />
certains templates <strong>de</strong> table (par vous-même ou en me lisant en V1_p123-125). L’objectif est <strong>de</strong> vous montrer<br />
qu’il est relativement facile <strong>de</strong> créer un résultat structuré et présenté par vous, n’appelant aucune procédure à<br />
votre secours.<br />
Pour vous ai<strong>de</strong>r, 2 points <strong>de</strong> départ : la fiche <strong>Sas</strong> http://support.sas.com/rnd/base/ods/scratch/table-tips.pdf et la<br />
présentation <strong>de</strong> Kevin D. Smith « Proc Template tables from Scratch » du SGF forum <strong>de</strong> 2007 déjà<br />
mentionnée en V1 https://support.sas.com/rnd/base/ods/scratch/tables-from-sc-paper.pdf<br />
N’ayant point déjà creusé la question à partir <strong>de</strong> zéro, je tente ici un exemple ex-nihilo en ne disposant<br />
que d’une table <strong>Sas</strong> contenant <strong>de</strong>s données médicales concernant <strong>de</strong>s mala<strong>de</strong>s chroniques relevant <strong>de</strong> la<br />
néphrologie. Et le programmeur <strong>de</strong> l’hôpital cherche à présenter les résultats <strong>de</strong>s examens au mé<strong>de</strong>cin.<br />
Cet exemple élémentaire n’a pas été poussé au-<strong>de</strong>là <strong>de</strong> la sortie tabulaire élémentaire. Et pour le<br />
contenu, vous pouvez consulter ce document : http://lescercles<strong>de</strong>laennec.com/insuffisance renale chronique.pdf<br />
Vous pourrez poursuivre ensuite sur le sujet <strong>de</strong>s fiches en lisant les excellents papiers complémentaires<br />
suivant : « Creating Customized Patient Profiles using <strong>Sas</strong> ODS RTF and PROC TEMPLATE» <strong>de</strong> Andrea<br />
Ritter http://www.lexjansen.com/pharmasug/2011/TT/PharmaSUG-2011-TT03.pdf et<br />
celui <strong>de</strong> S.Matange et D.Heath « Create Comprehensive Patient Profiles with <strong>Sas</strong> »<br />
http://www.lexjansen.com/pharmasug/2010/<strong>Sas</strong>/<strong>Sas</strong>-CC-<strong>Sas</strong>01.pdf , incitant à créer le complément graphique à<br />
l’ai<strong>de</strong> <strong>de</strong> ce qui sera vu dans ce second volume : http://support.sas.com/kb/39/892.html<br />
1.1.2 Construction d’un template <strong>de</strong> table<br />
libname tpl "d:\My <strong>Sas</strong> Files\tpl";<br />
ods path (prepend) tpl.tabtpl(update);<br />
libname a "d:\notes\test";<br />
proc template;<br />
<strong>de</strong>fine table Biol.patientH;<br />
notes "Essai d'exemple <strong>de</strong> fiche homme";<br />
dynamic name_width_max name_width;<br />
mvar type;<br />
column date age poids taille surfcorp creat<br />
Cockgault clN Mdrd tacro (cholt hdl trig)<br />
phosfo potas uree ;<br />
<strong>de</strong>fine hea<strong>de</strong>r entete;<br />
text "Fiche patient" ;<br />
end;<br />
<strong>de</strong>fine hea<strong>de</strong>r entete1;<br />
text " INFO Débit Filtration Glomérulaire";<br />
start=creat; end=mdrd;<br />
end;<br />
<strong>de</strong>fine hea<strong>de</strong>r entete3;<br />
text "Lipi<strong>de</strong>s etc."; start=cholt; end=uree;<br />
end;<br />
<strong>de</strong>fine surfcorp;<br />
compute as ((poids*taille)/3600)**0.5 ;<br />
hea<strong>de</strong>r="Surface Corp. Mosteller";<br />
format= 7.3;<br />
end;<br />
Je définis un lieu <strong>de</strong> stockage personnel pour<br />
mon template <strong>de</strong> table.<br />
L’entrepôt <strong>de</strong> nom tabtpl contiendra un casier<br />
Biol dans lequel j’aurai le template patientH<br />
représentant la forme d’une fiche patient<br />
masculin.<br />
Notes désigne une info interne au co<strong>de</strong>.<br />
Dynamic désigne <strong>de</strong>s MacroVariables<br />
automatiques <strong>de</strong> template, mais mvar désigne<br />
une MVariable personnelle que je passerai.<br />
Column nomme les variables existantes ou<br />
créées retenues pour ce template. Entre ( ), ce<br />
qui est à regrouper.<br />
Des <strong>de</strong>fine porteront sur <strong>de</strong>s en-têtes (hea<strong>de</strong>r),<br />
<strong>de</strong>s bas_<strong>de</strong>_tableaux (footer) ou sur les<br />
colonnes à nommer.<br />
Des hea<strong>de</strong>rs/footer successifs doivent être<br />
nommés.<br />
Certains hea<strong>de</strong>rs peuvent chapeauter plusieurs<br />
colonnes grâce à start/end.<br />
Text ce qui sera mis dans la case hea<strong>de</strong>r <strong>de</strong> la<br />
ou <strong>de</strong>s colonne(s).<br />
Les <strong>de</strong>fine se terminent par un end ;<br />
On peut calculer <strong>de</strong> nouvelles valeurs pour<br />
une nouvelle colonne et bien sûr formater ce<br />
résultat et donner un texte d’en-tête.<br />
15 INED Service Informatique Wielki