web-dev-qa-db-ja.com

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

前もって感謝します

6
Ishan Basu

データセットを転置し、最初の列を行名として_data.frame_に変換できます。

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

編集:_row.names_呼び出しに_data.frame_引数を含めました(@Richard Scrivenのコメントから)

または、@ Ananda Mahtoが述べたように、names(df1)を使用して「r1」列を作成し、グローバル環境でのオブジェクトの作成をスキップすることができます。

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

または別のオプションは_melt/dcast_です。 _data.frame_をmatrixに変換し、meltを「long」形式に変換してからdcastを「wide」形式に変換します。

_library(reshape2)
dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value')
_
9
akrun