convertir list en data frame

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

Jean-Claude Inger
Messages : 135
Enregistré le : 06 Nov 2013, 13:43

convertir list en data frame

Messagepar Jean-Claude Inger » 31 Juil 2018, 12:38

Bonjour !

Je peine un peu pour quelque chose de sans doute très simple... après le traitement suivant :

Code : Tout sélectionner

res <- apply(df, 1, table)


J'obtiens une liste:

Code : Tout sélectionner

> str(res)
List of 5
 $ 49127: 'table' int [1:2(1d)] 16 3
  ..- attr(*, "dimnames")=List of 1
  .. ..$ : chr [1:2] "FALSE" "TRUE"
 $ 49128: 'table' int [1(1d)] 19
  ..- attr(*, "dimnames")=List of 1
  .. ..$ : chr "FALSE"
 $ 49129: 'table' int [1(1d)] 19
  ..- attr(*, "dimnames")=List of 1
  .. ..$ : chr "FALSE"
 $ 49134: 'table' int [1:2(1d)] 16 3
  ..- attr(*, "dimnames")=List of 1
  .. ..$ : chr [1:2] "FALSE" "TRUE"
 $ 49207: 'table' int [1:2(1d)] 17 2
  ..- attr(*, "dimnames")=List of 1
  .. ..$ : chr [1:2] "FALSE" "TRUE"


J'aimerais mettre ces résultats dans un data frame, qui donnerait donc ici un tableau à 5 lignes et deux colonnes, tel que :

Code : Tout sélectionner

ID   FALSE   TRUE
49127   16   3
49128   19   0
49129   19   0
49134   16   3
49207   17   2


J'explore des pistes du côté de unlist, mais je n'arrive pas à mes fins.

Merci pour votre aide !

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: convertir list en data frame

Messagepar Serge Rapenne » 31 Juil 2018, 13:43

Bonjour,

quel est la structure de ton df d'origine parce que :

Code : Tout sélectionner

dta<-data.frame(matrix(sample(c(TRUE,FALSE),10,replace=T),nrow=2))
> dta
     X1   X2   X3    X4    X5
1 FALSE TRUE TRUE  TRUE FALSE
2  TRUE TRUE TRUE FALSE  TRUE
> res <- apply(dta, 1, table)
> res
      [,1] [,2]
FALSE    2    1
TRUE     3    4

point de liste pour res, c'est ce que tu cherches à une transposition prêt.
Serge

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: convertir list en data frame

Messagepar Serge Rapenne » 31 Juil 2018, 13:52

Sinon une méthode classique pour transformer une liste en df, c'est de passer par do.call.

Par ex :

Code : Tout sélectionner

listDF <- vector(mode = "list", length = 3)
for (i in 1:3) {
  listDF[[i]] <- data.frame(a=sample(letters, 10, rep=T),
                                      b=rnorm(10), c=rnorm(10))
}
df <- do.call("rbind", listDF)


Serge

Jean-Claude Inger
Messages : 135
Enregistré le : 06 Nov 2013, 13:43

Re: convertir list en data frame

Messagepar Jean-Claude Inger » 31 Juil 2018, 13:56

Mon df est de cette forme:

Code : Tout sélectionner

'data.frame':   5 obs. of  19 variables:
 $ C1 : Factor w/ 4 levels "","S",..: 3 1 1 4 2
 $ C2 : Factor w/ 4 levels "","A",..: 2 1 1 3 4
 $ C3 : Factor w/ 3 levels "","C",..: 2 1 1 3 1
 


puis je fais:

Code : Tout sélectionner

test <- droplevels(test)
testT <- test != ""
res <- apply(testT, 1, table)

Jean-Claude Inger
Messages : 135
Enregistré le : 06 Nov 2013, 13:43

Re: convertir list en data frame

Messagepar Jean-Claude Inger » 31 Juil 2018, 13:57

mais je viens de tester, ta solution do.call marche nickel!
Merci beaucoup !!!!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité