{"id":4126,"date":"2026-10-14T18:01:10","date_gmt":"2026-10-14T18:01:10","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-creer-un-tableau-croise-avec-dplyr-avec-exemples\/"},"modified":"2026-10-14T18:01:10","modified_gmt":"2026-10-14T18:01:10","slug":"comment-creer-un-tableau-croise-avec-dplyr-avec-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-creer-un-tableau-croise-avec-dplyr-avec-exemples","title":{"rendered":"Comment cr\u00e9er un tableau crois\u00e9 avec dplyr (avec exemples)"},"content":{"rendered":"<p>Dans le champ contemporain des sciences du comportement, de la psychom\u00e9trie et de l&rsquo;\u00e9pid\u00e9miologie clinique, l&rsquo;analyse exploratoire des donn\u00e9es qualitatives constitue le socle indispensable sur lequel s&rsquo;\u00e9rigent les inf\u00e9rences scientifiques les plus rigoureuses. Face \u00e0 la multiplication des protocoles exp\u00e9rimentaux randomis\u00e9s, des enqu\u00eates transversales \u00e0 grande \u00e9chelle et des \u00e9valuations \u00e9cologiques momentan\u00e9es (ESM), le traitement des variables cat\u00e9gorielles nominales et ordinales requiert une clart\u00e9 m\u00e9thodologique absolue. L&rsquo;\u00e9poque o\u00f9 les chercheurs s&rsquo;en remettaient aveugl\u00e9ment \u00e0 des progiciels statistiques propri\u00e9taires en bo\u00eete noire, limitant l&rsquo;automatisation et compromettant la reproductibilit\u00e9 des r\u00e9sultats, s&rsquo;est effac\u00e9e au profit d&rsquo;\u00e9cosyst\u00e8mes computationnels ouverts, dynamiques et v\u00e9rifiables.<\/p>\n<p>Au sein de cet univers computationnel, le langage statistique R, bonifi\u00e9 par la constellation de paquets formant le <a rel=\"noopener noreferrer\" href=\"https:\/\/www.tidyverse.org\/\">Tidyverse<\/a>, a red\u00e9fini les standards de la manipulation de donn\u00e9es. Si la tabulation crois\u00e9e est l&rsquo;un des gestes statistiques les plus anciens et les plus fondamentaux de l&rsquo;analyse exploratoire, son impl\u00e9mentation au moyen de la grammaire de manipulation de donn\u00e9es offerte par le paquet <a rel=\"noopener noreferrer\" href=\"https:\/\/dplyr.tidyverse.org\/\">dplyr<\/a> et de son pendant structurel <a rel=\"noopener noreferrer\" href=\"https:\/\/tidyr.tidyverse.org\/\">tidyr<\/a> transforme cette op\u00e9ration traditionnelle en un maillon fluide, expressif et parfaitement int\u00e9gr\u00e9 dans des flux de recherche reproductibles. Loin de se r\u00e9duire \u00e0 un simple tableau de contingence statique, la cr\u00e9ation d&rsquo;un tableau crois\u00e9 moderne implique la ma\u00eetrise des groupements relationnels, des agr\u00e9gations contextuelles et du remodelage dimensionnel.<\/p>\n<p>Cet article propose un trait\u00e9 approfondi sur l&rsquo;\u00e9laboration, l&rsquo;optimisation et l&rsquo;exploitation inf\u00e9rentielle des tableaux crois\u00e9s \u00e0 l&rsquo;aide de dplyr et de son \u00e9cosyst\u00e8me connexe. En nous ancrant dans des probl\u00e9matiques authentiques de recherche psychologique et clinique, nous explorerons pas \u00e0 pas la m\u00e9canique sous-jacente des pipelines de donn\u00e9es, de la d\u00e9construction des fonctions de base jusqu&rsquo;aux tests d&rsquo;association avanc\u00e9s, en passant par le traitement formel des donn\u00e9es manquantes et la programmation de fonctions sur mesure.<\/p>\n<h2>1. Introduction aux tableaux crois\u00e9s dans la recherche psychologique avec dplyr<\/h2>\n<h3>1.1 D\u00e9finition et utilit\u00e9 m\u00e9thodologique des tableaux crois\u00e9s en psychom\u00e9trie<\/h3>\n<p>Dans l&rsquo;arsenal m\u00e9thodologique du psychologue et du statisticien des sciences humaines, la tabulation crois\u00e9e, ou table de contingence bidimensionnelle, repr\u00e9sente la quantification fondamentale des interactions discr\u00e8tes. \u00c0 la base de toute investigation empirique portant sur des entit\u00e9s nosologiques, des typologies de personnalit\u00e9 ou des r\u00e9ponses dichotomiques \u00e0 des \u00e9preuves projectives ou standardis\u00e9es, il existe une exigence de cartographier la co-occurrence des modalit\u00e9s. La table crois\u00e9e enregistre les effectifs conjoints, c&rsquo;est-\u00e0-dire le nombre pr\u00e9cis d&rsquo;unit\u00e9s statistiques qui satisfont simultan\u00e9ment \u00e0 la modalit\u00e9 sp\u00e9cifique d&rsquo;une variable nominale et \u00e0 celle d&rsquo;une seconde variable ordinale ou nominale. Cette d\u00e9marche permet d&rsquo;isoler imm\u00e9diatement les d\u00e9pendances empiriques, de diagnostiquer les asym\u00e9tries de r\u00e9partition et de valider les conditions d&rsquo;homog\u00e9n\u00e9it\u00e9 d&rsquo;un \u00e9chantillon avant tout recours \u00e0 des mod\u00e9lisations multivari\u00e9es plus complexes.<\/p>\n<p>En psychom\u00e9trie, le recours aux tableaux crois\u00e9s d\u00e9passe le simple r\u00e9capitulatif descriptif pour toucher \u00e0 l&rsquo;\u00e9valuation de la validit\u00e9 d&rsquo;un construit. Prenons le cas de l&rsquo;\u00e9talonnage d&rsquo;un instrument de mesure diagnostique : la comparaison des classifications cliniques issues d&rsquo;un entretien semi-structur\u00e9 avec les scores seuils cat\u00e9goris\u00e9s d&rsquo;une \u00e9chelle psychom\u00e9trique n\u00e9cessite une confrontation cellule par cellule. Ce croisement met en lumi\u00e8re la fr\u00e9quence des vrais positifs, des faux positifs, des faux n\u00e9gatifs et des vrais n\u00e9gatifs, autorisant le calcul imm\u00e9diat de la sensibilit\u00e9, de la sp\u00e9cificit\u00e9 et de la valeur pr\u00e9dictive. L&rsquo;examen attentif de ces intersections cat\u00e9gorielles constitue le premier rempart contre les biais m\u00e9thodologiques, tels que l&rsquo;erreur de classification diff\u00e9rentielle, susceptibles de vicier les inf\u00e9rences ult\u00e9rieures si les fr\u00e9quences observ\u00e9es s&rsquo;av\u00e8rent excessivement creuses dans certaines configurations cliniques critiques.<\/p>\n<p>Au-del\u00e0 de la m\u00e9trologie pure, la reproductibilit\u00e9 scientifique \u2014 pierre angulaire de la science ouverte pr\u00f4n\u00e9e par des institutions internationales et l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/www.apa.org\/\">American Psychological Association<\/a> \u2014 exige que chaque \u00e9tape pr\u00e9sidant \u00e0 la gen\u00e8se d&rsquo;un tableau crois\u00e9 soit explicitement consign\u00e9e sous forme algorithmique. Dans les paradigmes exp\u00e9rimentaux contemporains, o\u00f9 les plans factoriels combinent fr\u00e9quemment des conditions d&rsquo;amor\u00e7age cognitif, des niveaux d&rsquo;anxi\u00e9t\u00e9 induite et des mesures comportementales binaires de r\u00e9ussite ou d&rsquo;\u00e9chec, le script de tabulation devient une pi\u00e8ce ma\u00eetresse du protocole. En utilisant un code source transparent au sein de R plut\u00f4t qu&rsquo;une s\u00e9rie de manipulations manuelles dans des tableurs ferm\u00e9s, les chercheurs garantissent la tra\u00e7abilit\u00e9 int\u00e9grale de la collecte \u00e0 la publication, pr\u00e9venant les erreurs de transcription qui ont historiquement aliment\u00e9 la crise de la reproductibilit\u00e9 en psychologie exp\u00e9rimentale.<\/p>\n<h3>1.2 L&rsquo;\u00e9cosyst\u00e8me Tidyverse appliqu\u00e9 \u00e0 la gestion des donn\u00e9es qualitatives<\/h3>\n<p>Le Tidyverse, con\u00e7u initialement sous l&rsquo;impulsion de Hadley Wickham, repose sur une philosophie unifi\u00e9e de la science des donn\u00e9es qui contraste radicalement avec les approches disparates traditionnelles. Dans ce paradigme, les donn\u00e9es qualitatives doivent imp\u00e9rativement respecter la convention formelle du \u00ab tidy data \u00bb (donn\u00e9es ordonn\u00e9es). Selon ce principe structural universel, chaque variable doit correspondre \u00e0 une colonne distincte, chaque observation individuelle doit occuper une ligne unique, et chaque type d&rsquo;unit\u00e9 d&rsquo;observation doit composer une table d\u00e9di\u00e9e. Dans le contexte de la recherche psychologique, cette formulation implique qu&rsquo;un patient \u00e9valu\u00e9 \u00e0 travers plusieurs s\u00e9ances th\u00e9rapeutiques voit chaque r\u00e9ponse unitaire conserv\u00e9e dans une ligne temporelle explicite, sans agr\u00e9gation pr\u00e9matur\u00e9e susceptible de masquer la dynamique intra-individuelle.<\/p>\n<p>La puissance conceptuelle de cet \u00e9cosyst\u00e8me r\u00e9side dans la division harmonieuse du travail computationnel entre des biblioth\u00e8ques hautement sp\u00e9cialis\u00e9es. Dplyr s&rsquo;impose comme la grammaire universelle de manipulation, fournissant des verbes d&rsquo;action pr\u00e9cis pour segmenter, filtrer et agr\u00e9ger les observations. Cependant, la production d&rsquo;un tableau crois\u00e9 traditionnel sous forme matricielle \u2014 o\u00f9 les modalit\u00e9s d&rsquo;une variable forment les lignes et celles d&rsquo;une autre forment les colonnes \u2014 entre en contradiction apparente avec les canons stricts du \u00ab tidy data \u00bb, puisque la variable repr\u00e9sent\u00e9e horizontalement voit ses modalit\u00e9s devenir des noms de colonnes. C&rsquo;est ici qu&rsquo;intervient la symbiose fonctionnelle avec le paquet tidyr, dont l&rsquo;objet d&rsquo;\u00e9tude exclusif est la modification morphologique et topologique des structures tabulaires sans alt\u00e9ration des valeurs sous-jacentes.<\/p>\n<p>L&rsquo;articulation entre ces outils est ciment\u00e9e par l&rsquo;utilisation de l&rsquo;op\u00e9rateur de redirection, traditionnellement not\u00e9 sous la forme du tube magrittr ou du nouvel op\u00e9rateur natif de R. Cet op\u00e9rateur pipe permet de structurer le raisonnement analytique selon une s\u00e9quence lin\u00e9aire de transformations logiques. Le flux d&rsquo;instructions se lit de gauche \u00e0 droite et de haut en bas, \u00e9pousant le cheminement intellectuel du chercheur : prendre la base de donn\u00e9es brute, la restreindre aux sujets \u00e9ligibles, sp\u00e9cifier les facteurs d&rsquo;int\u00e9r\u00eat clinique, compter les occurrences conjointes, puis r\u00e9arranger la topologie spatiale de l&rsquo;information pour l&rsquo;\u00e9dition acad\u00e9mique. Cette lisibilit\u00e9 computationnelle accrue all\u00e8ge consid\u00e9rablement la charge cognitive du chercheur, r\u00e9duit le risque d&rsquo;erreurs de syntaxe et facilite l&rsquo;audit par les pairs lors des processus d&rsquo;\u00e9valuation scientifique.<\/p>\n<h3>1.3 Comparaison critique : dplyr versus les fonctions R de base<\/h3>\n<p>L&rsquo;environnement R de base fournit nativement des fonctions d\u00e9di\u00e9es \u00e0 la cr\u00e9ation de tables de contingence, au premier rang desquelles figure la v\u00e9n\u00e9rable fonction table(). Si cette instruction poss\u00e8de l&rsquo;avantage ind\u00e9niable d&rsquo;\u00eatre imm\u00e9diatement disponible sans chargement de d\u00e9pendances externes et d&rsquo;ex\u00e9cuter des comptages avec une rapidit\u00e9 d&rsquo;ex\u00e9cution remarquable sur de petits volumes, elle souffre d&rsquo;une rigidit\u00e9 architecturale pr\u00e9judiciable aux flux d&rsquo;analyses modernes. L&rsquo;objet r\u00e9sultant d&rsquo;un appel \u00e0 table() appartient \u00e0 la classe native homonyme, laquelle n&rsquo;est rien d&rsquo;autre qu&rsquo;un tableau matriciel annot\u00e9 d&rsquo;attributs de dimension. Cette structure s&rsquo;int\u00e8gre difficilement dans les cha\u00eenes de traitement qui requi\u00e8rent des formats de donn\u00e9es homog\u00e8nes, imposant des conversions r\u00e9currentes via as.data.frame() qui g\u00e9n\u00e8rent fr\u00e9quemment des colonnes aux d\u00e9nominations opaques et modifient insidieusement les types de donn\u00e9es sous-jacents.<\/p>\n<p>En opposition \u00e0 cette rigidit\u00e9, la strat\u00e9gie mise en \u0153uvre avec dplyr et le Tidyverse pr\u00e9serve syst\u00e9matiquement la nature de l&rsquo;objet sous la forme d&rsquo;un tibble, une d\u00e9clinaison perfectionn\u00e9e et rigoureuse du cadre de donn\u00e9es classique. Dans un flux dplyr, la phase de comptage conserve les typologies d&rsquo;origine, qu&rsquo;il s&rsquo;agisse de facteurs nominaux, de facteurs ordonn\u00e9s aux niveaux strictement hi\u00e9rarchis\u00e9s, ou d&rsquo;identifiants textuels. De plus, la cha\u00eene d&rsquo;op\u00e9rations ne brise pas le flux d&rsquo;analyse : le r\u00e9sultat interm\u00e9diaire d&rsquo;un tableau crois\u00e9 dplyr peut \u00eatre instantan\u00e9ment redirig\u00e9, sans aucune manipulation d&rsquo;interface ou de formatage ad hoc, vers des fonctions de mod\u00e9lisation statistique avanc\u00e9e, vers des proc\u00e9dures de bootstrapping, ou vers des moteurs graphiques d\u00e9claratifs.<\/p>\n<p>L&rsquo;adaptabilit\u00e9 aux jeux de donn\u00e9es volumineux et asynchrones constitue un autre argument d\u00e9cisif en faveur de la d\u00e9marche dplyr. Dans le cadre contemporain de la collecte de donn\u00e9es en ligne via des plateformes comme Qualtrics ou Prolific, les chercheurs en psychologie sont r\u00e9guli\u00e8rement confront\u00e9s \u00e0 des bases int\u00e9grant des centaines de milliers de lignes, parfois h\u00e9t\u00e9rog\u00e8nes ou sujettes \u00e0 des mises \u00e0 jour dynamiques au fil du recrutement. Les verbes de dplyr sont optimis\u00e9s au niveau mat\u00e9riel gr\u00e2ce \u00e0 des impl\u00e9mentations sous-jacentes en C++, conf\u00e9rant une v\u00e9locit\u00e9 et une frugalit\u00e9 en m\u00e9moire vive sup\u00e9rieures \u00e0 celles des combinaisons de boucles ou de fonctions de base imbriqu\u00e9es. Enfin, la lisibilit\u00e9 d\u00e9clarative offerte par les verbes standardis\u00e9s r\u00e9duit l&rsquo;ambigu\u00eft\u00e9 inh\u00e9rente \u00e0 l&rsquo;indexation par crochets vectoriels souvent requise avec les objets de classe table.<\/p>\n<h2>2. Fondements syntaxiques de dplyr et tidyr pour la tabulation crois\u00e9e<\/h2>\n<h3>2.1 D\u00e9composition du pipeline classique : group_by, tally et spread<\/h3>\n<p>Pendant de nombreuses ann\u00e9es, le pipeline idiomatique du Tidyverse destin\u00e9 \u00e0 construire un tableau crois\u00e9 reposait sur l&rsquo;encha\u00eenement strict et logique de trois fonctions compl\u00e9mentaires : group_by(), tally(), et spread(). La premi\u00e8re \u00e9tape, mat\u00e9rialis\u00e9e par group_by(), modifie les m\u00e9tadonn\u00e9es internes du cadre de donn\u00e9es sans changer son apparence visuelle imm\u00e9diate. Elle applique un partitionnement virtuel des observations en sous-ensembles mutuellement exclusifs sur la base des modalit\u00e9s crois\u00e9es des variables sp\u00e9cifi\u00e9es en arguments. Dans une \u00e9tude psychologique \u00e9tudiant par exemple l&rsquo;interaction entre le diagnostic psychiatrique et le type de traitement administr\u00e9, group_by(Diagnostic, Traitement) segmente math\u00e9matiquement l&rsquo;\u00e9chantillon en autant de sous-populations qu&rsquo;il existe de combinaisons possibles entre les pathologies observ\u00e9es et les th\u00e9rapeutiques prescrites.<\/p>\n<p>La seconde op\u00e9ration, ex\u00e9cut\u00e9e par le verbe tally(), proc\u00e8de au d\u00e9nombrement exhaustif des unit\u00e9s statistiques au sein de chaque strate pr\u00e9alablement isol\u00e9e par le regroupement. Sur le plan op\u00e9rationnel, tally() est une abr\u00e9viation fonctionnelle hautement expressive qui calcule l&rsquo;effectif absolu au sein de chaque partition et g\u00e9n\u00e8re automatiquement une nouvelle colonne g\u00e9n\u00e9ralement baptis\u00e9e n. Le jeu de donn\u00e9es r\u00e9sultant de cette \u00e9tape interm\u00e9diaire adopte une structure strictement verticale : chaque ligne repr\u00e9sente une combinaison factorielle unique, assortie de son effectif marginal d&rsquo;occurrence. Cette configuration respecte parfaitement l&rsquo;orthodoxie des donn\u00e9es ordonn\u00e9es, mais elle n&rsquo;offre pas la disposition matricielle intuitive requise par les chercheurs pour appr\u00e9hender d&rsquo;un coup d&rsquo;\u0153il les contrastes de fr\u00e9quences crois\u00e9es.<\/p>\n<p>Pour parachever la transition vers le format bidimensionnel conventionnel, la fonction spread() du paquet tidyr intervenait historiquement pour op\u00e9rer une rotation orthogonale des donn\u00e9es. En renseignant deux arguments capitaux \u2014 la variable dont les modalit\u00e9s distinctes doivent \u00eatre promues au rang de nouvelles en-t\u00eates de colonnes (key) et la variable num\u00e9rique fournissant le contenu quantitatif des cellules (value, en l&rsquo;occurrence la colonne n g\u00e9n\u00e9r\u00e9e par tally) \u2014, spread() d\u00e9ployait horizontalement la distribution. L&rsquo;effet structurel \u00e9tait imm\u00e9diat : la variable r\u00e9siduelle demeurait en identifiant de ligne, tandis que la variable \u00e9clat\u00e9e g\u00e9n\u00e9rait une matrice rectangulaire d&rsquo;effectifs, reconstituant ainsi l&rsquo;architecture famili\u00e8re de la table de contingence.<\/p>\n<h3>2.2 M\u00e9canique interne de l&rsquo;agr\u00e9gation de donn\u00e9es discr\u00e8tes<\/h3>\n<p>L&rsquo;analyse fine de la m\u00e9canique computationnelle \u00e0 l&rsquo;\u0153uvre dans l&rsquo;agr\u00e9gation discr\u00e8te requiert de comprendre le comportement des structures d&rsquo;indexation interne de R. Lorsque l&rsquo;environnement dplyr traite un group_by(), il construit une table de hachage associant chaque combinaison unique de valeurs factorielles \u00e0 un vecteur d&rsquo;indices de lignes correspondant aux observations physiques dans la m\u00e9moire vive. Cette architecture permet d&rsquo;\u00e9viter les copies redondantes de donn\u00e9es, garantissant que l&rsquo;op\u00e9ration ult\u00e9rieure de sommation ou de comptage s&rsquo;ex\u00e9cute \u00e0 un co\u00fbt computationnel quasi lin\u00e9aire, proportionnel au nombre total d&rsquo;observations, plut\u00f4t que de subir une d\u00e9gradation polynomiale li\u00e9e au nombre de modalit\u00e9s crois\u00e9es.<\/p>\n<p>Une distinction syntaxique et conceptuelle fondamentale m\u00e9rite d&rsquo;\u00eatre explicit\u00e9e entre la s\u00e9quence group_by() suivie de tally(), et l&rsquo;instruction synth\u00e9tique count(). Alors que le bin\u00f4me group_by() \/ tally() laisse intentionnellement le cadre de donn\u00e9es dans un \u00e9tat group\u00e9 \u00e0 la fin de l&rsquo;\u00e9valuation \u2014 ce qui peut modifier silencieusement le comportement des op\u00e9rations statistiques ult\u00e9rieures qui lui seraient appliqu\u00e9es \u2014, la fonction count() encapsule ces deux \u00e9tapes tout en proc\u00e9dant \u00e0 un regroupement implicite, un d\u00e9nombrement de la colonne r\u00e9sultante, puis \u00e0 un d\u00e9groupement imm\u00e9diat (ungroup) par d\u00e9faut, \u00e0 moins que des param\u00e8tres contraires ne soient sp\u00e9cifi\u00e9s. L&rsquo;utilisation de count() \u00e9limine ainsi les effets de bord ind\u00e9sirables tout en am\u00e9liorant la compacit\u00e9 du code source.<\/p>\n<p>La gestion de la variable n issue de cette agr\u00e9gation illustre \u00e9galement le paradigme fonctionnel rigoureux du Tidyverse. Cette colonne d&rsquo;effectifs n&rsquo;est pas un attribut volatil ou un masque d&rsquo;affichage temporaire : il s&rsquo;agit d&rsquo;un vecteur d&rsquo;entiers atomiques rigoureusement int\u00e9gr\u00e9 au nouveau tibble g\u00e9n\u00e9r\u00e9. De ce fait, elle peut subir imm\u00e9diatement des transformations arithm\u00e9tiques, des pond\u00e9rations probabilistes ou des ajustements d&rsquo;\u00e9chantillonnage avant toute op\u00e9ration de restructuration spatiale. Cette persistance des propri\u00e9t\u00e9s de la variable d&rsquo;effectif permet par exemple d&rsquo;appliquer des filtres de confidentialit\u00e9 \u2014 masquant les cellules comportant moins de cinq observations pour pr\u00e9venir l&rsquo;identification de patients dans des cohortes rares \u2014 avant m\u00eame que la table ne prenne sa forme matricielle finale.<\/p>\n<h3>2.3 Propri\u00e9t\u00e9s matricielles et types d&rsquo;objets g\u00e9n\u00e9r\u00e9s<\/h3>\n<p>L&rsquo;un des apports majeurs de la d\u00e9marche dplyr r\u00e9side dans la conservation m\u00e9ticuleuse des types de donn\u00e9es et de leurs m\u00e9tadonn\u00e9es associ\u00e9es tout au long des cycles de transformation. Lorsque l&rsquo;on manipule des facteurs psychom\u00e9triques \u2014 variables cat\u00e9gorielles dot\u00e9es de niveaux explicitement hi\u00e9rarchis\u00e9s selon des \u00e9chelles d&rsquo;accord de type Likert ou des degr\u00e9s de s\u00e9v\u00e9rit\u00e9 symptomatique (par exemple : L\u00e9ger, Mod\u00e9r\u00e9, S\u00e9v\u00e8re) \u2014, l&rsquo;utilisation des fonctions de base du langage R entra\u00eene fr\u00e9quemment la perte des attributs d&rsquo;ordonnancement lors des conversions en matrices classiques. En revanche, le pipeline dplyr\/tidyr pr\u00e9serve la nature formelle de ces classes ordonn\u00e9es, ce qui garantit que les modalit\u00e9s ne sont pas r\u00e9arrang\u00e9es de mani\u00e8re anarchique par simple ordre alphab\u00e9tique dans le tableau crois\u00e9.<\/p>\n<p>Il est capital de souligner la diff\u00e9rence structurelle profonde qui s\u00e9pare un tableau crois\u00e9 produit par dplyr d&rsquo;une matrice math\u00e9matique traditionnelle. Dans une matrice au sens de R (classe matrix), l&rsquo;ensemble des \u00e9l\u00e9ments doit obligatoirement partager le m\u00eame type atomique (g\u00e9n\u00e9ralement num\u00e9rique ou textuel), et les \u00e9tiquettes de lignes rel\u00e8vent d&rsquo;un attribut de nommage distinct (les dimnames ou rownames). Un tableau crois\u00e9 issu de dplyr demeure quant \u00e0 lui un tibble : la premi\u00e8re colonne est une variable \u00e0 part enti\u00e8re contenant les \u00e9tiquettes de la variable rest\u00e9e verticale, tandis que les colonnes adjacentes sont des vecteurs num\u00e9riques individuels. Cette architecture garantit qu&rsquo;aucune ambigu\u00eft\u00e9 n&rsquo;existe quant au statut de l&rsquo;identifiant, interdisant la perte accidentelle des noms de modalit\u00e9s lors de l&rsquo;application de filtres analytiques.<\/p>\n<p>Cette rigueur structurelle influence directement la mani\u00e8re dont les m\u00e9tadonn\u00e9es de recherche psychologique voyagent au travers des scripts de traitement. Des attributs personnalis\u00e9s, tels que des \u00e9tiquettes de variables descriptives (variable labels), des annotations relatives \u00e0 la taille totale de la population cible ou des indicateurs de calibration psychom\u00e9trique, peuvent \u00eatre rattach\u00e9s aux colonnes d&rsquo;un tibble crois\u00e9 sans risque d&rsquo;\u00eatre balay\u00e9s par une op\u00e9ration de pivotement. Cette p\u00e9rennit\u00e9 de l&rsquo;information s&rsquo;av\u00e8re indispensable lors de l&rsquo;int\u00e9gration dans des syst\u00e8mes de g\u00e9n\u00e9ration automatique de rapports scientifiques, garantissant que la documentation m\u00e9thodologique reste intrins\u00e8quement li\u00e9e aux donn\u00e9es quantitatives qu&rsquo;elle d\u00e9crit.<\/p>\n<h2>3. Pr\u00e9paration et structuration de donn\u00e9es exp\u00e9rimentales sous R<\/h2>\n<h3>3.1 G\u00e9n\u00e9ration d&rsquo;un cadre de donn\u00e9es empirique en sciences du comportement<\/h3>\n<p>Pour ancrer nos d\u00e9veloppements dans une r\u00e9alit\u00e9 concr\u00e8te et directement transposable \u00e0 la pratique de recherche, nous allons mod\u00e9liser un protocole exp\u00e9rimental typique de la psychologie clinique contemporaine. Imaginons un essai clinique contr\u00f4l\u00e9 randomis\u00e9 con\u00e7u pour \u00e9valuer l&rsquo;efficacit\u00e9 de trois interventions psychoth\u00e9rapeutiques distinctes aupr\u00e8s d&rsquo;une cohorte de sujets pr\u00e9sentant des troubles anxieux caract\u00e9ris\u00e9s. L&rsquo;\u00e9chantillon exp\u00e9rimental se compose de 300 participants, assign\u00e9s al\u00e9atoirement \u00e0 l&rsquo;un des trois bras d&rsquo;intervention : une Th\u00e9rapie Cognitive et Comportementale classique (TCC), une intervention bas\u00e9e sur la R\u00e9duction du Stress par la Pleine Conscience (MBSR), et un groupe contr\u00f4le sur liste d&rsquo;attente (Controle).<\/p>\n<p>\u00c0 l&rsquo;issue d&rsquo;un cycle th\u00e9rapeutique de huit semaines, chaque participant fait l&rsquo;objet d&rsquo;une double \u00e9valuation diagnostique standardis\u00e9e. D&rsquo;une part, leur statut clinique global est formalis\u00e9 sous la forme d&rsquo;une r\u00e9ponse binaire cat\u00e9goris\u00e9e selon les crit\u00e8res de r\u00e9mission symptomatique reconnus (R\u00e9mission compl\u00e8te versus Absence de r\u00e9mission). D&rsquo;autre part, un indice de satisfaction th\u00e9rapeutique est recueilli \u00e0 travers une variable ordinale \u00e0 trois modalit\u00e9s hi\u00e9rarchis\u00e9es (Faible, Moyenne, \u00c9lev\u00e9e). De surcro\u00eet, afin de refl\u00e9ter fid\u00e8lement la r\u00e9alit\u00e9 de la recherche sur le terrain, une variable sociod\u00e9mographique de stratification par tranche d&rsquo;\u00e2ge est introduite (Jeune adulte, Adulte d&rsquo;\u00e2ge moyen, Adulte \u00e2g\u00e9), permettant d&rsquo;investiguer d&rsquo;\u00e9ventuelles interactions complexes entre l&rsquo;\u00e2ge chronologique et l&rsquo;efficacit\u00e9 diff\u00e9rentielle des th\u00e9rapies.<\/p>\n<p>Dans R, la cr\u00e9ation d&rsquo;un tel jeu de donn\u00e9es empirique repose sur l&rsquo;instanciation ma\u00eetris\u00e9e de vecteurs al\u00e9atoires reproductibles, assur\u00e9e par la fixation d\u00e9lib\u00e9r\u00e9e d&rsquo;une graine algorithmique (seed). Les probabilit\u00e9s marginales et conjointes d&rsquo;apparition des modalit\u00e9s doivent \u00eatre d\u00e9lib\u00e9r\u00e9ment calibr\u00e9es pour refl\u00e9ter les patrons empiriques r\u00e9guli\u00e8rement document\u00e9s dans la litt\u00e9rature clinique : une propension accrue \u00e0 la r\u00e9mission au sein des groupes TCC et MBSR comparativement au groupe contr\u00f4le, et une satisfaction globalement sup\u00e9rieure chez les patients ayant b\u00e9n\u00e9fici\u00e9 d&rsquo;une prise en charge active. Une telle mod\u00e9lisation rigoureuse offre le terrain id\u00e9al pour tester la r\u00e9silience et la pr\u00e9cision de nos pipelines de tabulation crois\u00e9e.<\/p>\n<h3>3.2 Nettoyage pr\u00e9alable et validation des variables cat\u00e9gorielles<\/h3>\n<p>Avant d&rsquo;engager toute proc\u00e9dure d&rsquo;agr\u00e9gation tabulaire, une phase imp\u00e9rative d&rsquo;audit et d&rsquo;assainissement des donn\u00e9es qualitatives doit \u00eatre d\u00e9ploy\u00e9e. Dans les enqu\u00eates empiriques r\u00e9elles, les donn\u00e9es brutes sont r\u00e9guli\u00e8rement contamin\u00e9es par des coquilles typographiques, des discordances de casse (majuscules et minuscules m\u00e9lang\u00e9es), des libell\u00e9s cryptiques issus de logiciels de passation informatique, ou la pr\u00e9sence inattendue de valeurs vides non cod\u00e9es. Sous l&rsquo;\u00e9gide de dplyr, la combinaison des fonctions mutate() et recode() \u2014 ou plus r\u00e9cemment case_match() et case_when() \u2014 permet d&rsquo;assainir de mani\u00e8re totalement transparente les \u00e9tiquettes cat\u00e9gorielles.<\/p>\n<p>Une pr\u00e9caution m\u00e9thodologique cardinale consiste \u00e0 op\u00e9rer la conversion explicite de chaque vecteur de cha\u00eenes de caract\u00e8res en facteur R formel (factor), en prenant soin de d\u00e9clarer exhaustivement l&rsquo;espace vectoriel des niveaux (levels). Dans le cadre des variables ordinales, comme notre indice de satisfaction psychom\u00e9trique, l&rsquo;assignation de l&rsquo;argument ordered = TRUE est primordiale. Elle conf\u00e8re \u00e0 la variable une s\u00e9mantique directionnelle intrins\u00e8que qui interdit \u00e0 R de consid\u00e9rer \u00ab\u00a0\u00c9lev\u00e9e\u00a0\u00bb comme apparaissant avant \u00ab\u00a0Faible\u00a0\u00bb au seul motif de l&rsquo;ordonnancement alphab\u00e9tique. Cette sp\u00e9cification stricte en amont conditionne la conformit\u00e9 topologique directe des futures tables crois\u00e9es, assurant que les colonnes ou les lignes se d\u00e9ploieront dans l&rsquo;ordre logique attendu par la communaut\u00e9 scientifique.<\/p>\n<p>Enfin, la v\u00e9rification de l&rsquo;int\u00e9grit\u00e9 structurelle impose un contr\u00f4le diagnostique pr\u00e9alable de la distribution des identifiants et la d\u00e9tection d&rsquo;\u00e9ventuels doublons d&rsquo;enregistrement. Gr\u00e2ce aux instructions combin\u00e9es distinct() et count(), l&rsquo;analyste doit s&rsquo;assurer que chaque sujet n&rsquo;est repr\u00e9sent\u00e9 qu&rsquo;une seule et unique fois par condition exp\u00e9rimentale. L&rsquo;omission de cette \u00e9tape de validation pr\u00e9liminaire conduirait in\u00e9vitablement \u00e0 des gonflements d&rsquo;effectifs artificiels dans les cellules de contingence, ruinant la validit\u00e9 interne des inf\u00e9rences statistiques ult\u00e9rieures et introduisant des violations massives du postulat fondamental d&rsquo;ind\u00e9pendance des observations.<\/p>\n<h2>4. Cr\u00e9ation pas-\u00e0-pas d&rsquo;un tableau crois\u00e9 \u00e9l\u00e9mentaire avec dplyr<\/h2>\n<h3>4.1 Impl\u00e9mentation du code canonique sur variables binaires<\/h3>\n<p>L&rsquo;impl\u00e9mentation op\u00e9rationnelle d&rsquo;un tableau crois\u00e9 \u00e9l\u00e9mentaire implique la confrontation de deux variables qualitatives canoniques issues de notre cadre exp\u00e9rimental : le bras de traitement psychoth\u00e9rapeutique (Groupe) et l&rsquo;issue clinique binaire (R\u00e9mission). En suivant la d\u00e9marche s\u00e9quentielle standardis\u00e9e du Tidyverse, nous commen\u00e7ons par invoquer le cadre de donn\u00e9es nettoy\u00e9, auquel nous raccordons l&rsquo;instruction de groupement group_by(Groupe, Remission). \u00c0 ce stade, la structure interne de donn\u00e9es est virtuellement partitionn\u00e9e en six sous-groupes (trois modalit\u00e9s de traitement multipli\u00e9es par deux modalit\u00e9s de r\u00e9mission). L&rsquo;\u00e9tape suivante consiste \u00e0 appliquer le verbe tally(), qui mat\u00e9rialise cette partition sous la forme d&rsquo;un tableau synth\u00e9tique de six lignes, pourvu d&rsquo;une colonne n contenant le nombre pr\u00e9cis de patients observant chaque condition combinatoire.<\/p>\n<p>Pour transmuter cette structure lin\u00e9aire en une table de contingence classique imm\u00e9diatement interpr\u00e9table par un clinicien, nous ajoutons \u00e0 notre pipeline l&rsquo;instruction spread(key = Remission, value = n). Lors de cette instruction, la fonction spread prend pour chaque modalit\u00e9 de la variable Groupe (qui demeure ancr\u00e9e sur l&rsquo;axe vertical des lignes) la valeur associ\u00e9e \u00e0 l&rsquo;\u00e9tat \u00ab\u00a0Absence\u00a0\u00bb et \u00e0 l&rsquo;\u00e9tat \u00ab\u00a0R\u00e9mission\u00a0\u00bb, et les projette sur deux colonnes distinctes. Le r\u00e9sultat renvoy\u00e9 dans la console R est un tibble de dimensions 3 x 3 : une colonne initiale listant les groupes exp\u00e9rimentaux (Controle, MBSR, TCC), flanqu\u00e9e de deux colonnes chiffr\u00e9es correspondant aux deux \u00e9tats de l&rsquo;\u00e9valuation clinique.<\/p>\n<p>L&rsquo;inspection visuelle d&rsquo;un tel tibble de sortie permet une lecture imm\u00e9diate et sans \u00e9quivoque des intersections cat\u00e9gorielles. Le chercheur peut instantan\u00e9ment constater si le volume d&rsquo;individus ayant acc\u00e9d\u00e9 \u00e0 la r\u00e9mission est substantiellement plus \u00e9lev\u00e9 dans le groupe TCC ou dans le groupe MBSR comparativement \u00e0 la cohorte sur liste d&rsquo;attente. L&rsquo;absence d&rsquo;ambigu\u00eft\u00e9 dans la d\u00e9nomination des colonnes et la clart\u00e9 topologique du format matriciel facilitent une premi\u00e8re \u00e9valuation diagnostique de l&rsquo;efficacit\u00e9 relative des th\u00e9rapies, validant la pertinence clinique du recueil de donn\u00e9es avant d&rsquo;engager des mod\u00e9lisations param\u00e9triques ou non param\u00e9triques plus pouss\u00e9es.<\/p>\n<h3>4.2 Alternative syntaxique moderne avec count()<\/h3>\n<p>Bien que la s\u00e9quence group_by() \/ tally() \/ spread() conserve une vertu p\u00e9dagogique inestimable en d\u00e9composant minutieusement chaque sous-op\u00e9ration conceptuelle, la pratique contemporaine de l&rsquo;\u00e9cosyst\u00e8me Tidyverse privil\u00e9gie une alternative syntaxique plus concise et plus robuste, reposant sur l&rsquo;utilisation du verbe count(). L&rsquo;instruction canonique count(Groupe, Remission) remplace et condense avec une \u00e9l\u00e9gance remarquable l&rsquo;association s\u00e9quentielle du regroupement et du comptage. Sur le plan algorithmique, count() inspecte le jeu de donn\u00e9es, extrait les combinaisons uniques des variables pass\u00e9es en arguments, calcule leurs fr\u00e9quences d&rsquo;apparition respectives dans un vecteur n, et renvoie un r\u00e9sultat garanti sans groupement r\u00e9siduel invisible.<\/p>\n<p>Cette approche moderne r\u00e9duit significativement la verbosit\u00e9 du code source tout en renfor\u00e7ant son imperm\u00e9abilit\u00e9 aux erreurs de programmation. Dans des analyses exploratoires denses impliquant des dizaines de tableaux crois\u00e9s successifs, chaque ligne de code \u00e9conomis\u00e9e diminue la charge cognitive et \u00e9limine les risques d&rsquo;oubli de la fonction ungroup(). La lisibilit\u00e9 pour les collaborateurs ou les \u00e9valuateurs scientifiques s&rsquo;en trouve d\u00e9cupl\u00e9e : la lecture de count(Groupe, Remission) communique imm\u00e9diatement et sans d\u00e9tour l&rsquo;intention d&rsquo;extraire la distribution de fr\u00e9quences conjointes de ces deux descripteurs.<\/p>\n<p>Sur le plan de l&rsquo;efficience computationnelle, count() b\u00e9n\u00e9ficie d&rsquo;optimisations internes pouss\u00e9es dans le code C++ de dplyr. Alors que l&rsquo;encha\u00eenement group_by() et tally() impose la cr\u00e9ation temporaire d&rsquo;un objet dot\u00e9 de m\u00e9tadonn\u00e9es de partitionnement dans la m\u00e9moire de R, count() rationalise cette allocation en traitant directement l&rsquo;indexation et la sommation au niveau bas. Pour les chercheurs d\u00e9butants, l&rsquo;adoption pr\u00e9coce de count() constitue ainsi une excellente pratique d&rsquo;ing\u00e9nierie statistique, garantissant une syntaxe \u00e9pur\u00e9e, performante et parfaitement align\u00e9e sur les standards les plus r\u00e9cents de la programmation scientifique en R.<\/p>\n<h2>5. Modernisation de l&rsquo;approche : transition de spread() vers pivot_wider()<\/h2>\n<h3>5.1 Obsolescence programm\u00e9e de spread() et gen\u00e8se de pivot_wider()<\/h3>\n<p>Dans l&rsquo;histoire du d\u00e9veloppement logiciel du Tidyverse, la fonction spread() a rendu des services inestimables \u00e0 des milliers de chercheurs. Toutefois, au fil des ann\u00e9es et des retours d&rsquo;exp\u00e9rience de la communaut\u00e9 acad\u00e9mique, plusieurs limitations conceptuelles majeures sont apparues au grand jour. L&rsquo;asym\u00e9trie s\u00e9mantique entre spread() et son pendant inverse gather() \u00e9tait source de confusion r\u00e9currente chez les praticiens, qui peinaient r\u00e9guli\u00e8rement \u00e0 identifier quelle fonction d\u00e9ployait les colonnes et laquelle les rassemblait. De surcro\u00eet, la syntaxe de spread() s&rsquo;av\u00e9rait rigide et d\u00e9faillante d\u00e8s lors qu&rsquo;il s&rsquo;agissait de manipuler des structures de donn\u00e9es complexes, telles que des tableaux crois\u00e9s n\u00e9cessitant le pivotement simultan\u00e9 de plusieurs variables de mesure ou la fusion hi\u00e9rarchique d&rsquo;en-t\u00eates multidimensionnels.<\/p>\n<p>Face \u00e0 ces constats, l&rsquo;\u00e9quipe de d\u00e9veloppement de RStudio a officiellement proc\u00e9d\u00e9 \u00e0 la refonte structurelle du remodelage de donn\u00e9es en publiant le paquet tidyr version 1.0.0, rel\u00e9guant spread() au statut de fonction dormante (superseded) et introduisant son successeur hautement sup\u00e9rieur : pivot_wider(). L&rsquo;objectif fondamental de cette modernisation \u00e9tait d&rsquo;introduire une interface utilisateur beaucoup plus explicite, unifi\u00e9e et puissante. Si spread() demeure support\u00e9e au sein de R pour assurer la r\u00e9trocompatibilit\u00e9 des millions de scripts patrimoniaux diss\u00e9min\u00e9s dans les laboratoires de recherche \u00e0 travers le monde, la p\u00e9rennit\u00e9 m\u00e9thodologique exige d\u00e9sormais que tout nouveau projet scientifique adopte sans r\u00e9serve pivot_wider().<\/p>\n<p>L&rsquo;expressivit\u00e9 accrue de pivot_wider() se manifeste notamment dans la d\u00e9nomination intuitive de ses arguments cl\u00e9s, qui s&rsquo;alignent sans ambigu\u00eft\u00e9 sur les op\u00e9rations de translation dimensionnelle : names_from indique pr\u00e9cis\u00e9ment d&rsquo;o\u00f9 proviennent les futurs noms de colonnes, tandis que values_from sp\u00e9cifie la source des donn\u00e9es num\u00e9riques qui viendront habiller le corps de la table. Cette refonte s&rsquo;accompagne d&rsquo;une polyvalence accrue, autorisant le traitement direct de types complexes, la manipulation native de plusieurs colonnes de valeurs en parall\u00e8le, et un contr\u00f4le minutieux des collisions de noms ou du typage des attributs r\u00e9sultants, autant de raffinements qui \u00e9taient rigoureusement impossibles avec la machinerie rudimentaire de spread().<\/p>\n<h3>5.2 Param\u00e9trage pr\u00e9cis de pivot_wider() pour tableaux crois\u00e9s<\/h3>\n<p>L&rsquo;int\u00e9gration de pivot_wider() au terme d&rsquo;une agr\u00e9gation par count() repr\u00e9sente l&rsquo;\u00e9tat de l&rsquo;art pour confectionner une table crois\u00e9e en R. Le pipeline moderne s&rsquo;articule ainsi : df %>% count(Groupe, Remission) %>% pivot_wider(names_from = Remission, values_from = n). La clart\u00e9 d\u00e9clarative de cette instruction garantit qu&rsquo;un lecteur profane comprend imm\u00e9diatement que la colonne Remission fournit les \u00e9tiquettes horizontales et que la colonne n fournit le d\u00e9nombrement effectif log\u00e9 \u00e0 l&rsquo;intersection de chaque ligne et de chaque colonne. Cette lisibilit\u00e9 s&rsquo;av\u00e8re particuli\u00e8rement pr\u00e9cieuse lors de la r\u00e9daction de mat\u00e9riel suppl\u00e9mentaire accompagnant la soumission d&rsquo;articles dans des revues internationales \u00e0 comit\u00e9 de lecture.<\/p>\n<p>Au-del\u00e0 de cette utilisation \u00e9l\u00e9mentaire, pivot_wider() offre des leviers de contr\u00f4le avanc\u00e9s d&rsquo;une grande valeur pratique. L&rsquo;argument names_prefix permet par exemple de pr\u00e9fixer automatiquement l&rsquo;ensemble des nouvelles colonnes cr\u00e9\u00e9es par une cha\u00eene de caract\u00e8res distinctive (par exemple, names_prefix = \u00ab\u00a0Remission_\u00a0\u00bb). Cette pr\u00e9caution cosm\u00e9tique pr\u00e9vient les dysfonctionnements analytiques ult\u00e9rieurs lorsque les modalit\u00e9s de la variable cat\u00e9gorielle d&rsquo;origine sont des chiffres ou des symboles r\u00e9serv\u00e9s, interdisant la cr\u00e9ation de noms de colonnes non valides selon les normes syntaxiques de R sans n\u00e9cessiter de fastidieux renommages a posteriori.<\/p>\n<p>Un autre atout substantiel de pivot_wider() r\u00e9side dans la gestion de l&rsquo;ordre d&rsquo;apparition des variables et de leurs modalit\u00e9s. Contrairement aux fonctions historiques qui r\u00e9ordonnaient parfois les niveaux factoriels selon des crit\u00e8res purement lexicographiques, pivot_wider() respecte scrupuleusement l&rsquo;ordonnancement intrins\u00e8que des facteurs d\u00e9finis dans les \u00e9tapes ant\u00e9rieures de nettoyage, ou l&rsquo;ordre chronologique de leur premi\u00e8re apparition dans le cadre de donn\u00e9es. Pour les chercheurs en psychom\u00e9trie manipulant des \u00e9chelles cliniques \u00e9talonn\u00e9es, cela assure que la structure tabulaire finale refl\u00e8te fid\u00e8lement la progression logique de l&rsquo;\u00e9valuation diagnostique, \u00e9vitant tout contresens visuel lors de l&rsquo;examen des distributions de fr\u00e9quences.<\/p>\n<h2>6. Traitement des valeurs manquantes et des combinaisons inobserv\u00e9es<\/h2>\n<h3>6.1 Distinction conceptuelle entre z\u00e9ros structurels et donn\u00e9es manquantes (NA)<\/h3>\n<p>Dans l&rsquo;exploration quantitative des sciences humaines, la survenue de cellules inoccup\u00e9es dans une table de contingence soul\u00e8ve des d\u00e9fis \u00e9pist\u00e9mologiques et statistiques consid\u00e9rables. Il convient de dissocier formellement deux r\u00e9alit\u00e9s m\u00e9thodologiques radicalement diff\u00e9rentes : les z\u00e9ros d&rsquo;\u00e9chantillonnage et les z\u00e9ros structurels. Un z\u00e9ro d&rsquo;\u00e9chantillonnage survient lorsqu&rsquo;une combinaison factorielle particuli\u00e8re est th\u00e9oriquement possible au sein de la population cible, mais qu&rsquo;aucun individu pr\u00e9sentant ce profil sp\u00e9cifique n&rsquo;a \u00e9t\u00e9 captur\u00e9 au cours de la phase de recrutement empirique en raison d&rsquo;une taille d&rsquo;\u00e9chantillon limit\u00e9e ou d&rsquo;une faible pr\u00e9valence relative du ph\u00e9nom\u00e8ne. C&rsquo;est le cas typique d&rsquo;une pathologie rare crois\u00e9e avec une tranche d&rsquo;\u00e2ge marginale dans une \u00e9tude en population g\u00e9n\u00e9rale.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, les z\u00e9ros structurels (ou combinaisons impossibles) correspondent \u00e0 des configurations qui ne peuvent physiquement ou logiquement jamais se produire en vertu de contraintes taxonomiques ou biologiques intangibles. Par exemple, croiser un diagnostic exclusif de d\u00e9mence s\u00e9nile pr\u00e9coce avec une classe d&rsquo;\u00e2ge p\u00e9diatrique g\u00e9n\u00e8re une cellule dont l&rsquo;effectif nul n&rsquo;est pas un accident d&rsquo;\u00e9chantillonnage mais une impossibilit\u00e9 ontologique. Dans les pipelines informatiques standards de dplyr, lorsque deux modalit\u00e9s ne co\u00efncident jamais au sein des lignes de la table d&rsquo;origine, le verbe count() ignore purement et simplement cette occurrence : la ligne correspondante n&rsquo;est jamais g\u00e9n\u00e9r\u00e9e. Par suite, lors du passage dans un pivot, cette absence d&rsquo;observation se traduit m\u00e9caniquement par une valeur manquante (NA).<\/p>\n<p>La confusion entre une donn\u00e9e manquante r\u00e9elle \u2014 traduisant une abstention de r\u00e9ponse, une perte de suivi de patient ou un artefact d&rsquo;enregistrement \u2014 et un effectif d&rsquo;occurrence nul (z\u00e9ro d&rsquo;\u00e9chantillonnage) comporte des risques m\u00e9thodologiques d\u00e9vastateurs. Si une cellule NA est trait\u00e9e aveugl\u00e9ment comme une omission par les algorithmes statistiques ult\u00e9rieurs, elle sera soit exclue des calculs, introduisant un biais de s\u00e9lection artificiel, soit assimil\u00e9e \u00e0 une d\u00e9faillance de collecte. Il est donc du devoir imp\u00e9rieux du biostatisticien et du m\u00e9thodologue de transformer ces vides relationnels en z\u00e9ros quantitatifs explicites, assurant la compl\u00e9tude et la v\u00e9racit\u00e9 de la matrice de contingence.<\/p>\n<h3>6.2 Remplacement syst\u00e9matique des NA via l&rsquo;argument values_fill<\/h3>\n<p>Pour neutraliser ce risque analytique sans alourdir le code par des instructions de substitution manuelles maladroites, pivot_wider() embarque un param\u00e8tre d&rsquo;une efficience redoutable : l&rsquo;argument values_fill. En configurant explicitement values_fill = 0 (ou values_fill = list(n = 0)), le chercheur intime l&rsquo;ordre au moteur de tidyr de substituer instantan\u00e9ment tout vide structurel g\u00e9n\u00e9r\u00e9 par l&rsquo;orthogonalisation par un v\u00e9ritable z\u00e9ro entier. Cette simple d\u00e9claration garantit la restitution d&rsquo;une table math\u00e9matiquement close, dans laquelle chaque cellule vide refl\u00e8te pr\u00e9cis\u00e9ment un effectif nul d&rsquo;observation, directement utilisable dans des tests inf\u00e9rentiels non param\u00e9triques sans provoquer d&rsquo;erreurs d&rsquo;ex\u00e9cution li\u00e9es \u00e0 la pr\u00e9sence de valeurs non d\u00e9finies.<\/p>\n<p>Dans les environnements patrimoniaux exploitant encore spread(), cette fonctionnalit\u00e9 \u00e9tait assur\u00e9e de mani\u00e8re \u00e9quivalente par le param\u00e8tre fill = 0. Bien que fonctionnel, ce param\u00e9trage historique s&rsquo;av\u00e9rait moins flexible, car il ne permettait pas de sp\u00e9cifier des strat\u00e9gies de remplissage distinctes pour de multiples colonnes de valeurs h\u00e9t\u00e9rog\u00e8nes. Avec pivot_wider(), la granularit\u00e9 du contr\u00f4le est totale : on peut d\u00e9cider de peupler les effectifs d&rsquo;occurrences absents par des z\u00e9ros, tout en assignant des scores de substitution distincts (comme des moyennes ou des mentions textuelles sp\u00e9cifiques) \u00e0 d&rsquo;autres attributs crois\u00e9s.<\/p>\n<p>Il existe n\u00e9anmoins des cas complexes o\u00f9 les combinaisons inobserv\u00e9es doivent \u00eatre explicit\u00e9es en amont m\u00eame du remodelage en largeur. C&rsquo;est ici qu&rsquo;intervient la fonction compl\u00e9mentaire tidyr::complete(). Utilis\u00e9e conjointement avec dplyr, complete(Groupe, Remission, fill = list(n = 0)) force le tibble vertical \u00e0 afficher l&rsquo;int\u00e9gralit\u00e9 du produit cart\u00e9sien de l&rsquo;ensemble des facteurs sp\u00e9cifi\u00e9s, mat\u00e9rialisant chaque cellule vide sous la forme d&rsquo;une ligne dot\u00e9e d&rsquo;un compteur \u00e9gal \u00e0 z\u00e9ro avant toute op\u00e9ration de pr\u00e9sentation. Cette d\u00e9marche s&rsquo;av\u00e8re particuli\u00e8rement salutaire lorsque les donn\u00e9es tabul\u00e9es doivent faire l&rsquo;objet de calculs probabilistes marginaux pr\u00e9alables au pivotement, pr\u00e9venant la sous-estimation syst\u00e9matique des d\u00e9nominateurs de strate.<\/p>\n<h2>7. Int\u00e9gration de dimensions multiples et stratification complexe<\/h2>\n<h3>7.1 Conception de tableaux crois\u00e9s \u00e0 trois voies (interactions d&rsquo;ordre sup\u00e9rieur)<\/h3>\n<p>La recherche contemporaine en psychologie et en neurosciences comportementales ne se contente que tr\u00e8s rarement de relations bivari\u00e9es simplistes. Les m\u00e9canismes sous-jacents aux troubles mentaux ou aux apprentissages cognitifs s&rsquo;inscrivent typiquement au c\u0153ur de r\u00e9seaux d&rsquo;interactions complexes, o\u00f9 l&rsquo;effet d&rsquo;une intervention th\u00e9rapeutique est fr\u00e9quemment modul\u00e9 par des variables d&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 individuelle, telles que l&rsquo;\u00e2ge, le genre ou les comorbidit\u00e9s somatiques. L&rsquo;analyse des distributions conjointes requiert d\u00e8s lors l&rsquo;\u00e9laboration de tableaux crois\u00e9s \u00e0 trois dimensions, voire plus (souvent d\u00e9sign\u00e9s sous le vocable de tables \u00e0 plusieurs voies ou multi-way crosstabs).<\/p>\n<p>La flexibilit\u00e9 de la grammaire dplyr permet d&rsquo;aborder la stratification complexe avec une simplicit\u00e9 d\u00e9concertante. Pour introduire une variable mod\u00e9ratrice \u2014 par exemple, la tranche d&rsquo;\u00e2ge des participants (TrancheAge) dans notre protocole th\u00e9rapeutique \u2014, il suffit d&rsquo;adjoindre cette variable dans la sp\u00e9cification du comptage \u00e9l\u00e9mentaire : count(TrancheAge, Groupe, Remission). L&rsquo;objet interm\u00e9diaire r\u00e9sultant pr\u00e9sente alors les effectifs articul\u00e9s le long de ce triplet factoriel, pr\u00e9servant la fid\u00e9lit\u00e9 int\u00e9grale de l&rsquo;interaction d&rsquo;ordre trois sans aucune compression pr\u00e9matur\u00e9e de l&rsquo;information empirique.<\/p>\n<p>L&rsquo;\u00e9tape strat\u00e9gique r\u00e9side ensuite dans le choix raisonn\u00e9 de la variable pivot\u00e9e lors du passage \u00e0 pivot_wider(). Deux approches conceptuelles se dessinent alors pour le chercheur. Si l&rsquo;on souhaite analyser l&rsquo;effet du traitement conditionnellement \u00e0 chaque tranche d&rsquo;\u00e2ge, on conservera TrancheAge et Groupe sur l&rsquo;axe vertical des lignes, et l&rsquo;on basculera Remission en en-t\u00eate horizontal via names_from = Remission. Le tableau final affiche alors une organisation en panneaux hi\u00e9rarchiques, o\u00f9 l&rsquo;on visualise au sein de chaque groupe d&rsquo;\u00e2ge l&rsquo;efficacit\u00e9 compar\u00e9e des trois th\u00e9rapeutiques. Cette organisation spatiale permet d&rsquo;isoler en un clin d&rsquo;\u0153il d&rsquo;\u00e9ventuels ph\u00e9nom\u00e8nes de non-r\u00e9ponse s\u00e9lective, comme une efficacit\u00e9 remarquable de la TCC chez les jeunes adultes qui viendrait s&rsquo;att\u00e9nuer chez les patients plus \u00e2g\u00e9s.<\/p>\n<h3>7.2 Structuration multi-niveaux des en-t\u00eates de colonnes<\/h3>\n<p>Une prouesse architecturale offerte par pivot_wider() r\u00e9side dans son aptitude native \u00e0 accepter plusieurs variables simultan\u00e9ment au sein de l&rsquo;argument names_from. Imaginons que le chercheur souhaite d\u00e9ployer horizontalement non seulement le statut de r\u00e9mission symptomatique, mais \u00e9galement le niveau de satisfaction th\u00e9rapeutique des patients. En sp\u00e9cifiant names_from = c(Remission, Satisfaction), tidyr va automatiquement engendrer une combinaison matricielle compl\u00e8te au niveau des en-t\u00eates de colonnes, cr\u00e9ant une arborescence multidimensionnelle fluide.<\/p>\n<p>Pour assurer la clart\u00e9 et la conformit\u00e9 esth\u00e9tique de cette structuration multi-niveaux aux exigences de publication de revues scientifiques de premier rang, le param\u00e8tre names_sep s&rsquo;av\u00e8re d\u00e9cisif. En d\u00e9clarant par exemple names_sep = \u00a0\u00bb _ \u00ab\u00a0, la fonction juxtapose \u00e9l\u00e9gamment les modalit\u00e9s respectives, produisant des intitul\u00e9s de colonnes explicites et imm\u00e9diatement exploitables tels que \u00ab\u00a0Absence_Faible\u00a0\u00bb, \u00ab\u00a0Absence_Moyenne\u00a0\u00bb, \u00ab\u00a0Remission_\u00c9lev\u00e9e\u00a0\u00bb. L&rsquo;analyste s&rsquo;affranchit ainsi de tout risque de collision s\u00e9mantique ou de confusion sur la provenance crois\u00e9e des effectifs rapport\u00e9s dans chaque cellule.<\/p>\n<p>Cette structuration enrichie s&rsquo;adapte remarquablement \u00e0 la confection de tables destin\u00e9es \u00e0 figurer dans des rapports conformes aux normes rigides de l&rsquo;American Psychological Association (<a rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">APA 7th edition<\/a>). Dans ces protocoles d&rsquo;\u00e9dition standardis\u00e9s, o\u00f9 la s\u00e9paration nette entre facteurs ind\u00e9pendants et mesures d\u00e9pendantes crois\u00e9es est une exigence absolue, la possibilit\u00e9 de sculpter pr\u00e9cis\u00e9ment l&rsquo;architecture des en-t\u00eates sans jamais briser le format tabulaire natif \u00e9pargne des heures de mise en page manuelle et supprime d\u00e9finitivement les redoutables erreurs de copier-coller inh\u00e9rentes aux logiciels de traitement de texte g\u00e9n\u00e9ralistes.<\/p>\n<h2>8. Calcul des proportions, pourcentages et distributions marginales<\/h2>\n<h3>8.1 Calcul des pourcentages en ligne et en colonne au sein du pipeline<\/h3>\n<p>Si la lecture des effectifs bruts est une \u00e9tape n\u00e9cessaire pour appr\u00e9hender la puissance brute d&rsquo;un \u00e9chantillon, l&rsquo;interpr\u00e9tation comparative des ph\u00e9nom\u00e8nes psychologiques repose presque exclusivement sur l&rsquo;analyse des fr\u00e9quences relatives, des proportions et des pourcentages. Les variations de volume entre les groupes exp\u00e9rimentaux ou les taux in\u00e9gaux de participation rendent la lecture des valeurs absolues souvent trompeuse. La d\u00e9rivation des pourcentages au sein du flux de manipulation dplyr impose toutefois une vigilance m\u00e9thodologique extr\u00eame quant \u00e0 la direction du calcul : s&rsquo;agit-il d&rsquo;un pourcentage par rapport \u00e0 la taille totale de l&rsquo;\u00e9chantillon, d&rsquo;un pourcentage en ligne (profils lignes), ou d&rsquo;un pourcentage en colonne (profils colonnes) ?<\/p>\n<p>L&rsquo;\u00e9laboration de ces m\u00e9triques s&rsquo;effectue avec une remarquable rigueur en ins\u00e9rant une instruction mutate() directement apr\u00e8s l&rsquo;\u00e9tape d&rsquo;agr\u00e9gation, mais imp\u00e9rativement avant le pivotement g\u00e9om\u00e9trique. Pour calculer par exemple les pourcentages en ligne \u2014 qui correspondent ici au taux de r\u00e9mission sp\u00e9cifique \u00e0 chaque bras de traitement psychoth\u00e9rapeutique \u2014, nous devons segmenter le cadre par la variable de groupe avant de calculer le ratio. L&rsquo;instruction s&rsquo;\u00e9crit de mani\u00e8re tr\u00e8s fluide : group_by(Groupe) %>% mutate(Pourcentage = (n \/ sum(n)) * 100). Au cours de cette op\u00e9ration, sum(n) n&rsquo;\u00e9value plus la somme totale des observations de l&rsquo;ensemble de la clinique, mais strictement la somme des effectifs au sein du bras th\u00e9rapeutique courant, conf\u00e9rant au pourcentage sa s\u00e9mantique exacte de probabilit\u00e9 conditionnelle d&rsquo;acc\u00e8s \u00e0 la r\u00e9mission sachant le traitement re\u00e7u.<\/p>\n<p>Dans les versions contemporaines de dplyr (\u00e0 partir de la version 1.1.0), cette syntaxe s&rsquo;est \u00e9pur\u00e9e encore davantage gr\u00e2ce \u00e0 l&rsquo;introduction universelle de l&rsquo;argument .by. Au lieu de verrouiller un \u00e9tat group\u00e9 persistant par group_by(), l&rsquo;analyste peut exprimer son intention de fa\u00e7on strictement locale et sans effet de bord : mutate(Pourcentage = (n \/ sum(n)) * 100, .by = Groupe). Pour finaliser la pr\u00e9sentation \u00e0 destination de comit\u00e9s de lecture ou de praticiens de sant\u00e9, l&rsquo;association avec le paquet scales permet de formater instantan\u00e9ment les nombres d\u00e9cimaux en cha\u00eenes lisibles et \u00e9l\u00e9gantes, en utilisant par exemple scales::percent(n \/ sum(n), accuracy = 0.1), int\u00e9grant automatiquement le symbole de pourcentage et g\u00e9rant rigoureusement l&rsquo;arrondi math\u00e9matique sans troncation sauvage.<\/p>\n<h3>8.2 Ajout automatique des totaux marginaux<\/h3>\n<p>Un tableau crois\u00e9 acad\u00e9mique ne saurait \u00eatre consid\u00e9r\u00e9 comme complet sans la pr\u00e9sence de ses distributions marginales, c&rsquo;est-\u00e0-dire les totaux de lignes et de colonnes qui r\u00e9capitulent le volume cumul\u00e9 d&rsquo;observations traversant chaque strate factorielle. Si l&rsquo;on s&rsquo;en tient exclusivement aux fonctions fondamentales de dplyr, la concat\u00e9nation manuelle de ces totaux marginaux exige des man\u0153uvres fastidieuses : il convient d&rsquo;agr\u00e9ger les donn\u00e9es \u00e0 une \u00e9chelle globale, d&rsquo;extraire les sommes partielles, puis de recoller ces \u00e9l\u00e9ments via bind_rows() pour le total g\u00e9n\u00e9ral et de multiples instructions de jointure pour les marges interm\u00e9diaires. Bien que th\u00e9oriquement possible et d&rsquo;une rigueur absolue, cette strat\u00e9gie s&rsquo;av\u00e8re co\u00fbteuse en lignes de code et complexe \u00e0 maintenir sur des structures \u00e0 haute dimensionnalit\u00e9.<\/p>\n<p>Pour r\u00e9soudre cette probl\u00e9matique avec un pragmatisme maximal sans s&rsquo;\u00e9carter de la philosophie g\u00e9n\u00e9rale du Tidyverse, l&rsquo;int\u00e9gration du paquet sp\u00e9cialis\u00e9 <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=janitor\">janitor<\/a> s&rsquo;impose comme la solution de r\u00e9f\u00e9rence adopt\u00e9e par les biostatisticiens aguerris. Con\u00e7u pour s&rsquo;interfacer de fa\u00e7on transparente au terme direct d&rsquo;un pipeline dplyr\/tidyr, janitor met \u00e0 disposition la fonction adorn_totals(). Cette instruction permet d&rsquo;adjoindre en un seul appel d\u00e9claratif la somme des colonnes, la somme des lignes, ou les deux simultan\u00e9ment via le param\u00e8tre adorn_totals(where = c(\u00ab\u00a0row\u00a0\u00bb, \u00ab\u00a0col\u00a0\u00bb)). Le calcul marginal s&rsquo;ex\u00e9cute automatiquement, respectant scrupuleusement la typologie des variables num\u00e9riques et annotant la colonne descriptive par un libell\u00e9 textuel personnalisable (comme \u00ab\u00a0Total\u00a0\u00bb).<\/p>\n<p>L&rsquo;utilisation de cette instrumentation sp\u00e9cialis\u00e9e permet en outre de valider imm\u00e9diatement l&rsquo;int\u00e9grit\u00e9 quantitative du tableau crois\u00e9 : la cellule log\u00e9e \u00e0 l&rsquo;intersection de la ligne Total et de la colonne Total doit imp\u00e9rativement correspondre \u00e0 la taille exacte de l&rsquo;\u00e9chantillon exp\u00e9rimental complet (dans notre cas, 300 patients). Toute d\u00e9viation par rapport \u00e0 cette \u00e9galit\u00e9 fondamentale constitue un signal d&rsquo;alarme diagnostique r\u00e9v\u00e9lant soit l&rsquo;exclusion silencieuse de donn\u00e9es manquantes non d\u00e9tect\u00e9es en amont, soit une duplication erron\u00e9e de lignes lors des phases d&rsquo;appariement. La v\u00e9rification de cette marge globale forme ainsi la caution de cl\u00f4ture de toute d\u00e9marche descriptive pr\u00e9liminaire \u00e0 l&rsquo;inf\u00e9rence.<\/p>\n<h2>9. Analyse inf\u00e9rentielle : du tableau crois\u00e9 aux tests d&rsquo;association<\/h2>\n<h3>9.1 Liaison formelle avec le test d&rsquo;ind\u00e9pendance du Chi-deux de Pearson<\/h3>\n<p>Une fois le tableau crois\u00e9 construit, consolid\u00e9 et inspect\u00e9 visuellement, le chercheur en psychologie doit imp\u00e9rativement d\u00e9passer le constat purement empirique pour d\u00e9terminer si les contrastes observ\u00e9s entre les groupes traduisent une v\u00e9ritable association statistique ou s&rsquo;ils rel\u00e8vent de simples fluctuations d&rsquo;\u00e9chantillonnage al\u00e9atoires. La m\u00e9thode classique par excellence pour \u00e9prouver l&rsquo;hypoth\u00e8se nulle d&rsquo;ind\u00e9pendance stochastique entre deux variables cat\u00e9gorielles est le test du Chi-deux de Pearson (<span class=\"arabpsy-math-inline\" data-latex=\"\\chi^2\">$\\chi^2$<\/span>). Ce test repose sur la confrontation formelle entre la matrice des fr\u00e9quences effectivement observ\u00e9es (<span class=\"arabpsy-math-inline\" data-latex=\"O_{ij}\">$O_{ij}$<\/span>) et celle des fr\u00e9quences th\u00e9oriques ou attendues sous l&rsquo;hypoth\u00e8se nulle d&rsquo;absence totale de lien (<span class=\"arabpsy-math-inline\" data-latex=\"E_{ij}\">$E_{ij}$<\/span>).<\/p>\n<p>Pour soumettre un tableau crois\u00e9 fa\u00e7onn\u00e9 avec dplyr \u00e0 la fonction canonique chisq.test() du moteur de base de R, une petite \u00e9tape d&rsquo;adaptation morphologique est n\u00e9cessaire. Comme nous l&rsquo;avons explicit\u00e9 plus haut, notre tableau issu de pivot_wider() conserve dans sa premi\u00e8re colonne les identifiants textuels de la variable de groupe. Or, l&rsquo;algorithme num\u00e9rique de chisq.test() exige une matrice purement quantitative. Le passage s&rsquo;op\u00e8re en toute \u00e9l\u00e9gance dans un pipeline Tidyverse au moyen de la fonction tibble::column_to_rownames(var = \u00ab\u00a0Groupe\u00a0\u00bb), suivie de l&rsquo;appel direct au test : table_croisee %>% column_to_rownames(\u00ab\u00a0Groupe\u00a0\u00bb) %>% chisq.test().<\/p>\n<p>Avant d&rsquo;interpr\u00e9ter le verdict de la p-valeur r\u00e9sultante, la d\u00e9ontologie m\u00e9thodologique impose la v\u00e9rification imm\u00e9diate des postulats fondamentaux de validit\u00e9 \u00e9nonc\u00e9s par Cochran. En extrayant les effectifs attendus directement depuis l&rsquo;objet r\u00e9sultat du test (via chisq_result$expected), le psychom\u00e9tricien doit confirmer qu&rsquo;aucun effectif th\u00e9orique n&rsquo;est strictement inf\u00e9rieur \u00e0 1 et que pas plus de 20 % des cellules ne pr\u00e9sentent un effectif attendu inf\u00e9rieur \u00e0 5. Si cette clause de sauvegarde n&rsquo;est pas honor\u00e9e \u2014 ce qui survient fr\u00e9quemment lors de l&rsquo;investigation de pathologies rares ou de petits sous-groupes cliniques \u2014, l&rsquo;inf\u00e9rence par le Chi-deux asymptotique devient caduque. Il devient alors obligatoire de bifurquer vers des proc\u00e9dures de r\u00e9\u00e9chantillonnage par permutations ou vers le test exact de Fisher, dont l&rsquo;impl\u00e9mentation accepte rigoureusement la m\u00eame structure matricielle extraite de notre pipeline.<\/p>\n<h3>9.2 Calcul des tailles d&rsquo;effet associ\u00e9es (V de Cramer et Odds Ratios)<\/h3>\n<p>Dans la recherche contemporaine en sciences du comportement, l&rsquo;obtention d&rsquo;une p-valeur statistiquement significative au terme d&rsquo;un test du Chi-deux ne suffit plus pour emporter l&rsquo;adh\u00e9sion de la communaut\u00e9 scientifique. Conform\u00e9ment aux directives imp\u00e9ratives de l&rsquo;APA et du mouvement pour une science empirique robuste, tout chercheur est tenu de rapporter une estimation standardis\u00e9e de la magnitude pratique du ph\u00e9nom\u00e8ne observ\u00e9, c&rsquo;est-\u00e0-dire une taille d&rsquo;effet. Dans les tableaux de contingence de dimensions sup\u00e9rieures \u00e0 un plan binaire 2 x 2, la m\u00e9trique ma\u00eetresse d&rsquo;association cat\u00e9gorielle est le V de Cramer (<span class=\"arabpsy-math-inline\" data-latex=\"V\">$V$<\/span>). Ce coefficient, born\u00e9 strictement entre 0 (ind\u00e9pendance absolue) et 1 (d\u00e9pendance fonctionnelle parfaite), normalise la statistique du Chi-deux en neutralisant l&rsquo;effet m\u00e9canique d&rsquo;inflation proportionnel \u00e0 la taille brute de l&rsquo;\u00e9chantillon.<\/p>\n<p>L&rsquo;int\u00e9gration de cette m\u00e9trique au c\u0153ur de nos scripts s&rsquo;articule ais\u00e9ment gr\u00e2ce aux biblioth\u00e8ques psychom\u00e9triques et biostatistiques telles que <a rel=\"noopener noreferrer\" href=\"https:\/\/easystats.github.io\/effectsize\/\">effectsize<\/a> ou rstatix. En passant l&rsquo;objet matriciel issu de notre cha\u00eene dplyr directement dans la fonction cramers_v(), nous obtenons non seulement l&rsquo;estimateur ponctuel de la force de la relation, mais \u00e9galement ses intervalles de confiance asymptotiques ou d\u00e9riv\u00e9s par m\u00e9thode de bootstrap. Un coefficient V oscillant entre 0.10 et 0.30 signalera typiquement un effet de taille modeste, tandis qu&rsquo;une valeur franchissant le seuil de 0.50 r\u00e9v\u00e9lera une association d&rsquo;une ampleur clinique majeure entre le paradigme d&rsquo;intervention et l&rsquo;issue th\u00e9rapeutique des patients.<\/p>\n<p>Lorsque le tableau crois\u00e9 se restreint \u00e0 une dimension binaire stricte (2 x 2) \u2014 par exemple, en comparant uniquement le groupe TCC face au groupe de contr\u00f4le sur l&rsquo;acc\u00e8s \u00e0 la r\u00e9mission \u2014, l&rsquo;indice statistique de pr\u00e9dilection devient le rapport de cotes, universellement connu sous l&rsquo;appellation d&rsquo;Odds Ratio (OR). L&rsquo;Odds Ratio quantifie le rapport entre la cote de succ\u00e8s (probabilit\u00e9 de r\u00e9mission divis\u00e9e par la probabilit\u00e9 d&rsquo;\u00e9chec) au sein du groupe actif et cette m\u00eame cote au sein du groupe t\u00e9moin. L&rsquo;extraction programmatique de cet indice et de son intervalle de confiance \u00e0 95 % cl\u00f4ture magistralement le pont entre l&rsquo;agr\u00e9gation initiale par dplyr et l&rsquo;inf\u00e9rence clinique formelle, fournissant aux \u00e9quipes de recherche m\u00e9dicale le param\u00e8tre cl\u00e9 exig\u00e9 pour toute m\u00e9ta-analyse ult\u00e9rieure.<\/p>\n<h2>10. Visualisation graphique des tableaux crois\u00e9s issus de dplyr<\/h2>\n<h3>10.1 Du tableau d&rsquo;effectifs aux diagrammes en barres empil\u00e9es et juxtapos\u00e9es<\/h3>\n<p>Si la matrice chiffr\u00e9e issue d&rsquo;une table crois\u00e9e comble les exigences de rigueur analytique du statisticien, la communication des d\u00e9couvertes scientifiques aupr\u00e8s d&rsquo;audiences acad\u00e9miques \u00e9largies ou du grand public n\u00e9cessite une transposition graphique imm\u00e9diate, fid\u00e8le et esth\u00e9tiquement ma\u00eetris\u00e9e. L&rsquo;immense sup\u00e9riorit\u00e9 de l&rsquo;approche Tidyverse r\u00e9side ici dans l&rsquo;interop\u00e9rabilit\u00e9 sans couture entre le pipeline de comptage de dplyr et le moteur graphique r\u00e9volutionnaire de <a rel=\"noopener noreferrer\" href=\"https:\/\/ggplot2.tidyverse.org\/\">ggplot2<\/a>. Plut\u00f4t que de passer par la forme matricielle \u00e9vas\u00e9e de pivot_wider(), la visualisation graphique s&rsquo;alimente directement du format vertical et ordonn\u00e9 issu de l&rsquo;\u00e9tape interm\u00e9diaire count().<\/p>\n<p>Cette configuration interm\u00e9diaire \u2014 o\u00f9 chaque ligne d\u00e9taille une association factorielle et son effectif n associ\u00e9 \u2014 constitue la mati\u00e8re premi\u00e8re native de l&rsquo;op\u00e9rateur graphique. Pour construire un diagramme en barres juxtapos\u00e9es (side-by-side bar chart), il suffit de rediriger le tibble directement dans ggplot(aes(x = Groupe, y = n, fill = Remission)) et d&rsquo;invoquer la couche g\u00e9om\u00e9trique geom_col(position = \u00ab\u00a0dodge\u00a0\u00bb). La fonction geom_col() prend directement en charge la hauteur de colonne sp\u00e9cifi\u00e9e par la variable num\u00e9rique n, tandis que position = \u00ab\u00a0dodge\u00a0\u00bb d\u00e9ploie les modalit\u00e9s d&rsquo;\u00e9valuation clinique c\u00f4te \u00e0 c\u00f4te, offrant une comparaison visuelle instantan\u00e9e des volumes respectifs de succ\u00e8s et d&rsquo;\u00e9chec th\u00e9rapeutique au sein de chaque condition exp\u00e9rimentale.<\/p>\n<p>Pour les contextes o\u00f9 l&rsquo;effectif total par condition est variable et o\u00f9 seule compte la comparaison des profils relatifs, la modification de la commande spatiale en position = \u00ab\u00a0fill\u00a0\u00bb transforme l&rsquo;affichage en barres empil\u00e9es normalis\u00e9es \u00e0 100 %. Chaque barre culmine alors uniform\u00e9ment \u00e0 la valeur unitaire, et les segments de couleurs traduisent visuellement la proportion relative exacte de r\u00e9mission au sein de chaque groupe. Cette repr\u00e9sentation visuelle s&rsquo;av\u00e8re particuli\u00e8rement redoutable pour d\u00e9samorcer les illusions d&rsquo;optique d\u00e9coulant de d\u00e9s\u00e9quilibres d&rsquo;assignation exp\u00e9rimentale, projetant avec une limpidit\u00e9 incontestable le gain probabiliste substantiel induit par les protocoles cliniques actifs.<\/p>\n<h3>10.2 Cartographies thermiques (Heatmaps) des matrices de contingence<\/h3>\n<p>Lorsque le nombre de modalit\u00e9s crois\u00e9es s&rsquo;\u00e9l\u00e8ve consid\u00e9rablement \u2014 par exemple dans des plans factoriels explorant conjointement de multiples sous-types nosologiques, des degr\u00e9s de s\u00e9v\u00e9rit\u00e9 symptomatique et des profils de r\u00e9ponse pharmacologiques \u2014, le recours aux diagrammes en barres atteint rapidement ses limites perceptuelles en saturant la sc\u00e8ne visuelle. La cartographie thermique, ou Heatmap de contingence, offre alors une alternative \u00e9l\u00e9gante, compacte et hautement informative pour explorer visuellement des matrices de croisement denses.<\/p>\n<p>La transcription d&rsquo;un pipeline dplyr en heatmap s&rsquo;op\u00e8re au moyen de la g\u00e9om\u00e9trie geom_tile() de ggplot2. En cartographiant la premi\u00e8re variable nominale sur l&rsquo;axe des abscisses, la seconde variable sur l&rsquo;axe des ordonn\u00e9es, et l&rsquo;effectif d\u00e9compt\u00e9 n sur l&rsquo;attribut chromatique de remplissage (fill), geom_tile() mat\u00e9rialise chaque cellule de contingence sous la forme d&rsquo;un pav\u00e9 rectangulaire color\u00e9 dont la teinte refl\u00e8te directement la densit\u00e9 des observations. L&rsquo;utilisation conjointe de palettes de couleurs perceptuellement uniformes et accessibles aux d\u00e9ficients visuels, telles que celles fournies par le paquet <a rel=\"noopener noreferrer\" href=\"https:\/\/sjmgarnier.github.io\/viridis\/\">viridis<\/a> (via scale_fill_viridis_c()), garantit une interpr\u00e9tation visuelle d\u00e9nu\u00e9e de biais chromatiques et parfaitement lisible lors de reproductions en noir et blanc.<\/p>\n<p>Pour hisser cette repr\u00e9sentation graphique aux normes d&rsquo;excellence des publications internationales, l&rsquo;adjonction d&rsquo;une couche d&rsquo;annotation textuelle directe par geom_text(aes(label = n)) permet d&rsquo;inscrire le chiffre exact de la fr\u00e9quence au c\u0153ur m\u00eame de chaque pav\u00e9 thermique. Le lecteur b\u00e9n\u00e9ficie ainsi d&rsquo;une double grille de lecture synoptique : la couleur communique instantan\u00e9ment la topographie globale des concentrations de patients, tandis que les valeurs num\u00e9riques incrust\u00e9es fournissent la pr\u00e9cision chirurgicale n\u00e9cessaire \u00e0 l&rsquo;analyse fine. Ce mariage graphique entre la rigueur tabulaire de dplyr et la puissance esth\u00e9tique de ggplot2 constitue le sommet de l&rsquo;analyse exploratoire moderne.<\/p>\n<h2>11. Optimisation, robustesse et programmation de fonctions sur mesure<\/h2>\n<h3>11.1 Cr\u00e9ation d&rsquo;une fonction personnalis\u00e9e d&rsquo;analyse crois\u00e9e r\u00e9utilisable<\/h3>\n<p>Dans les laboratoires de recherche clinique ou les cellules d&rsquo;\u00e9valuation psychom\u00e9trique, les analystes sont perp\u00e9tuellement confront\u00e9s au besoin d&rsquo;it\u00e9rer des op\u00e9rations identiques sur des dizaines de paires de variables distinctes \u00e0 travers des cohortes multiples. R\u00e9\u00e9crire ou copier-coller inlassablement le pipeline count() %>% pivot_wider() constitue une violation flagrante du principe cardinal de l&rsquo;ing\u00e9nierie logicielle DRY (Don&rsquo;t Repeat Yourself), multipliant les opportunit\u00e9s d&rsquo;introduire des erreurs de typographie lors de la mise \u00e0 jour des noms de variables. Il devient d\u00e8s lors indispensable d&rsquo;encapsuler cette machinerie statistique au sein d&rsquo;une fonction R personnalis\u00e9e, g\u00e9n\u00e9rique et robuste.<\/p>\n<p>Cependant, la programmation de fonctions englobant des verbes de dplyr se heurte \u00e0 une sp\u00e9cificit\u00e9 technique fondamentale du Tidyverse : l&rsquo;\u00e9valuation non standard (Non-Standard Evaluation ou NSE). Dans une session R interactive, nous sp\u00e9cifions les noms de variables sans guillemets (comme count(Groupe, Remission)), ce qui permet une syntaxe remarquablement fluide mais emp\u00eache une fonction personnalis\u00e9e classique d&rsquo;interpr\u00e9ter ces symboles sans que R ne cherche pr\u00e9matur\u00e9ment une variable globale inexistante dans l&rsquo;environnement de travail. Pour contourner cet \u00e9cueil architectural, le syst\u00e8me de m\u00e9ta-programmation du Tidyverse (rlang) a formalis\u00e9 l&rsquo;op\u00e9rateur d&rsquo;injection syntaxique souvent qualifi\u00e9 d&#8217;embrassement ou de doubles accolades : {{ }} (curly-curly).<\/p>\n<p>En mobilisant cet op\u00e9rateur idiomatique, nous pouvons \u00e9crire une fonction g\u00e9n\u00e9rique d&rsquo;une puissance totale :<\/p>\n<p>creer_tableau_croise <- function(data, ligne, colonne) {<br \/>\n&nbsp;&nbsp;data %>%<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;count({{ ligne }}, {{ colonne }}) %>%<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;pivot_wider(names_from = {{ colonne }}, values_from = n, values_fill = 0)<br \/>\n}<\/p>\n<p>Cette encapsulation \u00e9l\u00e9gante accepte n&rsquo;importe quel data frame en entr\u00e9e, capture les variables pass\u00e9es sans guillemets, ex\u00e9cute le comptage d&rsquo;occurrences, applique le pivotement horizontal en comblant syst\u00e9matiquement les cellules vides par des z\u00e9ros, et renvoie un tibble parfaitement calibr\u00e9. Pour immuniser notre fonction contre des usages erron\u00e9s, l&rsquo;adjonction d&rsquo;assertions de contr\u00f4le d\u00e9fensives \u2014 v\u00e9rifiant par exemple que l&rsquo;objet en entr\u00e9e est bien un cadre de donn\u00e9es et que les colonnes sp\u00e9cifi\u00e9es appartiennent bien \u00e0 l&rsquo;espace factoriel attendu \u2014 ach\u00e8ve de conf\u00e9rer \u00e0 cet outil une robustesse de niveau industriel.<\/p>\n<h3>11.2 Performance computationnelle sur bases de donn\u00e9es psychom\u00e9triques massives<\/h3>\n<p>\u00c0 mesure que les sciences cognitives et le recueil de donn\u00e9es cliniques int\u00e8grent l&rsquo;\u00e8re des m\u00e9gadonn\u00e9es (Big Data) \u2014 via les capteurs passifs des smartphones, les bases de donn\u00e9es hospitali\u00e8res informatis\u00e9es ou les cohortes \u00e9pid\u00e9miologiques nationales comptant des millions de r\u00e9pondants \u2014, la consommation de m\u00e9moire et les temps de calcul deviennent des crit\u00e8res s\u00e9lectifs critiques. Si dplyr propose une interface d&rsquo;une ergonomie exemplaire, il importe d&rsquo;\u00e9valuer son comportement asymptotique face \u00e0 des approches vectoris\u00e9es natives ou des moteurs concurrents ultra-rapides comme <a rel=\"noopener noreferrer\" href=\"https:\/\/r-datatable.com\">data.table<\/a>.<\/p>\n<p>Des analyses comparatives de performance (benchmarks d&rsquo;ex\u00e9cution) men\u00e9es sur des bases d\u00e9passant les dix millions d&rsquo;observations r\u00e9v\u00e8lent que l&rsquo;architecture moderne de dplyr tient remarquablement le choc gr\u00e2ce \u00e0 son moteur d&rsquo;agr\u00e9gation \u00e9crit en C++. N\u00e9anmoins, sur des tables de contingence impliquant des facteurs \u00e0 tr\u00e8s haute cardinalit\u00e9 (c&rsquo;est-\u00e0-dire comportant des milliers de modalit\u00e9s distinctes crois\u00e9es, comme des identifiants g\u00e9ographiques pr\u00e9cis ou des codes diagnostics CIM-11 fins), l&rsquo;op\u00e9ration de pivotement g\u00e9om\u00e9trique op\u00e9r\u00e9e par pivot_wider() peut induire une explosion de l&#8217;empreinte en m\u00e9moire vive. En effet, cr\u00e9er une matrice creuse de dizaines de milliers de colonnes sous forme de tibble standard g\u00e9n\u00e8re des surco\u00fbts d&rsquo;allocation consid\u00e9rables au sein de R.<\/p>\n<p>Pour optimiser le traitement de telles cohortes titanesques sans renoncer \u00e0 la syntaxe claire de dplyr, plusieurs strat\u00e9gies d&rsquo;ing\u00e9nierie peuvent \u00eatre d\u00e9ploy\u00e9es. L&rsquo;utilisation en amont du paquet <a rel=\"noopener noreferrer\" href=\"https:\/\/arrow.apache.org\/docs\/r\/\">arrow<\/a> ou la connexion directe de dplyr \u00e0 des bases de donn\u00e9es SQL via dbplyr permet de d\u00e9l\u00e9guer l&rsquo;int\u00e9gralit\u00e9 du calcul d&rsquo;agr\u00e9gation et de d\u00e9nombrement directement au moteur de base de donn\u00e9es relationnel, ne rapatriant dans la m\u00e9moire de travail locale de R que le r\u00e9sultat condens\u00e9 de petite taille indispensable \u00e0 la confection du tableau final. De surcro\u00eet, le recours syst\u00e9matique aux facteurs sous-jacents entiers plut\u00f4t qu&rsquo;\u00e0 de longues cha\u00eenes de caract\u00e8res textuelles compresse drastiquement la consommation m\u00e9moire, garantissant une reproductibilit\u00e9 sans ralentissement mat\u00e9riel m\u00eame sur des stations de travail standards.<\/p>\n<h2>12. \u00c9tude de cas empirique : protocole d&rsquo;intervention en psychologie clinique<\/h2>\n<h3>12.1 Pr\u00e9sentation du protocole et mod\u00e9lisation des variables de l&rsquo;\u00e9tude<\/h3>\n<p>Pour couronner ce trait\u00e9 m\u00e9thodologique par une d\u00e9monstration int\u00e9gr\u00e9e et d\u00e9finitive, nous allons d\u00e9ployer un cas d&rsquo;\u00e9cole empirique complet, repr\u00e9sentatif d&rsquo;une publication scientifique d&rsquo;envergure en psychologie clinique interventionnelle. Consid\u00e9rons un essai prospectif multicentrique con\u00e7u pour \u00e9valuer l&rsquo;observance th\u00e9rapeutique et l&rsquo;efficacit\u00e9 d&rsquo;un programme d&rsquo;intervention psycho\u00e9ducative chez des patients diagnostiqu\u00e9s avec des troubles de l&rsquo;humeur. La cohorte finale r\u00e9unit 500 participants, suivis rigoureusement sur une p\u00e9riode de douze mois au sein de quatre centres hospitaliers universitaires partenaires.<\/p>\n<p>Le jeu de donn\u00e9es comprend quatre variables cl\u00e9s pr\u00e9cis\u00e9ment op\u00e9rationnalis\u00e9es selon les standards nosologiques internationaux :<\/p>\n<ul>\n<li><strong>Diagnostic<\/strong> : L&rsquo;orientation diagnostique psychiatrique principale, cat\u00e9goris\u00e9e en trois entit\u00e9s cliniques mutuellement exclusives : Trouble D\u00e9pressif Majeur (TDM), Trouble Bipolaire de type II (TB-II), et Trouble Anxieux G\u00e9n\u00e9ralis\u00e9 (TAG).<\/li>\n<li><strong>Intervention<\/strong> : La modalit\u00e9 de prise en charge attribu\u00e9e al\u00e9atoirement : Psycho\u00e9ducation Num\u00e9rique Standardis\u00e9e (PNS), Th\u00e9rapie de Soutien en Pr\u00e9sentiel (TSP), ou Soins Usuels Contr\u00f4l\u00e9s (SUC).<\/li>\n<li><strong>Adhesion<\/strong> : L&rsquo;observance th\u00e9rapeutique globale au terme du programme, dichotomis\u00e9e selon une \u00e9chelle valid\u00e9e en Observance Optimale versus Rupture Th\u00e9rapeutique.<\/li>\n<li><strong>Evolution<\/strong> : L&rsquo;issue clinique globale objectiv\u00e9e par des \u00e9valuateurs ind\u00e9pendants en aveugle, cod\u00e9e sous forme ordinale : Aggravation, Stabilisation, R\u00e9mission Partielle, R\u00e9mission Compl\u00e8te.<\/li>\n<\/ul>\n<p>L&rsquo;objectif de l&rsquo;investigation est d&rsquo;analyser formellement la distribution conjointe de l&rsquo;adh\u00e9sion th\u00e9rapeutique et de l&rsquo;\u00e9volution clinique en fonction de l&rsquo;orientation diagnostique d&rsquo;une part, et de v\u00e9rifier si la modalit\u00e9 d&rsquo;intervention rompt significativement les sch\u00e9mas d&rsquo;abandon de soins chez les profils les plus vuln\u00e9rables. L&rsquo;hypoth\u00e8se nulle (<span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span>) postule une ind\u00e9pendance stochastique parfaite entre l&rsquo;appartenance nosologique et la propension \u00e0 l&rsquo;observance th\u00e9rapeutique selon les bras d&rsquo;intervention.<\/p>\n<h3>12.2 Ex\u00e9cution compl\u00e8te du pipeline dplyr et publication des r\u00e9sultats<\/h3>\n<p>L&rsquo;ex\u00e9cution de cette analyse m\u00e9thodologique mobilise l&rsquo;int\u00e9gralit\u00e9 des concepts th\u00e9oriques et syntaxiques d\u00e9cortiqu\u00e9s au fil des sections pr\u00e9c\u00e9dentes. Le pipeline d\u00e9bute par le chargement concert\u00e9 des biblioth\u00e8ques fondamentales \u2014 dplyr, tidyr, scales, et janitor \u2014, garantissant que chaque composant fonctionnel est imm\u00e9diatement disponible dans l&rsquo;environnement d&rsquo;ex\u00e9cution. Nous simulons le cadre empirique en param\u00e9trant rigoureusement les distributions de probabilit\u00e9s conditionnelles pour refl\u00e9ter la r\u00e9alit\u00e9 du terrain : une attrition sup\u00e9rieure attendue dans le bras digital chez les patients d\u00e9pressifs s\u00e9v\u00e8res, mais un engagement d\u00e9cupl\u00e9 dans les th\u00e9rapies en pr\u00e9sentiel.<\/p>\n<p>Le script d&rsquo;analyse encha\u00eene ensuite la s\u00e9quence d&rsquo;op\u00e9rations dans un flux continu d&rsquo;une parfaite lisibilit\u00e9 :<\/p>\n<p>tableau_clinique_final <- cohorte_clinique %>%<br \/>\n&nbsp;&nbsp;filter(!is.na(Diagnostic) &#038; !is.na(Adhesion)) %>%<br \/>\n&nbsp;&nbsp;count(Diagnostic, Intervention, Adhesion) %>%<br \/>\n&nbsp;&nbsp;mutate(Proportion = n \/ sum(n), .by = c(Diagnostic, Intervention)) %>%<br \/>\n&nbsp;&nbsp;mutate(Cellule_Format = paste0(n, \u00a0\u00bb (\u00ab\u00a0, scales::percent(Proportion, accuracy = 0.1), \u00ab\u00a0)\u00a0\u00bb)) %>%<br \/>\n&nbsp;&nbsp;select(-n, -Proportion) %>%<br \/>\n&nbsp;&nbsp;pivot_wider(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;names_from = Adhesion,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;values_from = Cellule_Format,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;values_fill = \u00ab\u00a00 (0.0%)\u00a0\u00bb<br \/>\n&nbsp;&nbsp;)<\/p>\n<p>L&rsquo;examen minutieux de cette s\u00e9quence met en \u00e9vidence la puissance de transformation du Tidyverse. En une dizaine de lignes d\u00e9claratives, les donn\u00e9es brutes ont \u00e9t\u00e9 assainies des \u00e9ventuelles valeurs manquantes, comptabilis\u00e9es au niveau de granularit\u00e9 le plus fin, converties en pourcentages conditionnels intra-groupes, puis fusionn\u00e9es sous la forme universelle pr\u00e9conis\u00e9e par les manuels de publication m\u00e9dicale : \u00ab Effectif brut (Pourcentage marginal) \u00bb. L&rsquo;argument values_fill s\u00e9curise les combinaisons creuses en assignant une \u00e9tiquette explicite de z\u00e9ro pour cent, interdisant toute ambigu\u00eft\u00e9 lors de la lecture.<\/p>\n<p>Le r\u00e9sultat final imprim\u00e9 dans la console ou export\u00e9 vers un g\u00e9n\u00e9rateur de rapports dynamiques (<a rel=\"noopener noreferrer\" href=\"https:\/\/quarto.org\/\">Quarto<\/a> ou R Markdown) prend l&rsquo;aspect d&rsquo;un tableau parfaitement poli, pr\u00eat pour l&rsquo;int\u00e9gration directe au sein du manuscrit soumis \u00e0 publication. Les lignes d\u00e9clinent de fa\u00e7on structur\u00e9e chaque sous-groupe diagnostique subdivis\u00e9 par ses bras th\u00e9rapeutiques, tandis que les deux colonnes d&rsquo;observance permettent une comparaison clinique imm\u00e9diate de l&rsquo;impact des prises en charge. En aval, l&rsquo;extraction de ces donn\u00e9es pour alimenter un test d&rsquo;ind\u00e9pendance de Cochran-Mantel-Haenszel confirme la rupture de l&rsquo;hypoth\u00e8se nulle ($p < 0.001$), attestant que la psycho\u00e9ducation pr\u00e9sentielle prot\u00e8ge massivement contre la rupture de soins comparativement aux outils num\u00e9riques chez les sujets atteints de troubles bipolaires.<\/p>\n<p>En synth\u00e8se, l&rsquo;exploitation syst\u00e9matique de dplyr et du Tidyverse pour la cr\u00e9ation et le traitement des tableaux crois\u00e9s transcende la simple commodit\u00e9 informatique. Elle incarne un v\u00e9ritable changement de paradigme m\u00e9thodologique, o\u00f9 la fluidit\u00e9 syntaxique renforce la rigueur intellectuelle du chercheur. En unifiant la manipulation de donn\u00e9es qualitatives, l&rsquo;analyse inf\u00e9rentielle et la visualisation expressive sous une grammaire logique coh\u00e9rente, le Tidyverse dote les sciences psychologiques et m\u00e9dicales d&rsquo;un levier sans \u00e9quivalent pour garantir l&rsquo;exactitude, la transparence et la p\u00e9rennit\u00e9 de leurs d\u00e9couvertes scientifiques.<\/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>Cochran, W. G. (1954). Some methods for strengthening the common <span class=\"arabpsy-math-inline\" data-latex=\"\\chi^2\">$\\chi^2$<\/span> tests. <em>Biometrics<\/em>, 10(4), 417\u2013451. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/3001616\">https:\/\/doi.org\/10.2307\/3001616<\/a><\/li>\n<li>Firke, S. (2023). <em>janitor: Simple Tools for Examining and Cleaning Dirty Data<\/em> (R package version 2.2.0). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=janitor\">https:\/\/CRAN.R-project.org\/package=janitor<\/a><\/li>\n<li>R Core Team. (2024). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/li>\n<li>Wickham, H. (2014). Tidy data. <em>Journal of Statistical Software<\/em>, 59(10), 1\u201323. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.18637\/jss.v059.i10\">https:\/\/doi.org\/10.18637\/jss.v059.i10<\/a><\/li>\n<li>Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., Fran\u00e7ois, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., Pedersen, T. L., Miller, E., Bache, S. M., M\u00fcller, K., Ooms, J., Robinson, D., Seidel, D. P., Spinu, V., \u2026 Yutani, H. (2019). Welcome to the Tidyverse. <em>Journal of Open Source Software<\/em>, 4(43), 1686. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.01686\">https:\/\/doi.org\/10.21105\/joss.01686<\/a><\/li>\n<li>Wickham, H., Fran\u00e7ois, R., Henry, L., M\u00fcller, K., &#038; Vaughan, D. (2023). <em>dplyr: A Grammar of Data Manipulation<\/em> (R package version 1.1.4). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=dplyr\">https:\/\/CRAN.R-project.org\/package=dplyr<\/a><\/li>\n<li>Wickham, H., &#038; Girlich, M. (2023). <em>tidyr: Tidy Messy Data<\/em> (R package version 1.3.1). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=tidyr\">https:\/\/CRAN.R-project.org\/package=tidyr<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide m\u00e9thodologique complet pour concevoir, interpr\u00e9ter et formater des tableaux crois\u00e9s sous R \u00e0 l&rsquo;aide des packages dplyr et tidyr en psychologie.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,6098],"tags":[2690,16,2658,6099,3345],"class_list":["post-4126","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-psychologie-cognitive-et-quantitative","tag-dplyr","tag-psychometrie","tag-r","tag-tableau-croise","tag-tidyr"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4126","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=4126"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4126\/revisions"}],"predecessor-version":[{"id":16595,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4126\/revisions\/16595"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}