Convertir un tableau croisé dynamique de rpivotTable en dataframe

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

Isaac Perrier
Messages : 4
Enregistré le : 06 Déc 2021, 14:26

Convertir un tableau croisé dynamique de rpivotTable en dataframe

Messagepar Isaac Perrier » 13 Juil 2022, 08:38

Bonjour à tous !

Savez-vous comment convertir un tableau croisé dynamique de rpivotTable en dataframe?

Le tableau croisé dynamique rpivotTable est le suivant :

Code : Tout sélectionner

TCD_Gaillard<-rpivotTable(data = tab_final_Gaillard_AVAL, rows = "Combinaison",cols="Taxon", vals = "Effectif",
                          aggregatorName = "Sum", rendererName = "Table",
                          width="100%", height="400px")


Et le rendu donne ça :
Image

Code : Tout sélectionner

> str(TCD_Gaillard)
List of 8
 $ x            :List of 4
  ..$ data     :'data.frame':   189957 obs. of  5 variables:
  .. ..$ Combinaison : chr [1:189957] "comb_ 1" "comb_ 1" "comb_ 1" "comb_ 1" ...
  .. ..$ Taxon       : chr [1:189957] "Baetidae" "Chironomidae" "Elmidae" "Gammaridae" ...
  .. ..$ Effectif    : int [1:189957] 148 313 47 197 6 2 159 12 30 151 ...
  .. ..$ Localisation: logi [1:189957] NA NA NA NA NA NA ...
  .. ..$ Exposition  : logi [1:189957] NA NA NA NA NA NA ...
  ..$ params   :List of 5
  .. ..$ rows          :List of 1
  .. .. ..$ : chr "Combinaison"
  .. ..$ cols          :List of 1
  .. .. ..$ : chr "Taxon"
  .. ..$ aggregatorName:List of 1
  .. .. ..$ : chr "Sum"
  .. ..$ vals          :List of 1
  .. .. ..$ : chr "Freq"
  .. ..$ rendererName  :List of 1
  .. .. ..$ : chr "Table"
  ..$ locale   : chr "en"
  ..$ subtotals: logi FALSE
 $ width        : chr "100%"
 $ height       : chr "400px"
 $ sizingPolicy :List of 6
  ..$ defaultWidth : NULL
  ..$ defaultHeight: NULL
  ..$ padding      : NULL
  ..$ viewer       :List of 6
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ padding      : NULL
  .. ..$ fill         : logi TRUE
  .. ..$ suppress     : logi FALSE
  .. ..$ paneHeight   : NULL
  ..$ browser      :List of 5
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ padding      : NULL
  .. ..$ fill         : logi FALSE
  .. ..$ external     : logi FALSE
  ..$ knitr        :List of 3
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ figure       : logi TRUE
 $ dependencies : NULL
 $ elementId    : NULL
 $ preRenderHook: NULL
 $ jsHooks      : list()
 - attr(*, "class")= chr [1:2] "rpivotTable" "htmlwidget"
 - attr(*, "package")= chr "rpivotTable"


Le dataframe source se présentant comme ceci :

Code : Tout sélectionner

> head(tab_final_Gaillard_AVAL)
  Combinaison        Taxon Effectif Localisation Exposition
1     comb_ 1     Baetidae      148           NA         NA
2     comb_ 1 Chironomidae      313           NA         NA
3     comb_ 1      Elmidae       47           NA         NA
4     comb_ 1   Gammaridae      197           NA         NA
5     comb_ 1 Hydracariens        6           NA         NA
6     comb_ 1  Hydraenidae        2           NA         NA
...     ...        ...        ...           ...         ...


Merci d'avance !

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Convertir un tableau croisé dynamique de rpivotTable en dataframe

Messagepar Logez Maxime » 13 Juil 2022, 09:45

Bonjour,

aucune idée avec cette librairie mais avec les fonctions de base tu peux essayer :

Code : Tout sélectionner

x1 <- xtabs(Effectif~ Combinaison + Taxon, tab_final_Gaillard_AVAL)
class(x1) <- "matrix"
as.data.frame(x1)

Une possibilité avec tidyr et dplyr :

Code : Tout sélectionner

tab_final_Gaillard_AVAL %>%
  group_by(Combinaison, Taxon) %>%
  summarise(Effectif = sum(Effectif)) %>%
  spread(key = Taxon, value = Effectif )

Cordialement,
Maxime

Isaac Perrier
Messages : 4
Enregistré le : 06 Déc 2021, 14:26

Re: Convertir un tableau croisé dynamique de rpivotTable en dataframe

Messagepar Isaac Perrier » 13 Juil 2022, 13:50

Logez Maxime a écrit :Bonjour,

Une possibilité avec tidyr et dplyr :

Code : Tout sélectionner

tab_final_Gaillard_AVAL %>%
  group_by(Combinaison, Taxon) %>%
  summarise(Effectif = sum(Effectif)) %>%
  spread(key = Taxon, value = Effectif )

Cordialement,
Maxime


Merci beaucoup, c'est vrai que ça fonctionne également de cette manière !


Retourner vers « Questions en cours »

Qui est en ligne

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