131 votes

R-Transposition d'un cadre de données

J'ai besoin de transposer un grand bloc de données et j'ai donc utilisé:

df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)

C'est ce que j'obtient:

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 le nouveau nom de la colonne(10428, 10760, 12148, 11865) que j'ai besoin d'éliminer parce que j'ai besoin d'utiliser la première ligne comme noms de colonne.

J'ai essayé avec col.names() fonction mais je n'ai pas d'obtenir ce dont j'ai besoin.

Avez-vous une suggestion?

MODIFIER

Merci pour votre suggestion!!! En l'utilisant j'ai l'obtenir:

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, j'ai besoin de transformer les noms de ligne(GS..) à un facteur de colonne....

133voto

Tommy Points 16323

Vous feriez mieux de ne pas transposer le nom data.frame tant que la colonne de nom y est insérée - toutes les valeurs numériques seront ensuite transformées en chaînes!

Voici une solution qui conserve les nombres sous forme de nombres:

 # first remember the names
n <- df.aree$name

# transpose all but the first column (name)
df.aree <- as.data.frame(t(df.aree[,-1]))
colnames(df.aree) <- n
df.aree$myfactor <- factor(row.names(df.aree))

str(df.aree) # Check the column types
 

50voto

Frank Points 1506
df.aree <- as.data.frame(t(df.aree))
colnames(df.aree) <- df.aree[1, ]
df.aree <- df.aree[-1, ]
df.aree$myfactor <- factor(row.names(df.aree))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X