web-dev-qa-db-ja.com

Rを使用して行を列に、列を行に変換する

一意の行名と一意の列名を持つデータフレームがあります。行を列に、列を行に変換したい。

たとえば、次のコード:

starting_df <- data.frame(row.names= c(LETTERS[1:4]),
                          a = c(1:4),
                          b = seq(0.02,0.08,by=0.02),
                          c = c("Aaaa","Bbbb","Cccc","Dddd")
                )

結果は次のとおりです。

> starting_df
  a    b    c
A 1 0.02 Aaaa
B 2 0.04 Bbbb
C 3 0.06 Cccc
D 4 0.08 Dddd

以前は行だったものが現在は列であり、逆の場合を除き、まったく同じデータを含む別のデータフレームに変換したい:

> final_df
     A    B    C    D
a    1    2    3    4
b 0.02 0.04 0.06 0.08
c Aaaa Bbbb Cccc Dddd
12

単純にベースtranspose function tを使用し、as.data.frameでラップします。

final_df <- as.data.frame(t(starting_df))
final_df
     A    B    C    D
a    1    2    3    4
b 0.02 0.04 0.06 0.08
c Aaaa Bbbb Cccc Dddd

上記を更新しました。 docendo discimusが指摘したように、tは行列を返します。マークがas.data.frameでラッピングするよう提案したように、マトリックスではなくデータフレームを取得します。ありがとう!

26