utilitR icon indicating copy to clipboard operation
utilitR copied to clipboard

Proposition de fiche "Produire des tableaux de diffusion"

Open JulienBlasco opened this issue 3 years ago • 8 comments

Bonjour à toutes et à tous,

Il me semble qu'il serait utile d'ajouter une section au chapitre "Produire des sorties avec R" centrée sur les tableaux de diffusion. Par là, on entend les tableaux issus de traitements statistiques destinés à la lecture par l'humain (sauf si vous avez une meilleure définition). A la différence des tables manipulées dans des traitements statistiques, ils ne respectent pas forcément la règle "une ligne = une observation" et "une colonne = une variable", ils contiennent des éléments de formatage, des titres/notes etc. Leurs usages sont multiples : notes internes, publications, présentations, sites web, etc.

Pour ouvrir la discussion, j'ai déjà réfléchi à une ébauche de plan (à discuter) :

  1. Qu'est-ce qu'un tableau de diffusion
    1. Usages et types de sorties possibles
    2. Différences avec un tableau de données "tidy"
  2. Passer d'un tableau "tidy" à un tableau de diffusion
    1. Formatage des tableaux
      1. Label des variables et des modalités
      2. Formatage des nombres
      3. Titres et notes de lecture
      4. En-têtes de lignes et de colonnes
      5. Fusionner des cellules
    2. Synthétiser des résultats
      1. Ajouter des lignes ou des colonnes "Ensemble"
      2. Stats "par groupes"
      3. Régressions logistiques
  3. Diffuser son tableau
    1. Intégration à R Markdown
    2. Export en Excel/ODS
    3. Autres exports

Si l'idée vous paraît bonne, alors je veux bien participer à la rédaction d'une telle fiche. Je serais cependant ravi de travailler avec quelqu'un qui a déjà réfléchi au sujet et/ou a déjà contribué à la rédaction d'utilitR.

Il reste la question du package : si je comprends bien la ligne éditoriale d'utilitR, il s'agirait de choisir un package et de s'y tenir tout au long de la fiche. Là-dessus, j'ouvre le débat et m'en remets à votre expérience et à vos recommandations.

JulienBlasco avatar Nov 15 '22 18:11 JulienBlasco

Super idée !

De ce que j'ai pu expérimenter de mon côté, il y a 2 packages qui se détachent en ce qui concerne les tableaux de diffusion : {gt} et {flextable}

Si on met en application les règles de décision d'utilitr pour choisir un package et avoir quelques indices :

gt flextable
Mainteneurs Posit et notamment Richard Iannone ardata et notamment David Gohel
Téléchargements 45k par mois 44k par mois
Etoiles 1,6k 437
Issues et PR 716 issues et 374 PR 424 issues et 39 PR

Autre point sur {gt}, c'est l'existence d'autres packages comme par exemple {gtExtras} qui ajoutent d'autres fonctionnalités.
Une petite remarque aussi, aucun de ces 2 packages ne propose une exportation native en Excel/ODS (cf.3.ii du plan de Julien) ce qui peut être assez demandé par les utilisateurs.

Peut-être que la fiche peut présenter les 2 (même si cela demande plus de travail) ? Et il y a bien sûr d'autres packages à considérer, par exemple {kableextra} Ce n'est qu'un début de discussion...

ddotta avatar Nov 16 '22 08:11 ddotta

Merci pour ces infos Damien !

Les deux sont très intéressants. On peut également ajouter huxtable, qui est un peu plus confidentiel, mais a l'avantage de proposer un export natif en Excel.

La production d'excel/ods me semble indispensable, ne serait-ce que pour les chargés d'études à l'Insee ou en SSM qui doivent produire ce type de sortie pour leurs publications. Mais peut-être que ça demande une solution technique différente des autres tableaux de diffusion ?

JulienBlasco avatar Nov 17 '22 12:11 JulienBlasco

Je suis d'accord pour dire que la production d'excel/ODS reste très demandé dans la statistique publique....
Merci pour huxtable que je ne connaissais pas. En tout cas, les auteurs du package valident déjà notre choix initial de packages pour les tableaux de diffusion https://hughjonesd.github.io/huxtable/design-principles.html#comparing-huxtable-with-other-packages

ddotta avatar Nov 18 '22 07:11 ddotta

Merci beaucoup @JulienBlasco pour la suggestion très détaillée, et @ddotta pour les réactions. Cette fiche couvrirait un vrai manque dans utilitR, et je suis d'accord que la recommandation d'utilitR doit impérativement couvrir ODS/Excel.

Ceci dit, la bonne recommandation ne me semble pas claire à ce stade. Voici quelques réflexions issues de ma pratique de production de tableaux LaTeX, je serais content de connaître votre avis:

  • Il faut peut-être distinguer trois étapes de production des tableaux: 1/ la construction du tableau de résultats (les bonnes colonnes et les bonnes lignes, éventuellement avec des totaux et sous-totaux), 2/ la mise en forme du tableau (ajouter des lignes de texte dans le tableau, noms de colonnes, header/footer, gras/souligné/couleur), et 3/ l'exportation vers un autre format. Exemple: lorsque je fais des tableaux LaTeX, je fais 1/ en data.table (faisable aussi en arrow ou dplyr), et 2/ et 3/ avec scales, knitr et kableExtra.
  • En regardant la CRAN Task View sur la recherche reproductible (section Office), je constate qu'il n'y a apparemment que deux packages sérieux qui feraient les trois tâches: flextable et huxtable. Or, chacun de ces deux packages est développé par un seul contributeur => il y a un risque non négligeable que ces packages se retrouvent en déshérence. Est-ce rédhibitoire selon vous?
  • On peut envisager une autre solution: construire le tableau de résultat en dplyr ou data.table (tâche 1), puis l'exporter en Excel en customisant le fichier de sortie avec openxlsx (tâches 2 et 3). Il me semble que ce package est assez puissant pour modifier des Excel, et il a l'avantage d'être maintenu par plusieurs personnes. Est-ce que cela vous semble une piste à tester?
  • Remarque mineure: pensez-vous qu'il soit important d'ajouter LaTeX aux formats de sortie?

oliviermeslin avatar Dec 06 '22 07:12 oliviermeslin

Hello Olivier, merci pour tes remarques. 

Ton découpage des taches me parait pertinent. Il me semble qu’il est plus logique de considérer l’étape 1 « calcul de statistiques agrégées » comme le rôle des fonctions et packages de traitement statistique. Pour moi le monde des « tableaux de diffusion » ne commence vraiment qu’à partir des étapes 2 et 3 que tu décris (éventuellement on peut inclure dans 2 le calcul de lignes et de colonnes de totaux). 

Par ailleurs,  il semblerait qu’on ne trouvera pas de package qui permet l’export vers l’ensemble des formats possibles et imaginables. Je pense qu’on va être obligés de se diriger vers la recommandation d’un ensemble de propositions, selon les besoins. Et peut-être qu’il faudra proposer une solution maison pour la partie Excel ! Openxlsx propose en effet pas mal de possibilités. 

L’ajout de l’export en Latex est une bonne idée, même si les utilisateurs potentiels sont moins nombreux donc moins prioritaire je dirais (en tout cas dans la stat publique). 

Sur le fait de recommander un package à la maintenance fragile, il y a peut-être un compromis à trouver, je ne sais pas. Gt sera peut-être l’option la plus safe vu que c’est maintenu par RStudio.

JulienBlasco avatar Dec 08 '22 09:12 JulienBlasco

Salut,

  • Je confirme l'intérêt pour le Latex @oliviermeslin mais il me semble aussi que cela peut être traité dans un second temps ;
  • Effectivement la maintenance de huxtable et flextable pourraient être plus fragiles que gt compte-tenu du nombre de contributeurs et je suis d'accord avec @JulienBlasco que la recommandation devra porter sur un ensemble de packages pour cette fiche. Et on ne peut pas (à mon avis) ne pas y citer gt :slightly_smiling_face:
  • Pour Excel, je vous proposerais bien une proposition pour une solution maison. J'en utilise une dans mon équipe mais il y a pas mal de boulot pour l'adapter pour la rendre plus générique. Je le ferai à temps perdu après les fêtes dans ce repo.

ddotta avatar Dec 14 '22 07:12 ddotta

  • ok pour intégrer LaTeX à la table des matières, à voir comment cela s’intègre selon les packages utilisés. 
  • pour le choix du package, je propose de commencer à rédiger la fiche, en n’excluant aucun de ces trois packages. Peut-être qu’on verra au fur et à mesure si 1) il vaut mieux abandonner une des solutions, ou 2) elles sont complémentaires et on devra les utiliser alternativement, ou 3) elles ont assez d’atomes crochus pour couvrir les mêmes cas d’usage, et peut-être qu’on les présentera en parallèle à chaque section. 
  • pour Excel, j’avais également codé quelques fonctions maison à partir d’openxlsx. Je suis disposé à en discuter pour proposer une solution dans la fiche :)

JulienBlasco avatar Dec 14 '22 08:12 JulienBlasco

Merci @JulienBlasco pour le lien sur cette issue car effectivement, si on fait une fiche sur les stats desc, il faut qu'on se coordonne sur où finit l'une et où commence l'autre ! Il me semble quand même qu'il y a bien lieu d'en faire deux différentes.

maellefontaine2 avatar Nov 27 '23 15:11 maellefontaine2