{"id":9279,"date":"2026-10-14T18:02:28","date_gmt":"2026-10-14T18:02:28","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-renommer-des-variables-dans-sas-avec-exemples\/"},"modified":"2026-10-14T18:02:28","modified_gmt":"2026-10-14T18:02:28","slug":"comment-renommer-des-variables-dans-sas-avec-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-renommer-des-variables-dans-sas-avec-exemples","title":{"rendered":"Comment renommer des variables dans SAS (avec exemples)"},"content":{"rendered":"<p>Dans l&rsquo;\u00e9cosyst\u00e8me du traitement analytique et de la biostatistique, la structuration des donn\u00e9es constitue le socle sur lequel repose l&rsquo;int\u00e9grit\u00e9 de toute inf\u00e9rence scientifique. Au sein de cet environnement, le logiciel SAS (Statistical Analysis System) s&rsquo;est impos\u00e9 depuis plusieurs d\u00e9cennies comme la r\u00e9f\u00e9rence incontournable au sein des industries pharmaceutiques, des institutions financi\u00e8res et des organismes de recherche publique. La conduite d&rsquo;analyses statistiques complexes n\u00e9cessite une manipulation experte des tables de donn\u00e9es, op\u00e9ration au sein de laquelle la modification des m\u00e9tadonn\u00e9es &mdash; et tout particuli\u00e8rement le renommage des variables &mdash; repr\u00e9sente une \u00e9tape charni\u00e8re. Bien que cette t\u00e2che puisse sembler \u00e9l\u00e9mentaire \u00e0 premi\u00e8re vue, elle sous-tend des m\u00e9canismes internes fondamentaux li\u00e9s \u00e0 la gestion de la m\u00e9moire vive, au cycle de compilation des \u00e9tapes de donn\u00e9es et \u00e0 la structure des descripteurs de fichiers sur disque.<\/p>\n<p>Une d\u00e9nomination inad\u00e9quate ou anarchique des colonnes d&rsquo;un tableau d&rsquo;analyse engendre in\u00e9vitablement des surco\u00fbts cognitifs majeurs, favorise l&rsquo;introduction d&rsquo;erreurs de programmation difficilement d\u00e9celables et compromet la conformit\u00e9 r\u00e9glementaire des projets de recherche. \u00c0 l&rsquo;inverse, l&rsquo;application rigoureuse d&rsquo;une strat\u00e9gie de renommage m\u00e9thodique permet de transformer des vecteurs bruts h\u00e9t\u00e9rog\u00e8nes en structures d&rsquo;information standardis\u00e9es, transparentes et directement exploitables par des algorithmes d&rsquo;analyse multivari\u00e9e ou des proc\u00e9dures d&rsquo;apprentissage automatique. Ce processus ne se limite pas \u00e0 une simple substitution lexicale : il exige la compr\u00e9hension des contextes d&rsquo;ex\u00e9cution propres \u00e0 SAS, qu&rsquo;il s&rsquo;agisse de l&rsquo;\u00e9valuation s\u00e9quentielle dans le vecteur de donn\u00e9es du programme (Program Data Vector) ou de la modification directe des dictionnaires de m\u00e9tadonn\u00e9es sans r\u00e9\u00e9criture physique des enregistrements.<\/p>\n<p>Ce guide m\u00e9thodologique exhaustif a pour vocation d&rsquo;explorer l&rsquo;ensemble des paradigmes offerts par SAS pour proc\u00e9der au renommage de variables. \u00c0 travers l&rsquo;examen d\u00e9taill\u00e9 des options de l&rsquo;\u00e9tape DATA, de l&rsquo;utilisation sp\u00e9cialis\u00e9e de la proc\u00e9dure PROC DATASETS, de l&rsquo;int\u00e9gration du langage d\u00e9claratif PROC SQL et de l&rsquo;automatisation avanc\u00e9e permise par l&rsquo;environnement macro, cet article propose une synth\u00e8se th\u00e9orique et op\u00e9rationnelle destin\u00e9e aux data scientists, biostatisticiens et analystes de donn\u00e9es soucieux de concilier rigueur scientifique, \u00e9l\u00e9gance algorithmique et optimisation des ressources de calcul.<\/p>\n<h2>1. Introduction m\u00e9thodologique au renommage des variables dans SAS<\/h2>\n<h3>1.1 Importance de la nomenclature normalis\u00e9e en analyse de donn\u00e9es<\/h3>\n<p>L&rsquo;harmonisation des d\u00e9signations au sein de bases de donn\u00e9es volumineuses ou issues d&rsquo;\u00e9tudes longitudinales repr\u00e9sente un imp\u00e9ratif m\u00e9thodologique de premier ordre. Dans le cadre d&rsquo;enqu\u00eates \u00e9pid\u00e9miologiques ou d&rsquo;essais cliniques multicentriques s&rsquo;\u00e9tendant sur plusieurs ann\u00e9es, les cohortes de sujets font l&rsquo;objet d&rsquo;\u00e9valuations r\u00e9p\u00e9t\u00e9es \u00e0 des intervalles temporels d\u00e9finis. L&rsquo;absence d&rsquo;une charte de nommage formelle et syst\u00e9matique conduit invariablement \u00e0 la dispersion s\u00e9mantique : une m\u00eame mesure physiologique ou biologique peut ainsi \u00eatre d\u00e9sign\u00e9e sous les vocables disparates au fil des campagnes de recueil. Une telle disparit\u00e9 complique consid\u00e9rablement le travail de fusion des tables transversales et augmente de fa\u00e7on exponentielle le risque d&rsquo;erreurs lors de l&rsquo;assemblage des matrices d&rsquo;analyse.<\/p>\n<p>La conformit\u00e9 avec les standards de rigueur scientifique et de reproductibilit\u00e9, tels que prescrits par les recommandations internationales et les consortiums de standardisation des donn\u00e9es biom\u00e9dicales comme le <a rel=\"noopener noreferrer\" href=\"https:\/\/www.cdisc.org\/\">Consortium CDISC (Clinical Data Interchange Standards Consortium)<\/a>, impose que chaque variable dispose d&rsquo;un identifiant stable, univoque et universellement compr\u00e9hensible. Cette normalisation syst\u00e9matique r\u00e9duit drastiquement les biais cognitifs et les fautes d&rsquo;interpr\u00e9tation humaine qui surviennent lorsque des analystes manipulent des vecteurs aux d\u00e9nominations ambigu\u00ebs ou tronqu\u00e9es. Dans les \u00e9quipes de recherche multidisciplinaires o\u00f9 collaborent biostatisticiens, cliniciens, \u00e9pid\u00e9miologistes et ing\u00e9nieurs de donn\u00e9es, une nomenclature claire fluidifie la communication et garantit que l&rsquo;objet de l&rsquo;observation statistique demeure parfaitement corr\u00e9l\u00e9 avec sa repr\u00e9sentation informatique sous-jacente.<\/p>\n<p>Enfin, la standardisation lexicale des colonnes facilite l&rsquo;int\u00e9gration de routines de traitement automatis\u00e9es. Les scripts d&rsquo;\u00e9puration, d&rsquo;imputation des donn\u00e9es manquantes et d&rsquo;analyse exploratoire gagnent en g\u00e9n\u00e9ricit\u00e9 d\u00e8s lors que les variables respectent une nomenclature coh\u00e9rente. La r\u00e9duction du temps consacr\u00e9 \u00e0 la maintenance des programmes et la p\u00e9rennisation des flux de traitement analytique d\u00e9pendent directement de cette discipline initiale apport\u00e9e \u00e0 la d\u00e9finition et \u00e0 la refonte des en-t\u00eates de colonnes.<\/p>\n<h3>1.2 Principes fondamentaux du syst\u00e8me SAS pour l&rsquo;identification des colonnes<\/h3>\n<p>Le moteur de traitement des donn\u00e9es de SAS applique des r\u00e8gles syntaxiques formelles et immuables r\u00e9gissant la validit\u00e9 des noms de variables. Depuis l&rsquo;introduction de l&rsquo;architecture SAS Version 8 et la p\u00e9rennisation de la Version 9, un nom de variable standard peut comporter jusqu&rsquo;\u00e0 32 octets de longueur. Il doit obligatoirement d\u00e9buter par une lettre de l&rsquo;alphabet latin (non accentu\u00e9e) ou par un caract\u00e8re de soulignement (underscore). Les caract\u00e8res subs\u00e9quents peuvent inclure des lettres non accentu\u00e9es, des chiffres de z\u00e9ro \u00e0 neuf ou des traits de soulignement. Bien que le syst\u00e8me SAS ne soit pas sensible \u00e0 la casse pour la r\u00e9solution des noms lors des phases d&rsquo;\u00e9valuation &mdash; traitant indiff\u00e9remment les majuscules et les minuscules lors de l&rsquo;appel d&rsquo;un identifiant &mdash;, il pr\u00e9serve la casse typographique originelle telle qu&rsquo;elle a \u00e9t\u00e9 d\u00e9clar\u00e9e lors de la cr\u00e9ation de la variable au niveau du dictionnaire de m\u00e9tadonn\u00e9es.<\/p>\n<p>Il convient d&rsquo;\u00e9tablir une distinction conceptuelle fondamentale entre le nom technique d&rsquo;une variable et son libell\u00e9 descriptif, d\u00e9sign\u00e9 sous le terme de <em>Label<\/em> dans le vocabulaire SAS. Le nom de la variable constitue l&rsquo;identifiant programmatique formel manipul\u00e9 par le compilateur, le syst\u00e8me de fichiers et les expressions math\u00e9matiques. Le libell\u00e9, quant \u00e0 lui, est une cha\u00eene textuelle explicative pouvant atteindre une longueur de 256 caract\u00e8res, acceptant les espaces, les lettres accentu\u00e9es et les caract\u00e8res typographiques complexes. Trop souvent, les analystes d\u00e9butants tentent d&rsquo;incorporer une somme excessive d&rsquo;informations s\u00e9mantiques au sein du nom technique, alors que la bonne pratique architecturale commande de maintenir un nom technique concis, standardis\u00e9 et mn\u00e9monique, tout en confiant l&rsquo;exhaustivit\u00e9 de la description s\u00e9mantique au libell\u00e9 associ\u00e9.<\/p>\n<p>Les m\u00e9tadonn\u00e9es relatives aux variables sont consign\u00e9es au sein du bloc descripteur de chaque table SAS h\u00e9berg\u00e9e dans une biblioth\u00e8que sp\u00e9cifique. Ce bloc descripteur contient l&rsquo;ensemble des sp\u00e9cifications structurelles du jeu de donn\u00e9es : la liste ordonn\u00e9e des variables, leur typage strict (num\u00e9rique ou caract\u00e8re), leur longueur allou\u00e9e en octets, leur position physique relative au sein du vecteur d&rsquo;enregistrement, ainsi que les formats et informats qui leur sont rattach\u00e9s. Renommer une variable revient \u00e0 intervenir sur ce registre de m\u00e9tadonn\u00e9es, selon des modalit\u00e9s techniques dont le co\u00fbt op\u00e9rationnel varie radicalement d&rsquo;une approche \u00e0 une autre.<\/p>\n<h3>1.3 Panorama des approches : \u00e9tape DATA versus proc\u00e9dures sp\u00e9cialis\u00e9es<\/h3>\n<p>Pour modifier l&rsquo;identifiant d&rsquo;une ou plusieurs variables au sein de l&rsquo;\u00e9cosyst\u00e8me SAS, le d\u00e9veloppeur dispose d&rsquo;un \u00e9ventail d&rsquo;approches m\u00e9thodologiques qui se scindent principalement en deux paradigmes distincts : la r\u00e9\u00e9criture s\u00e9quentielle via l&rsquo;\u00e9tape DATA et l&rsquo;alt\u00e9ration directe des en-t\u00eates sans duplication physique des donn\u00e9es via les proc\u00e9dures syst\u00e8me sp\u00e9cialis\u00e9es. Le choix d&rsquo;une m\u00e9thode d\u00e9pend intimement du volume de la table, des contraintes d&rsquo;entr\u00e9es-sorties (I\/O) sur les disques de stockage, de la charge support\u00e9e par la m\u00e9moire temporaire et de la n\u00e9cessit\u00e9 \u00e9ventuelle de r\u00e9aliser des calculs conjoints sur les valeurs vectorielles.<\/p>\n<p>L&rsquo;\u00e9tape DATA, qu&rsquo;elle exploite l&rsquo;option de jeu de donn\u00e9es RENAME= ou l&rsquo;instruction autonome RENAME, repose sur la reconstruction s\u00e9quentielle du tableau d&rsquo;enregistrements. Dans cette configuration, chaque ligne est charg\u00e9e depuis la source, trait\u00e9e en m\u00e9moire centrale par le vecteur de donn\u00e9es du programme (Program Data Vector ou PDV), puis int\u00e9gralement r\u00e9\u00e9crite dans une nouvelle table cible sur le disque. Si cette m\u00e9thode offre une flexibilit\u00e9 totale en permettant d&rsquo;op\u00e9rer des transformations math\u00e9matiques, des recodages conditionnels et des filtrages d&rsquo;observations au moment pr\u00e9cis du renommage, elle induit un co\u00fbt computationnel consid\u00e9rable. Sur des volumes massifs atteignant des dizaines de gigaoctets ou des centaines de millions de lignes, cette r\u00e9plication int\u00e9grale consomme inutilement des cycles processeur et une quantit\u00e9 massive d&rsquo;espace temporaire dans la biblioth\u00e8que WORK.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, les proc\u00e9dures sp\u00e9cialis\u00e9es, au premier rang desquelles tr\u00f4ne la proc\u00e9dure PROC DATASETS avec son instruction MODIFY, agissent exclusivement sur le bloc descripteur de la table sans jamais d\u00e9placer, lire ou r\u00e9\u00e9crire le moindre enregistrement de donn\u00e9es. Cette manipulation sur place (in-place) pr\u00e9sente une efficacit\u00e9 algorithmique maximale : l&rsquo;op\u00e9ration est quasi instantan\u00e9e, ind\u00e9pendamment du nombre d&rsquo;observations pr\u00e9sentes dans la table. De son c\u00f4t\u00e9, la proc\u00e9dure PROC SQL offre une passerelle d\u00e9clarative conforme aux standards de l&rsquo;alg\u00e8bre relationnelle, autorisant le renommage \u00e0 la vol\u00e9e lors de projections ou de modifications structurelles par le biais de l&rsquo;instruction ALTER TABLE. Le tableau conceptuel ci-dessous synth\u00e9tise les propri\u00e9t\u00e9s distinctives de ces diverses options analytiques.<\/p>\n<ul>\n<li><strong>Option RENAME= dans l&rsquo;instruction SET :<\/strong> R\u00e9\u00e9criture compl\u00e8te de la table ; modification appliqu\u00e9e au chargement dans le vecteur de m\u00e9moire ; id\u00e9ale lors de filtrages ou de calculs simultan\u00e9s.<\/li>\n<li><strong>Instruction autonome RENAME dans l&rsquo;\u00e9tape DATA :<\/strong> R\u00e9\u00e9criture compl\u00e8te de la table ; modification effective en fin d&rsquo;\u00e9tape lors de l&rsquo;\u00e9criture sur disque ; exige une rigueur particuli\u00e8re lors du r\u00e9f\u00e9rencement des variables d\u00e9riv\u00e9es.<\/li>\n<li><strong>Proc\u00e9dure PROC DATASETS :<\/strong> Alt\u00e9ration pure des m\u00e9tadonn\u00e9es du descripteur ; temps d&rsquo;ex\u00e9cution quasi nul ; aucune r\u00e9\u00e9criture d&rsquo;enregistrements ; m\u00e9thode pr\u00e9conis\u00e9e pour les grands volumes de donn\u00e9es.<\/li>\n<li><strong>Proc\u00e9dure PROC SQL :<\/strong> Syntaxe relationnelle d\u00e9clarative ; renommage ponctuel lors de la s\u00e9lection ou modification structurelle permanente via ALTER TABLE.<\/li>\n<\/ul>\n<h2>2. Syntaxe fondamentale de l&rsquo;option RENAME dans l&rsquo;\u00e9tape DATA<\/h2>\n<h3>2.1 M\u00e9canisme de l&rsquo;option RENAME=(ancien=nouveau) dans l&rsquo;instruction SET<\/h3>\n<p>L&rsquo;utilisation de l&rsquo;option de jeu de donn\u00e9es RENAME= adoss\u00e9e \u00e0 l&rsquo;instruction SET constitue l&rsquo;une des techniques les plus r\u00e9pandues et les plus fiables pour modifier l&rsquo;appellation d&rsquo;une variable au sein d&rsquo;une \u00e9tape DATA. Grammaticalement, cette option se positionne imm\u00e9diatement apr\u00e8s le nom de la table source entre parenth\u00e8ses, selon la formulation typique : SET table_source(RENAME=(ancien_nom=nouveau_nom));. Cette syntaxe sp\u00e9cifie une r\u00e8gle de transformation en entr\u00e9e (Input Data Set Option). Elle indique au moteur de traitement de SAS que, d\u00e8s le moment o\u00f9 le fichier source est ouvert en lecture, la colonne anciennement \u00e9tiquet\u00e9e sous l&rsquo;identifiant d&rsquo;origine doit \u00eatre imm\u00e9diatement int\u00e9gr\u00e9e dans le syst\u00e8me sous sa nouvelle d\u00e9signation.<\/p>\n<p>Le moment exact o\u00f9 cette substitution intervient est d\u00e9terminant pour la logique du programme. \u00c9tant une option d&rsquo;entr\u00e9e, le renommage prend effet avant m\u00eame que le vecteur de donn\u00e9es du programme (PDV) ne rende la ligne accessible aux instructions de programmation situ\u00e9es en aval dans l&rsquo;\u00e9tape DATA. En cons\u00e9quence, l&rsquo;ancien nom de la variable cesse imm\u00e9diatement d&rsquo;exister pour le reste de l&rsquo;\u00e9tape DATA en cours d&rsquo;ex\u00e9cution. Toute tentative de faire r\u00e9f\u00e9rence \u00e0 l&rsquo;ancienne d\u00e9signation dans une condition logique WHERE, un test conditionnel IF-THEN, ou une \u00e9quation d&rsquo;assignation provoquera in\u00e9vitablement une interruption de la compilation pour variable inexistante.<\/p>\n<p>Cette particularit\u00e9 op\u00e9rationnelle conf\u00e8re une grande coh\u00e9rence au code : les d\u00e9veloppeurs peuvent ainsi concevoir des algorithmes en utilisant d&#8217;embl\u00e9e la nomenclature harmonis\u00e9e. Lorsqu&rsquo;il s&rsquo;agit de fusionner des tables dont les cl\u00e9s d&rsquo;appariement diff\u00e8rent nominativement mais correspondent conceptuellement au m\u00eame identifiant de patient ou d&rsquo;observation, l&rsquo;application de l&rsquo;option RENAME= dans l&rsquo;instruction SET permet de standardiser la cl\u00e9 avant m\u00eame que les instructions de fusion ne soient \u00e9valu\u00e9es par le processeur logique de SAS.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/rename1.jpg\" alt=\"\" \/><\/figure>\n<h3>2.2 Cycle de compilation SAS et comportement du vecteur de donn\u00e9es (PDV)<\/h3>\n<p>Pour appr\u00e9hender pleinement les subtilit\u00e9s du renommage au sein de l&rsquo;\u00e9tape DATA, il est indispensable de diss\u00e9quer le cycle de vie interne d&rsquo;un programme SAS, structur\u00e9 en deux phases distinctes et cons\u00e9cutives : la phase de compilation et la phase d&rsquo;ex\u00e9cution. Lors de la phase de compilation, SAS analyse la grammaire des instructions, alloue les zones de m\u00e9moire vive requises et \u00e9rige la structure interne du Program Data Vector (PDV). Le PDV est une zone tampon s\u00e9quentielle en m\u00e9moire volatile qui h\u00e9berge l&rsquo;ensemble des variables d\u00e9clar\u00e9es, leurs indicateurs d&rsquo;absence, ainsi que deux variables automatiques fondamentales du syst\u00e8me, \u00e0 savoir _N_ (le compteur d&rsquo;it\u00e9rations de l&rsquo;\u00e9tape) et _ERROR_ (le drapeau de signalement des anomalies d&rsquo;ex\u00e9cution).<\/p>\n<p>Lorsque l&rsquo;option RENAME= est plac\u00e9e sur l&rsquo;instruction SET, le compilateur lit les en-t\u00eates de la table source, identifie la variable cible, et r\u00e9serve un emplacement dans le PDV sous le nouveau nom sp\u00e9cifi\u00e9. Aucune adresse m\u00e9moire n&rsquo;est attribu\u00e9e \u00e0 l&rsquo;ancien nom. En revanche, si l&rsquo;option RENAME= est appliqu\u00e9e \u00e0 l&rsquo;instruction DATA &mdash; c&rsquo;est-\u00e0-dire en sortie (Output Data Set Option), selon la forme DATA table_cible(RENAME=(ancien_nom=nouveau_nom)); &mdash;, le comportement interne est radicalement diff\u00e9rent. Durant toute la compilation et l&rsquo;ex\u00e9cution de l&rsquo;\u00e9tape DATA, la variable r\u00e9side dans le PDV sous son ancien nom. C&rsquo;est sous cet ancien nom qu&rsquo;elle doit obligatoirement \u00eatre r\u00e9f\u00e9renc\u00e9e dans toutes les instructions de calcul ou de filtrage. Le renommage ne s&rsquo;op\u00e8re qu&rsquo;\u00e0 l&rsquo;extr\u00eame fin du processus, \u00e0 la fraction de seconde o\u00f9 les donn\u00e9es r\u00e9sidant dans le PDV sont d\u00e9vers\u00e9es et transcrites sur le disque dur au sein de la table de sortie.<\/p>\n<p>La confusion entre le renommage en entr\u00e9e (sur l&rsquo;instruction SET) et le renommage en sortie (sur l&rsquo;instruction DATA) est l&rsquo;une des causes les plus fr\u00e9quentes d&rsquo;erreurs logiques chez les d\u00e9veloppeurs. Une ma\u00eetrise rigoureuse de la m\u00e9canique du PDV permet d&rsquo;\u00e9viter l&rsquo;\u00e9crasement intempestif de donn\u00e9es et d&rsquo;assurer que les variables cr\u00e9\u00e9es ou transform\u00e9es au sein de l&rsquo;\u00e9tape sont adress\u00e9es sous leur appellation valide au moment opportun du flux s\u00e9quentiel.<\/p>\n<h3>2.3 Instruction autonome RENAME versus option de jeu de donn\u00e9es RENAME=<\/h3>\n<p>En compl\u00e9ment des options de jeux de donn\u00e9es associ\u00e9es aux instructions DATA ou SET, le langage SAS met \u00e0 disposition une instruction autonome intitul\u00e9e RENAME. Cette instruction s&rsquo;inscrit directement au sein du bloc d&rsquo;instructions de l&rsquo;\u00e9tape DATA sans \u00eatre adoss\u00e9e \u00e0 une parenth\u00e8se de table. Sa forme g\u00e9n\u00e9rale ob\u00e9it au mod\u00e8le : RENAME ancienne_variable = nouvelle_variable ;. Bien que fonctionnellement proche de l&rsquo;option de sortie de jeu de donn\u00e9es, cette instruction pr\u00e9sente des caract\u00e9ristiques d&rsquo;\u00e9valuation propres qui m\u00e9ritent une clarification rigoureuse.<\/p>\n<p>L&rsquo;instruction RENAME informe le compilateur SAS qu&rsquo;une substitution de m\u00e9tadonn\u00e9es devra \u00eatre effectu\u00e9e sur la table finale issue de l&rsquo;\u00e9tape DATA. Cependant, \u00e0 l&rsquo;instar de l&rsquo;option plac\u00e9e sur l&rsquo;instruction DATA, l&rsquo;instruction RENAME autonome n&rsquo;alt\u00e8re en rien le nom de la variable au cours de l&rsquo;ex\u00e9cution interne de l&rsquo;\u00e9tape DATA dans le PDV. Ainsi, au fil des calculs arithm\u00e9tiques, des concat\u00e9nations de cha\u00eenes et des embranchements conditionnels men\u00e9s \u00e0 l&rsquo;int\u00e9rieur du bloc de code, l&rsquo;analyste doit imp\u00e9rativement continuer d&rsquo;utiliser l&rsquo;ancien nom de la variable. Si une expression tente d&rsquo;utiliser le nouveau nom d\u00e9fini exclusivement dans une instruction RENAME autonome, le compilateur \u00e9mettra une alerte indiquant que la variable n&rsquo;est pas initialis\u00e9e, affectant une valeur manquante (missing value) \u00e0 tout calcul d\u00e9pendant de celle-ci.<\/p>\n<p>Ce paradoxe apparent constitue un pi\u00e8ge r\u00e9gulier lors de la cr\u00e9ation de variables d\u00e9riv\u00e9es. Par exemple, si l&rsquo;on souhaite renommer une mesure brute de tension art\u00e9rielle en <em>tension_initiale<\/em> tout en calculant un \u00e9cart par rapport \u00e0 une valeur de r\u00e9f\u00e9rence, l&rsquo;utilisation de l&rsquo;instruction RENAME impose de formuler le calcul avec l&rsquo;ancien nom. Pour \u00e9viter ces confusions cognitives et s\u00e9curiser l&rsquo;\u00e9criture du code, de nombreux architectes logiciels recommandent d&#8217;employer prioritairement l&rsquo;option RENAME= directement sur l&rsquo;instruction SET lorsque les donn\u00e9es pr\u00e9existent, limitant l&rsquo;instruction autonome RENAME aux seules variables synth\u00e9tis\u00e9es ex nihilo au sein de l&rsquo;\u00e9tape DATA courante.<\/p>\n<h2>3. Cas pratique 1 : Renommer une seule variable<\/h2>\n<h3>3.1 Mise en place de la table d&rsquo;exp\u00e9rimentation de r\u00e9f\u00e9rence<\/h3>\n<p>Afin d&rsquo;illustrer de mani\u00e8re empirique et reproductible les principes expos\u00e9s, il convient d&rsquo;\u00e9tablir une table de travail exp\u00e9rimentale contenant un jeu de mesures quantitatives \u00e9l\u00e9mentaires. Pour ce faire, nous exploitons l&rsquo;\u00e9tape DATA coupl\u00e9e \u00e0 l&rsquo;instruction d&rsquo;entr\u00e9e de donn\u00e9es en ligne DATALINES (ou CARDS), m\u00e9thode canonique pour instancier des donn\u00e9es au sein de la biblioth\u00e8que temporaire de travail de SAS, conventionnellement nomm\u00e9e WORK. Cette table de d\u00e9part, que nous baptiserons <em>original_data<\/em>, servira de banc d&rsquo;essai pour nos premi\u00e8res manipulations syntaxiques.<\/p>\n<p>Le bloc de code ci-dessous proc\u00e8de \u00e0 l&rsquo;initialisation de notre environnement exp\u00e9rimental en d\u00e9clarant trois vecteurs continus d\u00e9nomm\u00e9s arbitrairement <em>x<\/em>, <em>y<\/em> et <em>z<\/em>. Ces variables repr\u00e9sentent, par exemple, des coordonn\u00e9es tridimensionnelles issues d&rsquo;un capteur de biom\u00e9canique ou des concentrations sanguines de divers biomarqueurs mesur\u00e9es chez un \u00e9chantillon de sujets. L&rsquo;int\u00e9grit\u00e9 du typage num\u00e9rique et la validit\u00e9 des valeurs introduites sont scrupuleusement \u00e9tablies d\u00e8s cette phase.<\/p>\n<p>Dans l&rsquo;environnement de programmation SAS, la construction de cette structure s&rsquo;articule comme suit :<\/p>\n<p>DATA original_data;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;INPUT x y z;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DATALINES;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;10.5 22.1 104.3<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;11.2 24.5 106.8<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;14.8 21.0 101.2<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;09.9 26.3 110.5<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;12.4 23.8 108.1<br \/>\n;<br \/>\nRUN;<\/p>\n<p>L&rsquo;ex\u00e9cution de ce segment de code produit une table SAS comportant cinq observations et trois variables num\u00e9riques standards de huit octets chacune. D\u00e8s lors que cette table de r\u00e9f\u00e9rence est instanci\u00e9e et valid\u00e9e dans l&rsquo;espace de stockage de travail, il devient possible d&rsquo;op\u00e9rer une premi\u00e8re mutation structurelle visant \u00e0 substituer \u00e0 la variable <em>x<\/em> une d\u00e9nomination analytiquement plus signifiante.<\/p>\n<h3>3.2 Impl\u00e9mentation du renommage unitaire par l&rsquo;\u00e9tape DATA<\/h3>\n<p>L&rsquo;objectif de cette premi\u00e8re manipulation consiste \u00e0 transformer la colonne anonyme <em>x<\/em> en une variable explicitement identifi\u00e9e sous le terme <em>mesure_biometrique_x<\/em>, tout en maintenant parfaitement inalt\u00e9r\u00e9es les colonnes compagnes <em>y<\/em> et <em>z<\/em>. En appliquant la recommandation m\u00e9thodologique privil\u00e9giant l&rsquo;option de jeu de donn\u00e9es en entr\u00e9e sur l&rsquo;instruction SET, nous assurons une int\u00e9gration propre et lisible au sein du flux de compilation.<\/p>\n<p>La formulation syntaxique de cette op\u00e9ration s&rsquo;\u00e9tablit de la mani\u00e8re suivante :<\/p>\n<p>DATA new_data;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET original_data(RENAME=(x=mesure_biometrique_x));<br \/>\nRUN;<\/p>\n<p>\u00c0 l&rsquo;issue de la soumission de ce bloc, une lecture rigoureuse du journal d&rsquo;ex\u00e9cution (SAS Log) s&rsquo;av\u00e8re indispensable. Le journal doit consigner que la table WORK.ORIGINAL_DATA a \u00e9t\u00e9 lue avec succ\u00e8s, comptabilisant cinq observations, et que la table WORK.NEW_DATA a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e avec un volume strictement identique de lignes et de colonnes. Aucune alerte de type WARNING ni aucun message d&rsquo;erreur syntaxique (ERROR) ne doit entacher ce compte rendu. Les variables <em>y<\/em> et <em>z<\/em> demeurent rigoureusement intactes dans leur position et leur contenu, tandis que l&rsquo;adresse vectorielle d\u00e9volue \u00e0 <em>x<\/em> est d\u00e9sormais officiellement associ\u00e9e \u00e0 l&rsquo;identifiant <em>mesure_biometrique_x<\/em>.<\/p>\n<h3>3.3 Contr\u00f4le empirique des r\u00e9sultats par les proc\u00e9dures d&rsquo;inspection<\/h3>\n<p>En programmation scientifique, une modification n&rsquo;est r\u00e9put\u00e9e valide qu&rsquo;apr\u00e8s avoir \u00e9t\u00e9 formellement audit\u00e9e par des outils d&rsquo;inspection empiriques. Dans l&rsquo;environnement SAS, deux proc\u00e9dures standards remplissent cette fonction d&rsquo;audit avec un niveau d&rsquo;exhaustivit\u00e9 compl\u00e9mentaire : la proc\u00e9dure PROC PRINT et la proc\u00e9dure PROC CONTENTS.<\/p>\n<p>La proc\u00e9dure PROC PRINT permet d&rsquo;\u00e9diter le contenu tabulaire brut afin de s&rsquo;assurer visuellement du bon ordonnancement des observations et de l&rsquo;affichage du nouvel en-t\u00eate de colonne :<\/p>\n<p>PROC PRINT DATA=new_data NOOBS;<br \/>\nRUN;<\/p>\n<p>Cette instruction restitue les cinq lignes d&rsquo;enregistrements o\u00f9 la premi\u00e8re colonne appara\u00eet d\u00e9sormais sous le nom <em>mesure_biometrique_x<\/em>, affichant fid\u00e8lement les valeurs num\u00e9riques d&rsquo;origine (10.5, 11.2, 14.8, 09.9 et 12.4), confirmant l&rsquo;absence de perte ou d&rsquo;alt\u00e9ration de pr\u00e9cision flottante au cours de l&rsquo;op\u00e9ration.<\/p>\n<p>N\u00e9anmoins, l&rsquo;inspection la plus d\u00e9terminante s&rsquo;effectue au moyen de la proc\u00e9dure PROC CONTENTS, con\u00e7ue pour d\u00e9cortiquer le dictionnaire des descripteurs de la table :<\/p>\n<p>PROC CONTENTS DATA=new_data;<br \/>\nRUN;<\/p>\n<p>L&rsquo;analyse du rapport \u00e9mis par PROC CONTENTS atteste de la conformit\u00e9 structurelle de la nouvelle table : la liste alphab\u00e9tique des variables recense d\u00e9sormais <em>mesure_biometrique_x<\/em>, <em>y<\/em> et <em>z<\/em>. Le rapport d\u00e9montre \u00e9galement que les attributs physiques fondamentaux &mdash; \u00e0 savoir le type num\u00e9rique, la longueur de stockage fix\u00e9e par d\u00e9faut \u00e0 8 octets sous environnement 64 bits, ainsi que les \u00e9ventuels formats d&rsquo;affichage ou informats de lecture pr\u00e9existants &mdash; ont \u00e9t\u00e9 rigoureusement pr\u00e9serv\u00e9s. Le renommage unitaire a ainsi \u00e9t\u00e9 conduit dans le respect absolu de l&rsquo;int\u00e9grit\u00e9 des m\u00e9tadonn\u00e9es du syst\u00e8me.<\/p>\n<h2>4. Cas pratique 2 : Renommer simultan\u00e9ment plusieurs variables<\/h2>\n<h3>4.1 Syntaxe s\u00e9quentielle sans s\u00e9parateur par virgule<\/h3>\n<p>Dans la pratique r\u00e9elle du traitement de donn\u00e9es, le besoin de renommer une unique variable est marginal comparativement \u00e0 la n\u00e9cessit\u00e9 d&rsquo;ajuster simultan\u00e9ment des cohortes enti\u00e8res d&rsquo;indicateurs au sein d&rsquo;une m\u00eame table. L&rsquo;option RENAME= offre la capacit\u00e9 de traiter une multiplicit\u00e9 de couples de variables au sein d&rsquo;une seule et m\u00eame clause de d\u00e9claration. Cependant, cette flexibilit\u00e9 s&rsquo;accompagne d&rsquo;une r\u00e8gle syntaxique imp\u00e9rative propre au compilateur SAS qui d\u00e9route fr\u00e9quemment les utilisateurs familiers du langage SQL standard ou de langages modernes tels que R ou Python : les paires de renommage doivent \u00eatre s\u00e9par\u00e9es exclusivement par des espaces blancs, et en aucun cas par des virgules.<\/p>\n<p>La grammaire canonique s&rsquo;\u00e9nonce comme suit : RENAME=(ancien1=nouveau1 ancien2=nouveau2 ancien3=nouveau3). L&rsquo;insertion intempestive d&rsquo;une virgule entre les termes &mdash; par exemple sous la forme RENAME=(ancien1=nouveau1, ancien2=nouveau2) &mdash; provoque un arr\u00eat imm\u00e9diat de la compilation SAS, l&rsquo;analyseur lexical interpr\u00e9tant la virgule comme le s\u00e9parateur d&rsquo;une nouvelle option de table inexistante, ce qui g\u00e9n\u00e8re une erreur de syntaxe bloquante dans le journal syst\u00e8me.<\/p>\n<p>Cette s\u00e9quence sans d\u00e9limiteur de ponctuation s&rsquo;applique avec une stricte uniformit\u00e9, que les colonnes cibl\u00e9es soient de nature num\u00e9rique, alphanum\u00e9rique ou temporelle. Le traitement conjoint de variables h\u00e9t\u00e9rog\u00e8nes au sein d&rsquo;une unique \u00e9tape permet d&rsquo;optimiser le pipeline d&rsquo;ex\u00e9cution en mutualisant le cycle de lecture et d&rsquo;\u00e9criture des enregistrements sur le support physique de stockage.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/rename2.jpg\" alt=\"\" \/><\/figure>\n<h3>4.2 Application \u00e0 des batteries de mesures psychom\u00e9triques<\/h3>\n<p>Consid\u00e9rons \u00e0 pr\u00e9sent une application concr\u00e8te issue du champ de la psychom\u00e9trie ou de la psychiatrie observationnelle. Lors de l&rsquo;administration d&rsquo;un questionnaire standardis\u00e9 \u00e9valuant la sant\u00e9 mentale d&rsquo;une population d&rsquo;\u00e9tude &mdash; tel que l&rsquo;\u00e9chelle Hospital Anxiety and Depression Scale (HADS) &mdash;, les syst\u00e8mes d&rsquo;acquisition automatis\u00e9s stockent fr\u00e9quemment les r\u00e9ponses sous des identifiants alphanum\u00e9riques opaques et anonymes tels que <em>item_01<\/em>, <em>item_02<\/em>, <em>item_03<\/em>, <em>item_04<\/em>. Ces d\u00e9signations brutes s&rsquo;av\u00e8rent impropres \u00e0 la communication scientifique et compliquent l&rsquo;interpr\u00e9tation directe des coefficients lors des mod\u00e9lisations par \u00e9quations structurelles ou des r\u00e9gressions logistiques.<\/p>\n<p>Supposons une table initiale d\u00e9nomm\u00e9e <em>psychometrie_brute<\/em> contenant les identifiants abstraits des r\u00e9ponses fournies par les sujets d&rsquo;une cohorte clinique. Pour pr\u00e9parer la phase d&rsquo;analyse factorielle, le biostatisticien doit cat\u00e9goriser explicitement chaque item selon sa dimension sous-jacente (par exemple l&rsquo;anxi\u00e9t\u00e9 versus l&rsquo;\u00e9tat d\u00e9pressif) tout en sp\u00e9cifiant son rang d&rsquo;\u00e9valuation. L&rsquo;\u00e9tape DATA suivante applique un renommage simultan\u00e9 structur\u00e9 :<\/p>\n<p>DATA psychometrie_normalisee;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET psychometrie_brute(RENAME=(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_01 = anxiete_tension_int\u00e9rieure<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_02 = depression_perte_plaisir<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_03 = anxiete_peur_panique<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item_04 = depression_ralentissement_moteur<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;));<br \/>\nRUN;<\/p>\n<p>Par cette formulation s\u00e9quentielle fluide et lisible, le jeu de donn\u00e9es subit une transmutation s\u00e9mantique int\u00e9grale. Les variables r\u00e9sultantes renseignent imm\u00e9diatement le chercheur sur la construction conceptuelle sous-jacente sans qu&rsquo;il soit n\u00e9cessaire de consulter perp\u00e9tuellement le dictionnaire de codage externe. La coh\u00e9rence des agr\u00e9gats statistiques s&rsquo;en trouve renforc\u00e9e d\u00e8s l&rsquo;\u00e9tape initiale du traitement analytique.<\/p>\n<h3>4.3 Diagnostic des anomalies lexicales courantes<\/h3>\n<p>Lors de la manipulation de listes \u00e9tendues de variables au sein de l&rsquo;option RENAME=, l&rsquo;analyste s&rsquo;expose \u00e0 diverses anomalies lexicales susceptibles de compromettre le bon d\u00e9roulement du script. La d\u00e9faillance la plus courante r\u00e9side dans le d\u00e9s\u00e9quilibre des paires d&rsquo;assignation, souvent qualifi\u00e9 d&rsquo;erreur d&rsquo;appariement impaire. Cette situation survient lorsqu&rsquo;un op\u00e9rateur omet par inadvertance le signe d&rsquo;\u00e9galit\u00e9 ou le nom de la variable de destination au sein d&rsquo;une cha\u00eene complexe, par exemple : RENAME=(var1=new_var1 var2 var3=new_var3). Dans cette conjoncture, le moteur d&rsquo;analyse syntaxique de SAS se trouve dans l&rsquo;incapacit\u00e9 d&rsquo;associer le token isol\u00e9 <em>var2<\/em> \u00e0 un vecteur de r\u00e9ception, provoquant un arr\u00eat critique du script accompagn\u00e9 du message d&rsquo;erreur formel stipulant une anomalie grammaticale dans l&rsquo;expression RENAME.<\/p>\n<p>Une seconde erreur fr\u00e9quente concerne la gestion des parenth\u00e8ses englobantes. L&rsquo;option RENAME exige un double niveau de parenth\u00e9tisation : le premier d\u00e9limite l&rsquo;option de jeu de donn\u00e9es elle-m\u00eame, tandis que le second circonscrit l&rsquo;ensemble des \u00e9galit\u00e9s d&rsquo;affectation : (RENAME=(ancien=nouveau)). L&rsquo;omission de la parenth\u00e8se int\u00e9rieure ou de la parenth\u00e8se ext\u00e9rieure g\u00e9n\u00e8re une ambigu\u00eft\u00e9 lexicale majeure qui conduit le compilateur \u00e0 invalider l&rsquo;instruction SET dans son int\u00e9gralit\u00e9.<\/p>\n<p>L&rsquo;examen minutieux du fichier journal constitue le rem\u00e8de fondamental face \u00e0 ces d\u00e9convenues. Le journal SAS fournit g\u00e9n\u00e9ralement un indicateur de positionnement textuel &mdash; repr\u00e9sent\u00e9 par un point d&rsquo;interrogation ou un tiret soulignant le caract\u00e8re incrimin\u00e9 &mdash; signalant pr\u00e9cis\u00e9ment l&rsquo;endroit o\u00f9 la rupture grammaticale a \u00e9t\u00e9 d\u00e9cel\u00e9e. Le d\u00e9veloppeur doit alors v\u00e9rifier syst\u00e9matiquement la stricte parit\u00e9 des identifiants d\u00e9clar\u00e9s et l&rsquo;absence totale de tout caract\u00e8re de ponctuation non autoris\u00e9 au sein de la liste des couples de variables.<\/p>\n<h2>5. Cas pratique 3 : Ajout syst\u00e9matique de pr\u00e9fixes ou de suffixes<\/h2>\n<h3>5.1 Standardisation par pr\u00e9fixe pour le suivi longitudinal<\/h3>\n<p>Dans le domaine des protocoles exp\u00e9rimentaux longitudinaux, tels que les \u00e9tudes cliniques comparatives de type pr\u00e9-test\/post-test ou les \u00e9tudes \u00e9pid\u00e9miologiques de suivi de cohortes sur plusieurs d\u00e9cennies, les m\u00eames indicateurs biologiques, psychologiques ou \u00e9conomiques sont mesur\u00e9s de mani\u00e8re it\u00e9rative aux m\u00eames individus. Lors de la structuration de ces donn\u00e9es sous un format horizontal ou large (wide format), o\u00f9 chaque ligne correspond \u00e0 un sujet unique et chaque colonne \u00e0 une mesure effectu\u00e9e \u00e0 un instant pr\u00e9cis, il devient indispensable de pr\u00e9fixer rigoureusement les variables pour diff\u00e9rencier les fen\u00eatres temporelles de collecte.<\/p>\n<p>Imaginons un essai clinique mesurant la pression art\u00e9rielle systolique (PAS), le cholest\u00e9rol total (CHOL) et l&rsquo;indice de masse corporelle (IMC) lors de la visite d&rsquo;inclusion (Baseline ou Temps 0), puis lors d&rsquo;une visite de suivi \u00e0 douze mois (Temps 1). Pour \u00e9viter toute collision d&rsquo;identifiants lors de la fusion horizontale des deux tables d&rsquo;\u00e9valuation, les colonnes doivent \u00eatre affubl\u00e9es d&rsquo;un pr\u00e9fixe temporel univoque :<\/p>\n<p>DATA suivi_longitudinal;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;MERGE evaluation_inclusion(RENAME=(PAS=T0_PAS CHOL=T0_CHOL IMC=T0_IMC))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evaluation_suivi_12m(RENAME=(PAS=T1_PAS CHOL=T1_CHOL IMC=T1_IMC));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;BY identifiant_patient;<br \/>\nRUN;<\/p>\n<p>L&rsquo;adjonction m\u00e9thodique de ces pr\u00e9fixes garantit le maintien absolu de la tra\u00e7abilit\u00e9 temporelle des enregistrements. Elle autorise ensuite la formulation de calculs diff\u00e9rentiels imm\u00e9diats au sein de mod\u00e8les d&rsquo;analyses de variance pour mesures r\u00e9p\u00e9t\u00e9es (ANOVA) ou de r\u00e9gressions lin\u00e9aires mixtes, \u00e9liminant tout risque de confusion entre l&rsquo;\u00e9tat initial du participant et son \u00e9volution sous traitement pharmacologique.<\/p>\n<h3>5.2 Application syst\u00e9matique d&rsquo;un suffixe d&rsquo;unit\u00e9 ou de m\u00e9trique<\/h3>\n<p>La documentation de la nature m\u00e9trologique des variables au sein m\u00eame de leur appellation technique constitue une excellente pratique d&rsquo;ing\u00e9nierie des donn\u00e9es. L&rsquo;adjonction de suffixes standardis\u00e9s documentant l&rsquo;\u00e9chelle de mesure, l&rsquo;unit\u00e9 de compte ou la transformation math\u00e9matique subie par la variable brute conf\u00e8re une transparence imm\u00e9diate aux mod\u00e9lisations statistiques ult\u00e9rieures.<\/p>\n<p>Lorsqu&rsquo;un chercheur proc\u00e8de \u00e0 des transformations non lin\u00e9aires &mdash; telles que la normalisation logarithmique de concentrations d&rsquo;enzymes h\u00e9patiques asym\u00e9triques ou la standardisation z-score de scores cognitifs &mdash;, la conservation des noms de colonnes originaux constitue une source d&rsquo;erreurs d&rsquo;interpr\u00e9tation d\u00e9sastreuse. L&rsquo;int\u00e9gration de suffixes explicites r\u00e9sout d\u00e9finitivement cette ambigu\u00eft\u00e9 :<\/p>\n<p>DATA biomarqueurs_transformes;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET donnees_biologiques(RENAME=(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bilirubine = bilirubine_mgdl<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transaminase = transaminase_ui<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creatinine = creatinine_umol<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;bilirubine_log = log(bilirubine_mgdl);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;transaminase_log = log(transaminase_ui);<br \/>\nRUN;<\/p>\n<p>Cette rigueur terminologique permet \u00e0 quiconque explore la table finale de conna\u00eetre sans ambigu\u00eft\u00e9 l&rsquo;unit\u00e9 physique ou l&rsquo;\u00e9chelle math\u00e9matique du vecteur examin\u00e9, facilitant l&rsquo;\u00e9valuation par les pairs et garantissant que les coefficients de r\u00e9gression estim\u00e9s seront interpr\u00e9t\u00e9s dans leurs unit\u00e9s de mesure l\u00e9gitimes.<\/p>\n<h3>5.3 Extraction programmatique des noms existants avec SASHELP.VCOLUMN<\/h3>\n<p>Lorsque la structure d&rsquo;une table comporte plusieurs dizaines, voire plusieurs centaines de variables \u00e0 suffixer ou pr\u00e9fixer de mani\u00e8re homog\u00e8ne, la saisie manuelle de chaque instruction d&rsquo;affectation au sein de l&rsquo;option RENAME= devient impraticable, source in\u00e9vitable de fautes de frappe et d&rsquo;omissions. Le syst\u00e8me SAS dispose d&rsquo;un m\u00e9canisme hautement \u00e9l\u00e9gant pour contourner cette contrainte : l&rsquo;interrogation directe des tables du dictionnaire de m\u00e9tadonn\u00e9es, accessibles en lecture seule via la biblioth\u00e8que syst\u00e8me SASHELP, et tout particuli\u00e8rement la vue SASHELP.VCOLUMN.<\/p>\n<p>La vue SASHELP.VCOLUMN consigne de mani\u00e8re exhaustive l&rsquo;ensemble des caract\u00e9ristiques de toutes les colonnes pr\u00e9sentes dans l&rsquo;ensemble des tables allou\u00e9es au sein de la session SAS active (nom de la biblioth\u00e8que, nom de la table, nom de la colonne, type, longueur, position, etc.). En combinant une requ\u00eate d\u00e9clarative via la proc\u00e9dure PROC SQL et l&rsquo;interrogation de cette vue, il devient ais\u00e9 de construire dynamiquement la cha\u00eene textuelle correspondant \u00e0 l&rsquo;ensemble des paires de renommage requises :<\/p>\n<p>PROC SQL NOPRINT;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SELECT CATX(&lsquo;=&rsquo;, name, CATS(&lsquo;PRE_&rsquo;, name))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;INTO :liste_renommage SEPARATED BY &lsquo; &lsquo;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;FROM sashelp.vcolumn<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;WHERE libname = &lsquo;WORK&rsquo; AND memname = &lsquo;COHORTE_INITIALE&rsquo;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND name NOT IN (&lsquo;ID_PATIENT&rsquo;, &lsquo;CENTRE_INCLUSION&rsquo;);<br \/>\nQUIT;<\/p>\n<p>L&rsquo;ex\u00e9cution de cette requ\u00eate SQL extrait tous les noms de colonnes de la table cible (\u00e0 l&rsquo;exclusion des cl\u00e9s d&rsquo;identification pr\u00e9serv\u00e9es), concat\u00e8ne \u00e0 chacun le pr\u00e9fixe d\u00e9sir\u00e9 \u00e0 l&rsquo;aide des fonctions de manipulation de cha\u00eenes CATX et CATS, et agr\u00e8ge l&rsquo;ensemble de ces d\u00e9clarations au sein d&rsquo;une unique macro-variable globale nomm\u00e9e <em>liste_renommage<\/em>, s\u00e9par\u00e9es par des espaces. D\u00e8s lors, l&rsquo;\u00e9tape DATA ult\u00e9rieure se simplifie de mani\u00e8re spectaculaire :<\/p>\n<p>DATA cohorte_prefixee;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET cohorte_initiale(RENAME=(&amp;liste_renommage));<br \/>\nRUN;<\/p>\n<p>Cette approche programmatique \u00e9limine toute intervention manuelle dans la d\u00e9claration des variables, offrant un gain de productivit\u00e9 consid\u00e9rable et garantissant l&rsquo;exactitude absolue du processus de standardisation sur les bases de donn\u00e9es \u00e0 haute dimensionnalit\u00e9.<\/p>\n<h2>6. Renommage en place sans duplication physique : PROC DATASETS<\/h2>\n<h3>6.1 Architecture et efficacit\u00e9 computationnelle de PROC DATASETS<\/h3>\n<p>L&rsquo;un des d\u00e9fis majeurs auxquels sont confront\u00e9s les gestionnaires de donn\u00e9es r\u00e9side dans l&rsquo;optimisation des performances de calcul et la pr\u00e9servation des capacit\u00e9s d&rsquo;entr\u00e9es-sorties (I\/O) lors du traitement de r\u00e9f\u00e9rentiels massifs (commun\u00e9ment d\u00e9sign\u00e9s sous le terme de Big Data). Comme expos\u00e9 pr\u00e9c\u00e9demment, la mise en \u0153uvre d&rsquo;une \u00e9tape DATA pour effectuer un simple renommage de colonnes impose au sous-syst\u00e8me de stockage de relire s\u00e9quentiellement l&rsquo;int\u00e9gralit\u00e9 des octets de la table source et de les r\u00e9\u00e9crire int\u00e9gralement dans une nouvelle table cible ou d&rsquo;\u00e9craser la table initiale via un fichier temporaire interm\u00e9diaire. Sur une base de donn\u00e9es de plusieurs centaines de millions d&rsquo;enregistrements repr\u00e9sentant des dizaines de gigaoctets, cette r\u00e9plication st\u00e9rile peut requ\u00e9rir plusieurs dizaines de minutes de calcul processeur et saturer les canaux de communication disque.<\/p>\n<p>La proc\u00e9dure <a rel=\"noopener noreferrer\" href=\"https:\/\/documentation.sas.com\/\">PROC DATASETS<\/a> constitue la r\u00e9ponse d&rsquo;ing\u00e9nierie optimale d\u00e9velopp\u00e9e par l&rsquo;Institut SAS pour surmonter cette inefficience structurelle. Contrairement \u00e0 l&rsquo;\u00e9tape DATA, PROC DATASETS est une proc\u00e9dure utilitaire de gestion de biblioth\u00e8que qui op\u00e8re exclusivement au niveau du bloc descripteur (l&rsquo;en-t\u00eate de la table de donn\u00e9es SAS h\u00e9berg\u00e9 sur le support de stockage). Les tables SAS sont compos\u00e9es de deux strates logiques : le descripteur, qui encapsule les m\u00e9tadonn\u00e9es et la structure de la table, et le bloc d&rsquo;enregistrements, qui abrite les donn\u00e9es brutes sous forme matricielle continue.<\/p>\n<p>Lorsque PROC DATASETS est invoqu\u00e9e pour renommer une variable, le moteur de fichiers localise l&rsquo;en-t\u00eate du fichier sur le disque, modifie les octets allou\u00e9s \u00e0 la cha\u00eene textuelle du nom de la variable dans le catalogue de descripteurs, et valide imm\u00e9diatement la mise \u00e0 jour sans jamais acc\u00e9der aux lignes de donn\u00e9es proprement dites. L&rsquo;op\u00e9ration s&rsquo;ex\u00e9cute ainsi en une fraction infime de seconde, quelle que soit la volum\u00e9trie de la table sous-jacente &mdash; qu&rsquo;elle compte dix observations ou plusieurs milliards de lignes &mdash;, ce qui en fait l&rsquo;outil d&rsquo;\u00e9lection absolu dans les environnements de production industrielle \u00e0 hautes contraintes de performance.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/rename3.jpg\" alt=\"\" \/><\/figure>\n<h3>6.2 Syntaxe formelle de l&rsquo;instruction MODIFY et de la sous-instruction RENAME<\/h3>\n<p>L&rsquo;exploitation de la proc\u00e9dure PROC DATASETS pour le renommage de variables ob\u00e9it \u00e0 une s\u00e9quence syntaxique sp\u00e9cifique et hautement codifi\u00e9e. Elle fait intervenir la d\u00e9claration de la biblioth\u00e8que d&rsquo;accueil, le ciblage de la table au moyen de l&rsquo;instruction MODIFY, et l&rsquo;\u00e9nonciation des transformations par la sous-instruction RENAME. L&rsquo;option NOLIST est g\u00e9n\u00e9ralement adjointe \u00e0 l&rsquo;en-t\u00eate de proc\u00e9dure afin de d\u00e9sactiver l&rsquo;impression automatique du catalogue de la biblioth\u00e8que dans les sorties du syst\u00e8me, all\u00e9geant ainsi le journal d&rsquo;ex\u00e9cution.<\/p>\n<p>Le bloc op\u00e9rationnel type se structure selon les d\u00e9clarations suivantes :<\/p>\n<p>PROC DATASETS LIBRARY=work NOLIST;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;MODIFY grande_table_analytique;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;RENAME ancien_identifiant = nouvel_identifiant<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autre_variable_source = autre_variable_cible;<br \/>\nRUN;<br \/>\nQUIT;<\/p>\n<p>Plusieurs \u00e9l\u00e9ments critiques doivent \u00eatre scrupuleusement not\u00e9s au sein de cette construction. En premier lieu, la sous-instruction RENAME s&rsquo;applique directement \u00e0 la table sp\u00e9cifi\u00e9e par l&rsquo;instruction MODIFY imm\u00e9diatement pr\u00e9c\u00e9dente. Les paires d&rsquo;assignation sont s\u00e9par\u00e9es par des espaces ou des retours \u00e0 la ligne, et l&rsquo;instruction se conclut formellement par un point-virgule. En second lieu, il est imp\u00e9ratif d&rsquo;inclure \u00e0 la fois l&rsquo;instruction RUN et l&rsquo;instruction QUIT. La proc\u00e9dure PROC DATASETS est une proc\u00e9dure interactive : elle demeure active en m\u00e9moire d&rsquo;ex\u00e9cution tant qu&rsquo;une instruction QUIT formelle ne lui a pas signifi\u00e9 sa cl\u00f4ture d\u00e9finitive. L&rsquo;omission du mot-cl\u00e9 QUIT laisse la proc\u00e9dure ouverte en arri\u00e8re-plan, ce qui peut bloquer le flux s\u00e9quentiel des scripts automatis\u00e9s subs\u00e9quents.<\/p>\n<h3>6.3 Impacts sur les verrous de fichiers et l&rsquo;espace de stockage<\/h3>\n<p>La modification directe sur place des m\u00e9tadonn\u00e9es d&rsquo;une table conf\u00e8re \u00e0 PROC DATASETS des implications architecturales majeures qu&rsquo;il convient de ma\u00eetriser pour pr\u00e9venir tout incident d&rsquo;exploitation. La premi\u00e8re cons\u00e9quence positive concerne l&rsquo;occupation de l&rsquo;espace de stockage physique. \u00c9tant donn\u00e9 qu&rsquo;aucune copie temporaire ou d\u00e9finitive du jeu de donn\u00e9es n&rsquo;est g\u00e9n\u00e9r\u00e9e lors de l&rsquo;op\u00e9ration, la consommation additionnelle d&rsquo;espace dans le r\u00e9pertoire temporaire SASWORK est strictement nulle. Dans les contextes o\u00f9 l&rsquo;espace allou\u00e9 au dossier temporaire de travail est restreint par les administrateurs syst\u00e8me, l&rsquo;usage de l&rsquo;\u00e9tape DATA pour renommer des colonnes sur une table volumineuse conduit fr\u00e9quemment \u00e0 une interruption pr\u00e9matur\u00e9e du traitement pour cause de d\u00e9passement de quota disque (code d&rsquo;erreur syst\u00e8me Out of Space). PROC DATASETS \u00e9limine d\u00e9finitivement ce facteur de vuln\u00e9rabilit\u00e9 technique.<\/p>\n<p>N\u00e9anmoins, cette modification sur place requiert imp\u00e9rativement l&rsquo;obtention d&rsquo;un verrou exclusif d&rsquo;\u00e9criture (exclusive file lock) sur le fichier SAS concern\u00e9. Si la table cibl\u00e9e est simultan\u00e9ment ouverte en consultation par une autre session utilisateur, lue par un visualiseur de donn\u00e9es ou verrouill\u00e9e par un processus analytique concurrent, le moteur de fichiers SAS rejettera imm\u00e9diatement la demande de modification du descripteur, d\u00e9clenchant une erreur de verrouillage (Locked File Error) dans le journal d&rsquo;ex\u00e9cution.<\/p>\n<p>Sur le plan du temps processeur (CPU Time) et du temps d&rsquo;attente syst\u00e8me (Real Time), les gains obtenus par PROC DATASETS sont vertigineux. Les tests comparatifs d\u00e9montrent que sur une table de 50 millions de lignes et 100 colonnes, une \u00e9tape DATA requiert plusieurs dizaines de secondes de lecture et d&rsquo;\u00e9criture s\u00e9quentielles mobilisant une bande passante disque consid\u00e9rable, alors que PROC DATASETS r\u00e9alise l&rsquo;op\u00e9ration de renommage en moins de 0,05 seconde, sans sollicitation mesurable du sous-syst\u00e8me de disques.<\/p>\n<h2>7. Renommage de variables via le langage SQL (PROC SQL)<\/h2>\n<h3>7.1 Renommage \u00e0 la vol\u00e9e avec l&rsquo;alias de projection (Clause AS)<\/h3>\n<p>L&rsquo;int\u00e9gration du langage d&rsquo;interrogation structur\u00e9 au sein de l&rsquo;environnement SAS par le truchement de la proc\u00e9dure PROC SQL fournit une alternative d&rsquo;une grande \u00e9l\u00e9gance d\u00e9clarative pour renommer des variables. Cette m\u00e9thodologie s&rsquo;av\u00e8re particuli\u00e8rement naturelle pour les ing\u00e9nieurs de donn\u00e9es et analystes form\u00e9s aux environnements de bases de donn\u00e9es relationnelles (tels qu&rsquo;Oracle, PostgreSQL ou Microsoft SQL Server). Dans le paradigme SQL, le renommage ponctuel d&rsquo;une colonne s&rsquo;op\u00e8re canoniquement lors de la phase de projection \u00e0 travers l&rsquo;utilisation de l&rsquo;alias de colonne r\u00e9gi par le mot-cl\u00e9 AS au sein de la clause SELECT.<\/p>\n<p>L&rsquo;impl\u00e9mentation pratique de ce m\u00e9canisme s&rsquo;illustre par la requ\u00eate suivante :<\/p>\n<p>PROC SQL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE donnees_reformatees AS<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SELECT identifiant AS id_sujet,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;score_brut AS score_ajuste,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date_test AS date_evaluation<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;FROM table_source;<br \/>\nQUIT;<\/p>\n<p>Cette approche cr\u00e9e une nouvelle table physique dans laquelle les colonnes s\u00e9lectionn\u00e9es adoptent imm\u00e9diatement leurs nouveaux identifiants. Cependant, l&rsquo;une des forces architecturales les plus remarquables de PROC SQL r\u00e9side dans la capacit\u00e9 \u00e0 substituer \u00e0 la cr\u00e9ation d&rsquo;une table physique la g\u00e9n\u00e9ration d&rsquo;une vue relationnelle virtuelle via la syntaxe CREATE VIEW. En rempla\u00e7ant CREATE TABLE par CREATE VIEW dans la requ\u00eate pr\u00e9c\u00e9dente, SAS enregistre uniquement la logique de la projection dans le descripteur de vue sans allouer le moindre octet de stockage pour les donn\u00e9es. Chaque fois que la vue est appel\u00e9e par une proc\u00e9dure d&rsquo;analyse statistique subs\u00e9quente, le renommage s&rsquo;ex\u00e9cute dynamiquement \u00e0 la vol\u00e9e, offrant une solution id\u00e9ale pour pr\u00e9senter des interfaces de donn\u00e9es normalis\u00e9es sans consommer d&rsquo;espace disque additionnel.<\/p>\n<h3>7.2 Modification structurelle permanente avec ALTER TABLE et RENAME<\/h3>\n<p>Outre les capacit\u00e9s d&rsquo;aliasing projectif offertes par la clause SELECT, la proc\u00e9dure PROC SQL int\u00e8gre un sous-ensemble d&rsquo;instructions relevant du langage de d\u00e9finition de donn\u00e9es (Data Definition Language ou DDL). Parmi ces commandes figure l&rsquo;instruction ALTER TABLE, sp\u00e9cifiquement con\u00e7ue pour modifier l&rsquo;architecture structurelle d&rsquo;une table relationnelle existante sans r\u00e9\u00e9crire l&rsquo;ensemble du fichier de donn\u00e9es. Dans le dialecte PROC SQL de SAS, la clause ALTER TABLE autorise le renommage direct de colonnes au moyen de la sous-instruction RENAME.<\/p>\n<p>La syntaxe op\u00e9ratoire de cette modification structurelle permanente se formule comme suit :<\/p>\n<p>PROC SQL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ALTER TABLE base_epidemiologique<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;RENAME code_insee TO commune_residence,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statut_tabac TO exposition_tabagique;<br \/>\nQUIT;<\/p>\n<p>L&rsquo;ex\u00e9cution de cette requ\u00eate DDL modifie la structure de la table <em>base_epidemiologique<\/em> de mani\u00e8re d\u00e9finitive et en place. Le moteur SQL interne de SAS interagit avec les couches de stockage de mani\u00e8re similaire \u00e0 PROC DATASETS, adaptant les d\u00e9finitions de colonnes au sein du descripteur de table. Contrairement \u00e0 l&rsquo;\u00e9tape DATA classique, les paires de renommage dans la clause ALTER TABLE de PROC SQL utilisent le mot-cl\u00e9 de transition TO (et non le signe d&rsquo;\u00e9galit\u00e9 =) et sont rigoureusement d\u00e9limit\u00e9es par des virgules, conform\u00e9ment aux conventions lexicales de la norme SQL ANSI.<\/p>\n<p>Il existe n\u00e9anmoins des restrictions structurelles \u00e0 l&rsquo;usage de cette instruction sous PROC SQL : l&rsquo;op\u00e9ration \u00e9chouera si la table cible est assujettie \u00e0 des contraintes d&rsquo;int\u00e9grit\u00e9 r\u00e9f\u00e9rentielle complexes non suspendues ou si elle r\u00e9side dans un moteur de base de donn\u00e9es distant dont le pilote SAS\/ACCESS sous-jacent ne supporte pas la r\u00e9percussion directe des ordres DDL de renommage.<\/p>\n<h3>7.3 \u00c9valuation comparative : PROC SQL versus \u00e9tape DATA<\/h3>\n<p>L&rsquo;arbitrage technique entre la mobilisation de PROC SQL et le recours \u00e0 l&rsquo;\u00e9tape DATA pour l&rsquo;op\u00e9ration de renommage doit \u00eatre guid\u00e9 par une appr\u00e9ciation fine des flux de travail et des transformations concomitantes. Si l&rsquo;op\u00e9ration de renommage s&rsquo;inscrit au sein d&rsquo;une cha\u00eene logique impliquant des agr\u00e9gations relationnelles, des jointures multi-tables via la clause JOIN, ou l&rsquo;extraction de m\u00e9triques synth\u00e9tiques par des fonctions d&rsquo;agr\u00e9gation (telles que SUM ou AVG), l&rsquo;utilisation de PROC SQL est hautement recommand\u00e9e en raison de son expressivit\u00e9 d\u00e9clarative et de l&rsquo;optimisation interne de l&rsquo;optimiseur de requ\u00eates SQL (Cost-Based Optimizer).<\/p>\n<p>En revanche, lorsque le renommage de variables est associ\u00e9 \u00e0 des manipulations s\u00e9quentielles ligne par ligne &mdash; telles que l&rsquo;acc\u00e8s aux valeurs de la ligne pr\u00e9c\u00e9dente par la fonction LAG, l&rsquo;\u00e9valuation de conditions imp\u00e9ratives complexes \u00e0 plusieurs embranchements, ou l&rsquo;ex\u00e9cution de boucles it\u00e9ratives &mdash;, l&rsquo;\u00e9tape DATA demeure incontournable en mati\u00e8re d&rsquo;efficacit\u00e9 d&rsquo;ex\u00e9cution et de flexibilit\u00e9 fonctionnelle. Sur le strict plan du benchmarking de renommage pur avec r\u00e9\u00e9criture compl\u00e8te, les performances de temps de r\u00e9ponse entre une \u00e9tape DATA optimis\u00e9e et un CREATE TABLE sous PROC SQL s&rsquo;av\u00e8rent comparables sur des jeux de donn\u00e9es de taille moyenne. Toutefois, d\u00e8s lors qu&rsquo;aucune manipulation additionnelle de donn\u00e9es n&rsquo;est requise, la supr\u00e9matie de la proc\u00e9dure PROC DATASETS demeure absolue, surpassant syst\u00e9matiquement tant l&rsquo;\u00e9tape DATA que PROC SQL par son absence totale de recours aux op\u00e9rations d&rsquo;entr\u00e9es-sorties d&rsquo;enregistrements.<\/p>\n<h2>8. Automatisation avanc\u00e9e par la macro-programmation SAS<\/h2>\n<h3>8.1 G\u00e9n\u00e9ration dynamique d&rsquo;expressions de renommage via CALL SYMPUTX<\/h3>\n<p>Dans les pipelines de traitement de donn\u00e9es d&rsquo;entreprise et les architectures analytiques de pointe, la programmation statique montre rapidement ses limites face \u00e0 la variabilit\u00e9 des donn\u00e9es entrantes. L&rsquo;automatisation dynamique du renommage de variables s&rsquo;impose d\u00e8s lors que les structures tabulaires \u00e9voluent ou que les identifiants de colonnes sont transmis dynamiquement par des sources externes sans intervention humaine directe. L&rsquo;environnement macro de SAS, combin\u00e9 \u00e0 la routine syst\u00e8me CALL SYMPUTX au sein d&rsquo;une \u00e9tape DATA d&rsquo;extraction, offre un m\u00e9canisme robuste pour concr\u00e9tiser cette exigence d&rsquo;automatisation.<\/p>\n<p>Le principe fondamental consiste \u00e0 interroger les m\u00e9tadonn\u00e9es syst\u00e8me &mdash; telles que la table SASHELP.VCOLUMN ou une table de correspondance pr\u00e9alablement d\u00e9finie par un dictionnaire d&rsquo;entreprise &mdash;, puis d&rsquo;assembler dynamiquement la cha\u00eene d&rsquo;affectation au format ancien=nouveau et de l&rsquo;injecter au sein d&rsquo;une macro-variable d&rsquo;environnement. La routine CALL SYMPUTX est sp\u00e9cifiquement privil\u00e9gi\u00e9e ici par rapport \u00e0 l&rsquo;ancienne routine CALL SYMPUT en raison de sa gestion automatique du d\u00e9capage des espaces r\u00e9siduels (trimming) et de la conversion implicite s\u00e9curis\u00e9e des types.<\/p>\n<p>L&rsquo;architecture de ce traitement automatis\u00e9 s&rsquo;articule comme suit :<\/p>\n<p>DATA _NULL_;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;LENGTH instruction_renommage $32767;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;RETAIN instruction_renommage \u00a0\u00bb;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET dictionnaire_de_renommage END=fin_de_fichier;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;instruction_renommage = CATX(&lsquo; &lsquo;, instruction_renommage, CATX(&lsquo;=&rsquo;, ancienne_var, nouvelle_var));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IF fin_de_fichier THEN DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL SYMPUTX(&lsquo;chaine_renommage_globale&rsquo;, instruction_renommage, &lsquo;G&rsquo;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;END;<br \/>\nRUN;<\/p>\n<p>Gr\u00e2ce \u00e0 cette routine, la macro-variable globale <em>chaine_renommage_globale<\/em> h\u00e9berge l&rsquo;int\u00e9gralit\u00e9 de la directive syntaxique requise. L&rsquo;\u00e9tape de production cons\u00e9cutive n&rsquo;a plus qu&rsquo;\u00e0 r\u00e9soudre cette variable macro au sein de son option RENAME=, permettant une mise \u00e0 l&rsquo;\u00e9chelle industrielle totalement ind\u00e9pendante du nombre de colonnes \u00e0 traiter et immunis\u00e9e contre les risques d&rsquo;omission humaine.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/rename5.jpg\" alt=\"\" \/><\/figure>\n<h3>8.2 Boucles macro-it\u00e9ratives (%DO) pour s\u00e9ries de variables standardis\u00e9es<\/h3>\n<p>Dans de nombreuses disciplines scientifiques &mdash; notamment en psychom\u00e9trie, en g\u00e9nomique ou lors du traitement de questionnaires d&rsquo;\u00e9valuation de la qualit\u00e9 de vie &mdash;, les donn\u00e9es brutes sont constitu\u00e9es de s\u00e9ries massives d&rsquo;items indic\u00e9s s\u00e9quentiellement, par exemple des questions num\u00e9rot\u00e9es de 1 \u00e0 100 sous la forme <em>Q1<\/em> \u00e0 <em>Q100<\/em>. Si la nomenclature cible exige de transformer ces identifiants sommaires en une structure indic\u00e9e normalis\u00e9e comportant un formatage textuel strict (par exemple <em>item_eval_001<\/em> \u00e0 <em>item_eval_100<\/em> avec pr\u00e9servation d&rsquo;un remplissage par z\u00e9ros \u00e0 gauche), le recours aux boucles it\u00e9ratives du macro-langage SAS via l&rsquo;instruction %DO constitue la solution algorithmique la plus appropri\u00e9e.<\/p>\n<p>L&rsquo;\u00e9laboration d&rsquo;un bloc de pr\u00e9-compilation macro exploitant les fonctions de formatage textuel syst\u00e8me %SYSFUNC permet d&rsquo;engendrer instantan\u00e9ment cette s\u00e9rie d&rsquo;\u00e9galit\u00e9s formelles sans aucune saisie fastidieuse :<\/p>\n<p>%MACRO generer_chaine_indices(nb_variables=);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%LOCAL i resultat;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%LET resultat = ;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%DO i = 1 %TO &amp;nb_variables;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%LET resultat = &amp;resultat Q&amp;i = item_eval_%SYSFUNC(PUTN(&amp;i, Z3.));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&amp;resultat<br \/>\n%MEND generer_chaine_indices;<\/p>\n<p>En invoquant cette macro-fonction au sein d&rsquo;une option de jeu de donn\u00e9es &mdash; sous la forme SET table_source(RENAME=(%generer_chaine_indices(nb_variables=100))); &mdash;, le processeur macro de SAS substitue dynamiquement au texte d&rsquo;appel l&rsquo;ensemble exhaustif des cent couples d&rsquo;affectation d\u00fbment ordonn\u00e9s. La fonction interne Z3. assure que chaque chiffre inf\u00e9rieur \u00e0 cent est automatiquement dot\u00e9 des z\u00e9ros de t\u00eate requis (<em>001<\/em>, <em>002<\/em>, &#8230;, <em>100<\/em>), assurant un tri alphanum\u00e9rique rigoureux des colonnes dans tous les outils de reporting ult\u00e9rieurs.<\/p>\n<h3>8.3 D\u00e9veloppement et d\u00e9ploiement d&rsquo;une macro modulaire %RENAME_VAR<\/h3>\n<p>Pour conf\u00e9rer \u00e0 un laboratoire de biostatistique ou \u00e0 une direction des \u00e9tudes un haut niveau d&rsquo;efficience op\u00e9rationnelle, il est particuli\u00e8rement pertinent de concevoir une macro-commande modulaire d&rsquo;entreprise d\u00e9di\u00e9e au renommage, encapsulant les m\u00e9canismes d&rsquo;int\u00e9grit\u00e9, la gestion des exceptions et l&rsquo;auditabilit\u00e9 des op\u00e9rations. La macro param\u00e9trique d\u00e9nomm\u00e9e <em>%RENAME_VAR<\/em> pr\u00e9sent\u00e9e ci-dessous illustre cette d\u00e9marche d&rsquo;ing\u00e9nierie logicielle avanc\u00e9e.<\/p>\n<p>Cette routine accepte en arguments d&rsquo;entr\u00e9e le nom de la table source, le nom de la table de sortie, l&rsquo;ancien nom de la variable et le nouveau nom de la variable, tout en int\u00e9grant des v\u00e9rifications pr\u00e9ventives garantissant l&rsquo;existence pr\u00e9alable du fichier et la consignation formelle du succ\u00e8s op\u00e9rationnel au sein du journal d&rsquo;audit :<\/p>\n<p>%MACRO RENAME_VAR(table_in=, table_out=, old_name=, new_name=);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%IF %SYSFUNC(EXIST(&amp;table_in)) = 0 %THEN %DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(ERR)OR: [MACRO RENAME_VAR] La table d&rsquo;origine &amp;table_in est introuvable.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%RETURN;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%END;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;DATA &amp;table_out;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET &amp;table_in(RENAME=(&amp;old_name = &amp;new_name));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;RUN;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;%IF &amp;SYSERR = 0 %THEN %DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(NOTE): [MACRO RENAME_VAR] Renommage avec succes de &amp;old_name en &amp;new_name.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%ELSE %DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(ERR)OR: [MACRO RENAME_VAR] Echec critique lors de l&rsquo;etape de renommage.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;%END;<br \/>\n%MEND RENAME_VAR;<\/p>\n<p>Le d\u00e9ploiement centralis\u00e9 d&rsquo;un tel module garantit une ex\u00e9cution harmonis\u00e9e sur l&rsquo;ensemble des postes de travail d&rsquo;une organisation. La v\u00e9rification conditionnelle bas\u00e9e sur la fonction syst\u00e8me %SYSFUNC(EXIST(&#8230;)) emp\u00eache le d\u00e9clenchement d&rsquo;\u00e9tapes de calcul destructrices en cas d&rsquo;absence de la ressource source, tandis que l&rsquo;\u00e9valuation du code d&rsquo;erreur automatique syst\u00e8me &amp;SYSERR assure une tra\u00e7abilit\u00e9 totale du flux de travail au sein des journaux de production.<\/p>\n<h2>9. Interaction du renommage avec les autres d\u00e9clarations SAS<\/h2>\n<h3>9.1 Gestion des interactions avec DROP et KEEP<\/h3>\n<p>Dans la conduite des flux d&rsquo;\u00e9puration de donn\u00e9es sous SAS, il est tr\u00e8s fr\u00e9quent d&rsquo;associer le renommage de certaines variables au filtrage s\u00e9lectif des colonnes au moyen des instructions ou options DROP (exclusion) et KEEP (r\u00e9tention). Toutefois, l&rsquo;interaction simultan\u00e9e de ces d\u00e9clarations au sein d&rsquo;une m\u00eame \u00e9tape DATA ob\u00e9it \u00e0 un ordre d&rsquo;\u00e9valuation logique rigoureux r\u00e9gi par l&rsquo;architecture du compilateur SAS, dont la m\u00e9connaissance provoque des erreurs syst\u00e9matiques d&rsquo;ex\u00e9cution.<\/p>\n<p>Lorsque l&rsquo;option RENAME= cohabite avec l&rsquo;option KEEP= ou DROP= sur la m\u00eame instruction d&rsquo;entr\u00e9e SET &mdash; par exemple : SET table_source(KEEP=var1 var2 RENAME=(var1=nouvelle_var1)); &mdash;, le compilateur \u00e9value imp\u00e9rativement les options dans l&rsquo;ordre fonctionnel interne suivant : <em>DROP\/KEEP<\/em> sont analys\u00e9es en tout premier lieu, avant toute autre substitution. En cons\u00e9quence, la variable doit obligatoirement \u00eatre d\u00e9sign\u00e9e sous son <strong>ancien nom<\/strong> au sein de la clause KEEP ou DROP. Si l&rsquo;analyste commet l&rsquo;erreur d&rsquo;inscrire le nouveau nom au sein de la clause KEEP adoss\u00e9e \u00e0 l&rsquo;instruction SET, le compilateur \u00e9choue en signalant que la variable n&rsquo;existe pas dans la table source, car le renommage n&rsquo;a pas encore \u00e9t\u00e9 consomm\u00e9 lors de l&rsquo;\u00e9tablissement du filtre d&rsquo;extraction.<\/p>\n<p>\u00c0 l&rsquo;inverse, si les options DROP ou KEEP sont positionn\u00e9es en sortie sur l&rsquo;instruction DATA &mdash; ou invoqu\u00e9es sous la forme d&rsquo;instructions autonomes dans le corps du programme alors que le renommage a \u00e9t\u00e9 op\u00e9r\u00e9 dans l&rsquo;instruction SET &mdash;, c&rsquo;est le <strong>nouveau nom<\/strong> qui doit obligatoirement \u00eatre r\u00e9f\u00e9renc\u00e9. L&rsquo;ancien nom ayant \u00e9t\u00e9 \u00e9vinc\u00e9 du PDV lors de la phase de chargement, toute tentative d&rsquo;exclusion ou de conservation bas\u00e9e sur l&rsquo;ancienne d\u00e9signation r\u00e9sultera en une erreur bloquante. La ma\u00eetrise de cette chronologie d&rsquo;\u00e9valuation interne constitue une comp\u00e9tence essentielle pour tout programmeur SAS chevronn\u00e9.<\/p>\n<h3>9.2 Pr\u00e9servation des m\u00e9tadonn\u00e9es associ\u00e9es : Labels, Formats et Informats<\/h3>\n<p>L&rsquo;alt\u00e9ration de l&rsquo;identifiant technique d&rsquo;une colonne soul\u00e8ve imm\u00e9diatement la question de la p\u00e9rennit\u00e9 de ses m\u00e9tadonn\u00e9es p\u00e9riph\u00e9riques, \u00e0 savoir ses \u00e9tiquettes descriptives (Labels), ses r\u00e8gles d&rsquo;affichage \u00e0 l&rsquo;\u00e9cran (Formats) et ses mod\u00e8les d&rsquo;interpr\u00e9tation lors de la lecture (Informats). Dans la conception du noyau SAS, le descripteur d&rsquo;une variable stocke ces attributs sous forme de propri\u00e9t\u00e9s attach\u00e9es au vecteur de m\u00e9tadonn\u00e9es de la colonne. Lorsque l&rsquo;on proc\u00e8de au renommage d&rsquo;une variable par l&rsquo;option RENAME= (que ce soit dans l&rsquo;\u00e9tape DATA ou via PROC DATASETS), le syst\u00e8me assure par d\u00e9faut la transmission int\u00e9grale et transparente de l&rsquo;ensemble des formats et libell\u00e9s existants au nouvel identifiant.<\/p>\n<p>Cependant, des discordances s\u00e9mantiques peuvent surgir \u00e0 la suite d&rsquo;un renommage. Par exemple, si une variable originellement nomm\u00e9e <em>age_brut<\/em> poss\u00e9dait un format personnalis\u00e9 de tranches d&rsquo;\u00e2ges (cr\u00e9\u00e9 via PROC FORMAT) et un label explicatif stipulant \u00ab \u00c2ge du patient en ann\u00e9es r\u00e9volues \u00bb, mais que l&rsquo;analyste la renomme en <em>age_standardise_zscore<\/em> apr\u00e8s transformation math\u00e9matique, le maintien aveugle des anciens formats et libell\u00e9s produit une anomalie documentaire majeure : la table contiendra des valeurs num\u00e9riques centr\u00e9es-r\u00e9duites affubl\u00e9es d&rsquo;un libell\u00e9 et d&rsquo;un masque de mise en forme totalement inappropri\u00e9s.<\/p>\n<p>Dans cette perspective, il incombe au d\u00e9veloppeur de r\u00e9affecter explicitement les attributs lorsque la nature de la variable a \u00e9volu\u00e9, en associant \u00e0 l&rsquo;instruction de renommage les instructions LABEL et FORMAT ad\u00e9quates :<\/p>\n<p>DATA donnees_epurees;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET donnees_sources(RENAME=(poids=poids_mesure));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;LABEL poids_mesure = &lsquo;Masse corporelle evaluee en kilogrammes (balance calibree)&rsquo;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;FORMAT poids_mesure 8.2;<br \/>\nRUN;<\/p>\n<p>Cette d\u00e9marche garantit que le nouvel identifiant s&rsquo;accompagne d&rsquo;une documentation descriptive parfaitement synchronis\u00e9e, pr\u00e9venant toute m\u00e9prise lors de l&rsquo;exportation des donn\u00e9es vers des tiers ou de la confection de rapports automatis\u00e9s au moyen de proc\u00e9dures telles que PROC REPORT ou PROC TABULATE.<\/p>\n<h3>9.3 Impact du renommage sur les fusions par concordance (MERGE \/ BY)<\/h3>\n<p>L&rsquo;un des cas d&rsquo;usage les plus critiques du renommage de variables intervient lors de l&rsquo;appariement d\u00e9terministe de jeux de donn\u00e9es relationnels disjoints au moyen de l&rsquo;instruction MERGE adoss\u00e9e \u00e0 la clause de concordance BY. Pour que le moteur d&rsquo;ex\u00e9cution de SAS puisse synchroniser horizontalement les lignes de deux tables distinctes, les colonnes servant de crit\u00e8res de jonction (les variables de fusion BY) doivent obligatoirement porter des noms strictement identiques dans chacune des tables appel\u00e9es, tout en partageant un m\u00eame type fondamental (num\u00e9rique ou caract\u00e8re).<\/p>\n<p>Or, dans la r\u00e9alit\u00e9 des syst\u00e8mes d&rsquo;information hospitaliers ou transactionnels, il arrive couramment que la cl\u00e9 primaire d&rsquo;un sujet soit d\u00e9sign\u00e9e sous l&rsquo;identifiant <em>numero_dossier<\/em> dans la table d\u00e9mographique, alors qu&rsquo;elle figure sous le nom <em>id_patient<\/em> dans la table des examens de biologie m\u00e9dicale. Sans une harmonisation pr\u00e9alable, l&rsquo;instruction MERGE \u00e9choue irr\u00e9m\u00e9diablement. L&rsquo;application de l&rsquo;option RENAME= directement dans l&rsquo;instruction d&rsquo;appel SET r\u00e9sout ce conflit de mani\u00e8re imm\u00e9diate :<\/p>\n<p>DATA dossier_clinique_consolide;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;MERGE donnees_demographiques(RENAME=(numero_dossier=id_patient))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultats_laboratoire;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;BY id_patient;<br \/>\nRUN;<\/p>\n<p>Il existe un corollaire tout aussi fondamental : la pr\u00e9vention de l&rsquo;\u00e9crasement involontaire de variables non destin\u00e9es \u00e0 la fusion. Si les deux tables partagent une variable portant un nom identique mais repr\u00e9sentant des concepts diff\u00e9rents &mdash; par exemple une colonne <em>date<\/em> d\u00e9signant la date de naissance dans la table d\u00e9mographique et la date du pr\u00e9l\u00e8vement dans la table de biologie &mdash;, la proc\u00e9dure MERGE \u00e9crasera silencieusement la valeur de la premi\u00e8re table par celle de la seconde lors de l&rsquo;\u00e9criture dans le PDV. L&rsquo;utilisation pr\u00e9ventive de l&rsquo;option RENAME= pour renommer ces colonnes homonymes (en <em>date_naissance<\/em> et <em>date_prelevement<\/em>) constitue la seule garantie architecturale contre la corruption silencieuse des enregistrements au cours de la fusion.<\/p>\n<h2>10. Renommage it\u00e9ratif bas\u00e9 sur des tableaux (Arrays)<\/h2>\n<h3>10.1 Limites inh\u00e9rentes \u00e0 l&rsquo;instruction ARRAY pour le renommage structurel<\/h3>\n<p>Une incompr\u00e9hension r\u00e9currente chez les programmeurs abordant les concepts avanc\u00e9s du langage SAS concerne l&rsquo;utilisation de l&rsquo;instruction ARRAY \u00e0 des fins de renommage. L&rsquo;instruction ARRAY est couramment per\u00e7ue comme un outil de manipulation matricielle universel, conduisant fr\u00e9quemment \u00e0 la tentative erron\u00e9e d&rsquo;utiliser des boucles DO OVER pour tenter d&rsquo;alt\u00e9rer les noms de variables en m\u00e9moire. Il est crucial d&rsquo;affirmer avec rigueur la r\u00e9alit\u00e9 architecturale : l&rsquo;instruction ARRAY ne permet en aucun cas de modifier directement les m\u00e9tadonn\u00e9es d&rsquo;une variable ni son appellation technique.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me SAS, un ARRAY n&rsquo;est pas une structure de donn\u00e9es physique ni un objet de stockage persistant ; il s&rsquo;agit d&rsquo;un simple pointeur temporaire d&rsquo;ex\u00e9cution, d&rsquo;un regroupement mn\u00e9motechnique qui attribue des indices num\u00e9riques transitoires \u00e0 un ensemble de variables r\u00e9sidant d\u00e9j\u00e0 dans le Program Data Vector. Par cons\u00e9quent, les tableaux SAS op\u00e8rent exclusivement sur les <strong>valeurs<\/strong> stock\u00e9es dans les variables au cours de la phase d&rsquo;ex\u00e9cution de l&rsquo;\u00e9tape DATA, et n&rsquo;ont strictement aucune prise sur le descripteur de table qui fige les <strong>noms<\/strong> de ces variables lors de la phase de compilation. La barri\u00e8re entre la structure des m\u00e9tadonn\u00e9es (\u00e9tablie lors de la compilation) et l&rsquo;\u00e9valuation matricielle des enregistrements (qui s&rsquo;op\u00e8re durant l&rsquo;ex\u00e9cution) est \u00e9tanche.<\/p>\n<h3>10.2 Strat\u00e9gie de transposition et d&rsquo;assignation indirecte<\/h3>\n<p>Puisqu&rsquo;il est impossible de renommer structurellement des colonnes via un ARRAY, la strat\u00e9gie algorithmique de contournement consiste \u00e0 employer un paradigme d&rsquo;assignation indirecte par transfert de vecteurs. Ce proc\u00e9d\u00e9 \u00e9l\u00e9gant s&rsquo;articule autour de la d\u00e9claration conjointe de deux tableaux distincts au sein de l&rsquo;\u00e9tape DATA : un tableau source pointant vers les colonnes d&rsquo;origine, et un tableau r\u00e9cepteur pointant vers un ensemble de variables cibles nouvellement instanci\u00e9es sous leur nomenclature d\u00e9finitive.<\/p>\n<p>Le m\u00e9canisme s&rsquo;ex\u00e9cute s\u00e9quentiellement : pour chaque observation charg\u00e9e dans le PDV, une boucle it\u00e9rative transcrit les valeurs scalaires du premier tableau vers le second, dupliquant temporairement l&rsquo;information sous les nouveaux identifiants. Une fois cette transmission de valeurs achev\u00e9e, l&rsquo;instruction DROP intervient pour purger int\u00e9gralement les anciennes colonnes de la structure finale de la table, ne laissant subsister sur le disque que les nouvelles variables peupl\u00e9es :<\/p>\n<p>DATA matrice_renommee;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET table_initiale;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ARRAY sources(3) mesure_a mesure_b mesure_c;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ARRAY cibles(3) variable_finale_1 variable_finale_2 variable_finale_3;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DO i = 1 TO 3;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cibles(i) = sources(i);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DROP i mesure_a mesure_b mesure_c;<br \/>\nRUN;<\/p>\n<p>Bien que cette m\u00e9thode implique une allocation transitoire de m\u00e9moire pour h\u00e9berger simultan\u00e9ment les deux tableaux dans le PDV, elle offre une souplesse exceptionnelle lorsqu&rsquo;il est n\u00e9cessaire de coupler le renommage \u00e0 une logique d&rsquo;imputation, de filtrage des valeurs aberrantes ou de transformation math\u00e9matique continue sur des dizaines de mesures simultan\u00e9es.<\/p>\n<h3>10.3 Cas concret : Traitement par lot d&rsquo;items d&rsquo;\u00e9chelles de personnalit\u00e9<\/h3>\n<p>Pour mat\u00e9rialiser la puissance de cette approche par double tableau, consid\u00e9rons l&rsquo;analyse d&rsquo;un inventaire de personnalit\u00e9 clinique (par exemple bas\u00e9 sur le mod\u00e8le du Big Five ou de l&rsquo;inventaire NEO-PI). Les questionnaires psychologiques comportent fr\u00e9quemment des items invers\u00e9s con\u00e7us pour contr\u00f4ler les biais d&rsquo;acquiescement chez les r\u00e9pondants. Lors du d\u00e9pouillement, le chercheur doit simultan\u00e9ment inverser le bar\u00e8me de cotation (sur une \u00e9chelle de Likert de 1 \u00e0 5, transformer un score de 1 en 5, 2 en 4, etc.) et renommer les identifiants d&rsquo;items pour expliciter cette inversion avant d&rsquo;agr\u00e9ger les scores factoriels.<\/p>\n<p>L&rsquo;impl\u00e9mentation par double tableau ARRAY permet d&rsquo;op\u00e9rer cette double manipulation avec une concision et une clart\u00e9 remarquables :<\/p>\n<p>DATA inventaire_personnalite_traite;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SET reponses_brutes_questionnaire;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ARRAY items_bruts(5) q03 q07 q12 q18 q24;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ARRAY items_inverses(5) extraversion_rev_item3 neuroticisme_rev_item7<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;agreabilite_rev_item12 consciencieusite_rev_item18<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ouverture_rev_item24;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DO k = 1 TO 5;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF items_bruts(k) NE . THEN DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items_inverses(k) = 6 &#8211; items_bruts(k);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE DO;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items_inverses(k) = .;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;END;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DROP k q03 q07 q12 q18 q24;<br \/>\nRUN;<\/p>\n<p>Gr\u00e2ce \u00e0 ce patron de programmation, la formule algorithmique (6 &#8211; note brute) est appliqu\u00e9e s\u00e9quentiellement \u00e0 chaque item valide, les valeurs manquantes sont rigoureusement pr\u00e9serv\u00e9es, les anciennes variables brutes sont \u00e9cart\u00e9es de la structure de sortie et les nouvelles colonnes apparaissent imm\u00e9diatement avec des identifiants scientifiques standardis\u00e9s, documentant explicitement la nature invers\u00e9e de la m\u00e9trique recueillie.<\/p>\n<h2>11. Bonnes pratiques m\u00e9thodologiques et gouvernance des donn\u00e9es<\/h2>\n<h3>11.1 R\u00e8gles de d\u00e9nomination acad\u00e9mique et conformit\u00e9 r\u00e9glementaire<\/h3>\n<p>L&rsquo;attribution de nouveaux noms de variables ne doit jamais relever d&rsquo;un choix esth\u00e9tique arbitraire laiss\u00e9 \u00e0 la discr\u00e9tion individuelle du d\u00e9veloppeur ; elle doit s&rsquo;inscrire au sein d&rsquo;un cadre de gouvernance des donn\u00e9es formel, align\u00e9 sur les pr\u00e9conisations des instances de r\u00e9gulation et les conventions de publication scientifique internationale. Dans le domaine de la recherche acad\u00e9mique, les directives de l&rsquo;American Psychological Association (APA) ainsi que les standards de la communaut\u00e9 biom\u00e9dicale recommandent l&rsquo;adoption stricte de typographies uniformes facilitant la lecture automatis\u00e9e par des scripts de m\u00e9ta-analyse.<\/p>\n<p>Deux conventions de casse se partagent principalement les faveurs des architectes de donn\u00e9es :<\/p>\n<ul>\n<li><strong>Le Snake_case :<\/strong> Les mots sont s\u00e9par\u00e9s par un caract\u00e8re de soulignement (underscore) et sont r\u00e9dig\u00e9s pr\u00e9f\u00e9rentiellement en minuscules (ex. : <em>taux_cholesterol_plasmatique<\/em>). Cette approche pr\u00e9sente l&rsquo;immense avantage d&rsquo;offrir une lisibilit\u00e9 optimale sur les \u00e9crans de terminaux et de s&rsquo;int\u00e9grer sans ambigu\u00eft\u00e9 dans les moteurs d&rsquo;analyse de donn\u00e9es actuels.<\/li>\n<li><strong>Le CamelCase (ou UpperCamelCase \/ lowerCamelCase) :<\/strong> Les mots sont agglutin\u00e9s sans espace en marquant l&rsquo;initiale de chaque segment s\u00e9mantique par une majuscule (ex. : <em>TauxCholesterolPlasmatique<\/em>).<\/li>\n<\/ul>\n<p>Au-del\u00e0 de la syntaxe formelle, l&rsquo;ad\u00e9quation r\u00e9glementaire impose des contraintes \u00e9thiques imp\u00e9ratives. Dans le cadre de la manipulation de donn\u00e9es de sant\u00e9 ou de donn\u00e9es \u00e0 caract\u00e8re personnel r\u00e9gies par le R\u00e8glement G\u00e9n\u00e9ral sur la Protection des Donn\u00e9es (RGPD) en Europe ou la loi HIPAA aux \u00c9tats-Unis, le renommage de variables joue un r\u00f4le direct dans les protocoles de pseudonymisation. Il est formellement interdit de maintenir dans les tables d&rsquo;analyse des identifiants directs (tels que noms, pr\u00e9noms ou adresses) ; ces variables doivent \u00eatre \u00e9limin\u00e9es ou substitu\u00e9es par des identifiants chiffr\u00e9s neutres (ex. : <em>code_inclusion_anonymise<\/em>) d\u00e8s les premi\u00e8res \u00e9tapes du pipeline de traitement statistique.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/rename4.jpg\" alt=\"\" \/><\/figure>\n<h3>11.2 Documentation syst\u00e9matique du dictionnaire de donn\u00e9es<\/h3>\n<p>Toute intervention alt\u00e9rant la structure des m\u00e9tadonn\u00e9es d&rsquo;une table d&rsquo;investigation scientifique doit \u00eatre consign\u00e9e au sein d&rsquo;un registre de tra\u00e7abilit\u00e9 immuable (audit trail). Dans le cadre de soumissions r\u00e9glementaires aupr\u00e8s d&rsquo;agences sanitaires &mdash; telles que la Food and Drug Administration (FDA) am\u00e9ricaine ou l&rsquo;Agence Europ\u00e9enne des M\u00e9dicaments (EMA) &mdash;, l&rsquo;incapacit\u00e9 d&rsquo;un promoteur \u00e0 fournir la cha\u00eene compl\u00e8te de transformation reliant chaque identifiant de la base finale aux questions des cahiers d&rsquo;observation initiaux (Case Report Forms ou CRF) peut entra\u00eener le rejet cat\u00e9gorique du dossier clinique.<\/p>\n<p>Pour assurer cette conformit\u00e9, l&rsquo;ing\u00e9nieur de donn\u00e9es doit g\u00e9n\u00e9rer et archiver un dictionnaire de correspondance des donn\u00e9es (Data Dictionary) chaque fois qu&rsquo;un renommage par lot est op\u00e9r\u00e9. Ce dictionnaire est g\u00e9n\u00e9ralement structur\u00e9 sous la forme d&rsquo;un tableau synth\u00e9tique r\u00e9pertoriant l&rsquo;ancien nom de la variable, son nouveau nom, son type technique, son libell\u00e9 descriptif complet, la justification m\u00e9thodologique de la modification et l&rsquo;horodatage de l&rsquo;op\u00e9ration.<\/p>\n<p>Ce tableau documentaire peut \u00eatre export\u00e9 automatiquement vers des formats p\u00e9rennes ouverts &mdash; tels que des fichiers CSV norm\u00e9s, des feuilles de calcul ou des documents PDF certifi\u00e9s &mdash; \u00e0 l&rsquo;aide des proc\u00e9dures SAS de reporting (ODS &#8211; Output Delivery System). Ce registre constitue une preuve opposable attestant devant les auditeurs et les examinateurs scientifiques du respect absolu des processus de gestion de la qualit\u00e9 des donn\u00e9es.<\/p>\n<h3>11.3 V\u00e9rification automatis\u00e9e de l&rsquo;int\u00e9grit\u00e9 apr\u00e8s renommage<\/h3>\n<p>Dans un processus de validation analytique rigoureux, la confirmation du bon d\u00e9roulement d&rsquo;une op\u00e9ration de renommage ne peut reposer sur une simple inspection visuelle humaine, par nature faillible. Il est imp\u00e9ratif d&rsquo;int\u00e9grer des proc\u00e9dures d&rsquo;assurance qualit\u00e9 automatis\u00e9es au sein des programmes. La proc\u00e9dure PROC COMPARE constitue la r\u00e9f\u00e9rence ultime pour v\u00e9rifier qu&rsquo;une op\u00e9ration de renommage s&rsquo;est d\u00e9roul\u00e9e sans introduire la moindre d\u00e9rive ou corruption de contenu.<\/p>\n<p>PROC COMPARE confronte de mani\u00e8re exhaustive deux tables SAS (la table de r\u00e9f\u00e9rence initiale et la table modifi\u00e9e) sur le plan des observations, des variables et de leurs valeurs respectives. Lorsque les variables ont \u00e9t\u00e9 renomm\u00e9es, l&rsquo;instruction RENAME peut \u00eatre adjointe au sein de l&rsquo;appel de comparaison pour r\u00e9aligner les en-t\u00eates et attester que les cellules num\u00e9riques et caract\u00e8res n&rsquo;ont subi aucun d\u00e9placement ou alt\u00e9ration de valeur :<\/p>\n<p>PROC COMPARE BASE=table_initiale COMPARE=table_renommee(RENAME=(nouvelle_var=ancienne_var)) CRIT=1E-12;<br \/>\nRUN;<\/p>\n<p>Si les deux jeux de donn\u00e9es sont rigoureusement identiques au niveau de leurs observations, la proc\u00e9dure consigne dans le journal la mention formelle attestant qu&rsquo;aucune disparit\u00e9 n&rsquo;a \u00e9t\u00e9 d\u00e9cel\u00e9e (<em>No unequal values were found<\/em>). Parall\u00e8lement, des tests d&rsquo;assertion programm\u00e9s sous forme de macros conditionnelles permettent de valider automatiquement, avant toute \u00e9tape de mod\u00e9lisation math\u00e9matique, que les nouveaux noms de variables sont bien pr\u00e9sents dans la table cible et que les anciens identifiants en ont \u00e9t\u00e9 d\u00e9finitivement exclus, s\u00e9curisant ainsi l&rsquo;int\u00e9gralit\u00e9 du pipeline analytique.<\/p>\n<h2>12. Guide de d\u00e9pannage et r\u00e9solution des erreurs de renommage<\/h2>\n<h3>12.1 R\u00e9solution de l&rsquo;erreur \u00ab Variable not found \u00bb<\/h3>\n<p>L&rsquo;alerte d&rsquo;ex\u00e9cution signalant qu&rsquo;une variable est introuvable (ERROR: Variable &#8230; not found) repr\u00e9sente incontestablement l&rsquo;incident le plus fr\u00e9quemment rencontr\u00e9 lors de la manipulation des directives de renommage. L&rsquo;origine structurelle de cette anomalie r\u00e9side presque syst\u00e9matiquement dans une d\u00e9synchronisation temporelle entre la phase de compilation du programme et sa phase d&rsquo;ex\u00e9cution au sein du vecteur de donn\u00e9es (PDV).<\/p>\n<p>Le diagnostic de cette erreur commande d&rsquo;analyser pr\u00e9cis\u00e9ment l&#8217;emplacement de l&rsquo;option RENAME= :<\/p>\n<ul>\n<li><strong>Cas de figure A (RENAME sur l&rsquo;instruction DATA) :<\/strong> L&rsquo;analyste \u00e9crit DATA out(RENAME=(x=new_x)); SET in; calcul = new_x * 2; RUN;. L&rsquo;erreur \u00ab Variable new_x not found \u00bb surgit imm\u00e9diatement. Comme expos\u00e9 lors de l&rsquo;analyse du PDV, l&rsquo;option positionn\u00e9e sur l&rsquo;instruction DATA n&rsquo;agit qu&rsquo;au moment du d\u00e9versement de la ligne sur le disque. Durant tout le traitement du corps de l&rsquo;\u00e9tape, la colonne s&rsquo;appelle encore <em>x<\/em>. Le calcul aurait donc d\u00fb \u00eatre \u00e9crit calcul = x * 2;.<\/li>\n<li><strong>Cas de figure B (RENAME sur l&rsquo;instruction SET) :<\/strong> L&rsquo;analyste \u00e9crit DATA out; SET in(RENAME=(x=new_x)); calcul = x * 2; RUN;. Cette fois, c&rsquo;est l&rsquo;erreur \u00ab Variable x not found \u00bb qui appara\u00eet dans le log. D\u00e8s lors que l&rsquo;option RENAME est attach\u00e9e \u00e0 l&rsquo;instruction SET, la variable <em>x<\/em> a cess\u00e9 d&rsquo;exister d\u00e8s son franchissement de la table source. Le PDV ne conna\u00eet que <em>new_x<\/em>, qui devait imp\u00e9rativement \u00eatre employ\u00e9e dans l&rsquo;expression d&rsquo;assignation.<\/li>\n<\/ul>\n<p>Pour r\u00e9soudre m\u00e9thodiquement cette divergence, le programmeur doit tracer m\u00e9ticuleusement la chronologie de passage de chaque identifiant dans le flux de calcul. La r\u00e8gle cardinale se r\u00e9sume ainsi : sur l&rsquo;instruction SET, on utilise le nouveau nom dans le corps de l&rsquo;\u00e9tape ; sur l&rsquo;instruction DATA (ou avec l&rsquo;instruction globale RENAME), on utilise imp\u00e9rativement l&rsquo;ancien nom dans le corps de l&rsquo;\u00e9tape.<\/p>\n<h3>12.2 Gestion des collisions de noms et doublons au sein du jeu de donn\u00e9es<\/h3>\n<p>Une situation conflictuelle majeure survient lorsqu&rsquo;une tentative de renommage introduit une collision lexicale avec une colonne d\u00e9j\u00e0 pr\u00e9existante au sein de la table de donn\u00e9es cible. Supposons une table contenant deux indicateurs : une variable nomm\u00e9e <em>tension<\/em> et une autre nomm\u00e9e <em>tension_systolique<\/em>. Si une directive de renommage formule l&rsquo;instruction RENAME=(tension=tension_systolique), le syst\u00e8me SAS fait face \u00e0 un doublon d&rsquo;identifiant au sein du descripteur de sortie, ce qui viole le principe fondamental de l&rsquo;unicit\u00e9 des colonnes dans une table relationnelle.<\/p>\n<p>Face \u00e0 une telle collision, le compilateur \u00e9met un message d&rsquo;erreur bloquant dans le journal d&rsquo;ex\u00e9cution et interrompt imm\u00e9diatement la cr\u00e9ation de la table pour pr\u00e9venir tout \u00e9crasement accidentel de donn\u00e9es. Pour surmonter cette entrave sans perte d&rsquo;information, l&rsquo;analyste doit proc\u00e9der par \u00e9tapes coordonn\u00e9es de d\u00e9sambigu\u00efsation :<\/p>\n<ol>\n<li>Attribuer pr\u00e9alablement un nom transitoire unique et temporaire \u00e0 la variable pr\u00e9existante (par exemple <em>tension_systolique_brute<\/em>).<\/li>\n<li>Appliquer ensuite le renommage d\u00e9finitif \u00e0 la variable source cible.<\/li>\n<li>Proc\u00e9der, le cas \u00e9ch\u00e9ant, \u00e0 l&rsquo;\u00e9limination s\u00e9lective (DROP) de la colonne obsol\u00e8te une fois la v\u00e9rification de conformit\u00e9 effectu\u00e9e.<\/li>\n<\/ol>\n<p>Ces collisions de noms se rencontrent fr\u00e9quemment lors de la consolidation de donn\u00e9es issues d&rsquo;\u00e9tudes multicentriques o\u00f9 des h\u00f4pitaux partenaires utilisent des nomenclatures concurrentes pour enregistrer des mesures similaires. L&rsquo;\u00e9laboration pr\u00e9alable d&rsquo;une matrice de cartographie lexicale (Mapping Matrix) \u00e9limine en amont ces risques d&rsquo;interf\u00e9rence.<\/p>\n<h3>12.3 Diagnostic des alertes (WARNINGS) et anomalies silencieuses<\/h3>\n<p>Si les erreurs (ERROR) provoquent une rupture visible et imm\u00e9diate de l&rsquo;ex\u00e9cution, les avertissements (WARNING) \u00e9mis par SAS m\u00e9ritent une vigilance tout aussi scrupuleuse, car ils dissimulent fr\u00e9quemment des anomalies silencieuses susceptibles de vicier les analyses ult\u00e9rieures sans interrompre le traitement informatique.<\/p>\n<p>Parmi les avertissements r\u00e9currents figure l&rsquo;alerte de troncature d&rsquo;identifiant. Conform\u00e9ment aux sp\u00e9cifications du moteur SAS standard, un nom de variable ne peut exc\u00e9der 32 octets. Si une routine macro tente d&rsquo;assigner un nom d\u00e9passant ce seuil critique &mdash; par exemple une cha\u00eene explicative comportant 38 caract\u00e8res &mdash;, le compilateur tronque silencieusement la cha\u00eene aux 32 premiers octets et \u00e9met une alerte dans le journal (WARNING: The name &#8230; is too long for a SAS name and will be truncated). Si deux variables distinctes partagent les m\u00eames 32 premiers octets et ne diff\u00e8rent que par leurs caract\u00e8res terminaux, cette troncature automatique engendre une collision de noms imm\u00e9diate.<\/p>\n<p>Un autre cas insidieux d&rsquo;anomalie concerne l&rsquo;application simultan\u00e9e d&rsquo;options RENAME sur l&rsquo;instruction SET et sur l&rsquo;instruction DATA au sein de la m\u00eame \u00e9tape sans une ma\u00eetrise absolue des transferts d&rsquo;identifiants interm\u00e9diaires. Bien que le journal d&rsquo;ex\u00e9cution n&rsquo;affiche parfois qu&rsquo;un simple avertissement d&rsquo;incoh\u00e9rence, les variables peuvent se retrouver invers\u00e9es ou \u00e9cras\u00e9es en m\u00e9moire, g\u00e9n\u00e9rant des biais substantiels lors des analyses factorielles ou des tests d&rsquo;hypoth\u00e8ses subs\u00e9quents.<\/p>\n<p>La r\u00e8gle d&rsquo;or d&rsquo;une programmation de niveau professionnel sous SAS impose de maintenir imp\u00e9rativement un journal de bord exempt du moindre WARNING et de la moindre ERROR. L&rsquo;analyse syst\u00e9matique et exhaustive du SAS Log constitue l&rsquo;unique garantie d&rsquo;une science des donn\u00e9es reproductible, robuste et exempte de tout artefact computationnel.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>American Psychological Association. (2020). <em>Publication Manual of the American Psychological Association<\/em> (7th ed.). American Psychological Association. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0000165-000\">https:\/\/doi.org\/10.1037\/0000165-000<\/a><\/li>\n<li>Clinical Data Interchange Standards Consortium. (2021). <em>Study Data Tabulation Model Implementation Guide: Human Clinical Trials<\/em> (Version 3.3). CDISC. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.cdisc.org\/standards\/foundational\/sdtm\">https:\/\/www.cdisc.org\/standards\/foundational\/sdtm<\/a><\/li>\n<li>Delwiche, L. D., &amp; Slaughter, S. J. (2019). <em>The Little SAS Book: A Primer<\/em> (6th ed.). SAS Institute Inc.<\/li>\n<li>SAS Institute Inc. (2020). <em>SAS 9.4 Statements: Reference<\/em> (5th ed.). SAS Institute Inc. <a rel=\"noopener noreferrer\" href=\"https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/lestmtsref\/titlepage.htm\">https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/lestmtsref\/titlepage.htm<\/a><\/li>\n<li>SAS Institute Inc. (2021). <em>Base SAS 9.4 Procedures Guide<\/em> (7th ed.). SAS Institute Inc. <a rel=\"noopener noreferrer\" href=\"https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/proc\/titlepage.htm\">https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/proc\/titlepage.htm<\/a><\/li>\n<li>SAS Institute Inc. (2022). <em>SAS 9.4 SQL Procedure User&rsquo;s Guide<\/em> (4th ed.). SAS Institute Inc. <a rel=\"noopener noreferrer\" href=\"https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/sqlproc\/titlepage.htm\">https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/sqlproc\/titlepage.htm<\/a><\/li>\n<li>SAS Institute Inc. (2023). <em>SAS 9.4 Macro Language: Reference<\/em> (6th ed.). SAS Institute Inc. <a rel=\"noopener noreferrer\" href=\"https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/mcrolref\/titlepage.htm\">https:\/\/documentation.sas.com\/doc\/en\/pgmsascdc\/9.4_3.5\/mcrolref\/titlepage.htm<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour renommer des variables dans SAS : \u00e9tape DATA, PROC DATASETS, PROC SQL, macros dynamiques et exemples de code d\u00e9taill\u00e9s.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,9499],"tags":[10195,4702,10196,6115,235],"class_list":["post-9279","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-programmation-sas","tag-etape-data","tag-gestion-de-donnees","tag-proc-datasets","tag-rename","tag-sas"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat"}],"about":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/types\/psych_stat"}],"author":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9279"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9279\/revisions"}],"predecessor-version":[{"id":9285,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9279\/revisions\/9285"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}