R markdown tableaux lisibles

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Jérémy Jachacz
Messages : 128
Enregistré le : 15 Avr 2014, 12:56

R markdown tableaux lisibles

Messagepar Jérémy Jachacz » 24 Jan 2019, 13:24

Bonjour,

J'ai manipuler des données avec les packages dplyr, tidyr.. etc afin d’agréger des données et de formater un tableau.
J'ai donc un tableau au format :

Code : Tout sélectionner

"grouped_df" "tbl_df"     "tbl"        "data.frame"

Malheureusement dans R on ne peut pas avoir un affichage type TCD d'excel, c'est-à-dire :
visualisation (1)

Code : Tout sélectionner

colonne 1  colonne 2

facteur 1  facteur 1
           facteur 2
           facteur 3
           
facteur 2  facteur 1
           facteur 2
           facteur 3

à la place de ceci :
visualisation (2)

Code : Tout sélectionner

colonne 1  colonne 2

facteur 1  facteur 1
facteur 1  facteur 2
facteur 1  facteur 3
           
facteur 2  facteur 1
facteur 2  facteur 2
facteur 2  facteur 3

La finalité c'est d'avoir un rapport markdown (format pas encore défini, html ou pdf probablement).
J'aimerai dans ce rapport afficher, à partir d'un df (visualisation 2), le tableau "épuré" (visualisation 1).

Bonne journée,
Merci
Statisticien (69)

Pierre-Yves Berrard
Messages : 650
Enregistré le : 12 Jan 2016, 23:30

Re: R markdown tableaux lisibles

Messagepar Pierre-Yves Berrard » 24 Jan 2019, 13:33

Bonjour,

Tu peux mettre à blanc les valeurs redondantes comme ceci :

Code : Tout sélectionner

donnees %>%
  group_by(colonne1) %>%
  mutate(
    colonne1 = c(colonne1[1], rep("", n() - 1))
  )
PY

Jérémy Jachacz
Messages : 128
Enregistré le : 15 Avr 2014, 12:56

Re: R markdown tableaux lisibles

Messagepar Jérémy Jachacz » 24 Jan 2019, 14:14

Bonjour,

Merci, j'ai adapté la solution proposé car j'ai 2 colonnes à "épurer" :

Code : Tout sélectionner

donnees %>%
  group_by(colonne1,colonne2) %>%
  mutate(
    colonne1_m = c(colonne1[1], rep("", n() - 1)),
    colonne2_m = c(colonne2[1], rep("", n() - 1))
  )


J'obtiens presque le résultats voulu.
en partant de quelque chose comme ça :

Code : Tout sélectionner

colonne 1  colonne 2

facteur 1  facteur 1
facteur 1  facteur 1
facteur 1  facteur 1
facteur 1  facteur 2
facteur 1  facteur 2
facteur 1  facteur 2
facteur 1  facteur 3
facteur 1  facteur 3
facteur 2  facteur 1
...


j'obtiens :

Code : Tout sélectionner

colonne 1  colonne 2

facteur 1  facteur 1


facteur 1  facteur 2


facteur 1  facteur 3

facteur 2  facteur 1
...


Et je souhaiterai aller plus loin en obtenant ceci :

j'obtiens :

Code : Tout sélectionner

colonne 1  colonne 2

facteur 1  facteur 1


           facteur 2


           facteur 3
           
facteur 2  facteur 1
...


D'autre part, c'est une première solution qui fonctionne, mais je souhaitais aussi savoir si c'est possible d’obtenir ceci à partir de fonction d'affichage de tableaux spécifique à markdown ? ou via HTML, LateX ?

PS : il faut créer de nouvelles variables dans le mutate() car on ne peut pas modifier des variables grouped.

Merci
Jérémy
Statisticien (69)

Pierre-Yves Berrard
Messages : 650
Enregistré le : 12 Jan 2016, 23:30

Re: R markdown tableaux lisibles

Messagepar Pierre-Yves Berrard » 24 Jan 2019, 14:20

Il faut faire 2 group_by différenciés :

Code : Tout sélectionner

donnees %>% group_by(colonne1) %>% mutate(colonne1m=..) %>% group_by(colonne2) %>% mutate(colonne2m=..)

Pour la question sur la mise en forme, je te renvoie sur un sujet similaire que j'avais créé : viewtopic.php?t=8775
Malheureusement je n'avais pas réussi à faire ce que je voulais.
PY

Jérémy Jachacz
Messages : 128
Enregistré le : 15 Avr 2014, 12:56

Re: R markdown tableaux lisibles

Messagepar Jérémy Jachacz » 24 Jan 2019, 14:59

Arf oui,

Ton problème est du même genre que ce que je souhaite faire. Je trouve ça dommage qu'il n'y ait pas de fonctions qui existe sur le sujet.

En tout cas avec ta solution cela fonctionne, la version finale :

Code : Tout sélectionner

  donnees %>%
   # group premiere colonne   
      group_by(colonne1) %>%
      mutate(colonne1_m = c(colonne1[1], rep("", n() - 1))) %>%
     
   # group sur les 2 premieres sinon on aura que des vides dans la colonne 2, pour le 2eme facteur de la colonne 1
      group_by(colonne1,colonne2) %>%
      mutate(colonne2_m = c(colonne2[1], rep("", n() - 1))) %>%
 
    # reordonne le tableau, et supprime les colonnes initiales
      group_by(colonne1_m,colonne2_m) %>%
      select(colonne1_m,colonne2_m, everything(),-colonne1,-colonne2)


Si je trouve autre chose par la suite je le posterai..
Bonne journée.
Jérémy
Statisticien (69)

Mickael Canouil
Messages : 540
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: R markdown tableaux lisibles

Messagepar Mickael Canouil » 24 Jan 2019, 16:04

Bonjour,

je vous suggère les packages kableExtra (extension de la fonction knitr::kable) et le récent package gt.

Cordialement,
Mickaël

Jérémy Jachacz
Messages : 128
Enregistré le : 15 Avr 2014, 12:56

Re: R markdown tableaux lisibles

Messagepar Jérémy Jachacz » 24 Jan 2019, 16:26

Merci, je vais regarder ça !
Statisticien (69)

Pierre-Yves Berrard
Messages : 650
Enregistré le : 12 Jan 2016, 23:30

Re: R markdown tableaux lisibles

Messagepar Pierre-Yves Berrard » 24 Jan 2019, 17:17

Moi aussi !
PY

Jean-Daniel Morris
Messages : 20
Enregistré le : 22 Fév 2014, 14:32

Re: R markdown tableaux lisibles

Messagepar Jean-Daniel Morris » 28 Jan 2019, 18:11

Bonjour,

Pour faire suite au message de Mickael, je suggère l'excellentissime prise en main

https://haozhu233.github.io/kableExtra/awesome_table_in_html.html

C'est en anglais, mais chaque bout de code est illustré du tableau produit

Jean-Daniel


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité