2015-12-24 4 views
3

У меня есть данные, что выглядит какнужно преобразовать столбцы в строки в R

a  b  c 
1  5  4 
3  6  1 
2  5  3 

Я хочу, чтобы преобразовать его, чтобы преобразовать все столбцы в строки и хочу выход, как

r1  r2  r3  r4 
a  1  3  2 
b  5  6  5 
c  4  1  3 

Спасибо аванс

+1

Подсказка: транспонирование матрицы. –

+1

Подсказка: .................... 't' ... для которой существуют как матричные, так и методы dataframe. –

ответ

6

Мы можем перенести набор данных и преобразовать в data.frame с первым столбцом в виде имен строк.

m1 <- t(df1) 
d2 <- data.frame(r1= row.names(m1), m1, row.names=NULL) 

EDIT: Включен row.names аргумент в data.frame вызова (от комментария @Richard Скривен в)

Или, как упоминалось @Ananda Mahto, мы можем использовать names(df1) для создания столбца 'R1', тем самым пропуская создание объекта в глобальной среде.

d2 <- data.frame(r1=names(df1), t(df1)) 

Или другой вариант melt/dcast. Мы преобразуем data.frame в matrix, melt в формат «long», а затем dcast в «широкий» формат.

library(reshape2) 
dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value') 
+3

Поскольку «имена» «df1» станут вашим «r1», вы можете пропустить создание 'm1'. – A5C1D2H2I1M1N2O1R2T1

+1

Большое спасибо. Это действительно помогло. –