transposer un tableau ligne par ligne

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

Sophie Dubois
Messages : 14
Enregistré le : 12 Mai 2014, 13:07

transposer un tableau ligne par ligne

Messagepar Sophie Dubois » 30 Sep 2014, 11:08

Bonjour,

J'ai besoin de transposer un tableau de ce type:

Nom X X.1 X.2 X.3
X001 Y345 Y673 Y837
X002 Y356 Y675 Y835 Y946
X003 Y347 Y576

en tableau de ce type:

Nom
X001 Y345
X001 Y673
X001 Y837
X002 Y356
X002 Y675
X002 Y835
X002 Y946
X003 Y347
X003 Y576

J'ai essayé d'y arrivé en appliquant ce script pour stocker les résultats de mes transpositions ligne par ligne dans une nouvelle matrice intermédiaire avec mes X001, X002, etc en colonnes et la liste de mes Y... correspondant; et je pensais ensuite empiler les colonnes de cette nouvelle matrice:

a étant l'objet contenant mon fichier initial,

res<-matrix(0,ncol=nrow(a),nrow=ncol(a)-1)

colnames(res)<- a$Nom
head(res)

for(i in 1:nrow(a)) {
res[i,1] <- t(a[i,])
}

Mais, j'obtiens ce message d'erreur, que je ne comprends pas vraiment:

[15] ERREUR:
le nombre d'objets à remplacer n'est pas multiple
de la taille du remplacement


Est-ce que quelqu'un peut m'aider avec cette manipulation de données?

Je vous remercie par avance!
Sophie

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 30 Sep 2014, 11:14

Bonjour,

Ce que tu cherches s'appelle passer d'un format large (wide) à un format long. Regarde la fonction melt de reshape2
un exemple ici :
http://www.r-bloggers.com/melt/

Nicolas

Sophie Dubois
Messages : 14
Enregistré le : 12 Mai 2014, 13:07

MERCI!!!

Messagepar Sophie Dubois » 30 Sep 2014, 12:37

Super, c'est exactement ça!
Merci vraiment beaucoup!!!!!!!

Après la fonction melt, je n'ai plus qu'à trier mon fichier selon la première colonne et j'obtiens exactement le fichier tel qu'il me le faut!!

Merciiiiiiiiiiiii

Bonne journée,

Sophie


Retourner vers « Questions en cours »

Qui est en ligne

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

cron