Necesito transponer un marco de datos grande y por eso usé:
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
Esto es lo que obtengo:
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
Mi problema son los nuevos nombres de columna (10428, 10760, 12148, 11865) que necesito eliminar porque necesito usar la primera fila como nombres de columna.
Probé con la col.names()
función pero no obtuve lo que necesito.
¿Tienes alguna sugerencia?
EDITAR
¡¡¡Gracias por tu sugerencia!!! Usándolo obtengo:
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
Ahora necesito transformar los nombres de las filas (GS ..) en una columna de factor ....
colnames(df.aree)<-df.aree[1,];df.aree<-df.aree[2:nrow(df.aree),]
?t
ing marco de datos también es bastante ineficiente. Si puede, use matrix.Respuestas:
Será mejor que no transponga el data.frame mientras la columna de nombre está en él; ¡todos los valores numéricos se convertirán en cadenas!
Aquí hay una solución que mantiene los números como números:
fuente
fuente
Puede utilizar la
transpose
función de ladata.table
biblioteca. Solución sencilla y rápida que mantiene losnumeric
valores comonumeric
.fuente
setnames(t_mtcars, rownames(mtcars))
sería la formadata.table
de establecer nombres en una tabla de datos (y si usa undata.table
objeto, no establecería elrownames
)Aprovecha
as.matrix
:fuente