presentacion - tabla contenido arcgis
Transponer un marco de datos (3)
Puede usar la función de transpose
desde la biblioteca data.table
. Solución simple y rápida que mantiene numeric
valores numeric
como numeric
.
library(data.table)
# get data
data("mtcars")
# transpose
t_mtcars <- transpose(mtcars)
# get row and colnames in order
colnames(t_mtcars) <- rownames(mtcars)
rownames(t_mtcars) <- colnames(mtcars)
Necesito transponer un marco de datos grande y entonces 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.
Intenté con la función col.names()
pero no obtuve lo que necesito.
¿Tienes alguna sugerencia?
EDITAR
¡¡¡Gracias por tu sugerencia!!! Utilizá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 factores ....
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 números como números:
# 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
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))