Транспонирование кадра данных с сохранением первого столбца в качестве заголовка - PullRequest
22 голосов
/ 01 ноября 2011

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

mydf <- data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))

Я хочу транспонировать кадр данных и сохранить столбец 1 (A) в качестве заголовка столбца (буква [1:10]) в качестве имен переменных. Ниже приводятся пробные версии неудачных кодов.

tmydf = data.frame(t(mydf))
names(tmydf) <- tmydf[1,]

Спасибо;

Ответы [ 3 ]

49 голосов
/ 01 ноября 2011

Вот один из способов

tmydf = setNames(data.frame(t(mydf[,-1])), mydf[,1])
6 голосов
/ 01 ноября 2011

Что-то вроде этого возможно:

tmp <- as.data.frame(t(mydf[,-1]))
> colnames(tmp) <- mydf$A
> tmp
    a  b  c  d  e  f  g  h  i  j
M1 11 12 13 14 15 16 17 18 19 20
M2 31 32 33 34 35 36 37 38 39 40
M3 41 42 43 44 45 46 47 48 49 50
1 голос
/ 16 августа 2017

Data.table variante от Ramnath с указанием в строке требуемого имени переменной.

mydf <- data.table(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))
tmydf <- setNames(data.table(t(mydf[,-"A"])), mydf[["A"]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...