Транспонирование кадра данных

Мне нужно перенести большой кадр данных, и поэтому я использовал:

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

Это то, что я получаю:

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    

Моя проблема - это имена новых столбцов (10428, 10760, 12148, 11865), которые мне нужно устранить, потому что мне нужно использовать первую строку в качестве имен столбцов.

Я попытался с функцией col.names(), но я не получил то, что мне нужно.

Есть ли у вас какие-либо предложения?

ИЗМЕНИТЬ

Спасибо за ваше предложение!!! Используя его, я получаю:

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

Теперь мне нужно преобразовать имена строк (GS..) в столбце факторов....

Ответ 1

Лучше не переставлять data.frame, в то время как столбец имени находится в нем - все числовые значения затем превращаются в строки!

Здесь решение, которое хранит числа как числа:

# 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

Ответ 2

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))

Ответ 3

Вы можете использовать функцию transpose в библиотеке data.table. Простое и быстрое решение, которое сохраняет numeric значения как 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)