J'ai besoin de transposer une grande trame de données et j'ai donc utilisé:
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
Voici ce que j'obtiens:
df.aree[c(1:5),c(1:5)]
10428 10760 12148 11865
name M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
Mon problème est les nouveaux noms de colonne (10428, 10760, 12148, 11865) que je dois éliminer car je dois utiliser la première ligne comme noms de colonne.
J'ai essayé avec la col.names()
fonction mais je n'ai pas obtenu ce dont j'avais besoin.
Avez-vous une suggestion?
ÉDITER
Merci pour votre suggestion !!! En l'utilisant, j'obtiens:
df.aree[c(1:5),c(1:5)]
M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
GS44.A 1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04
Maintenant, je dois transformer les noms de lignes (GS ..) dans une colonne de facteurs ....
colnames(df.aree)<-df.aree[1,];df.aree<-df.aree[2:nrow(df.aree),]
?t
la trame de données est également assez inefficace. Si vous le pouvez, utilisez la matrice.Réponses:
Vous feriez mieux de ne pas transposer le data.frame tant que la colonne de nom y est - toutes les valeurs numériques seront alors transformées en chaînes!
Voici une solution qui conserve les nombres sous forme de nombres:
la source
la source
Vous pouvez utiliser la
transpose
fonction de ladata.table
bibliothèque. Solution simple et rapide qui conserve lesnumeric
valeurs commenumeric
.la source
setnames(t_mtcars, rownames(mtcars))
serait la manièredata.table
de définir des noms sur une table de données (et si vous utilisez undata.table
objet, vous nerownames
Profitez de
as.matrix
:la source