2

これは、パッケージの練習をしたことがある人にとっては当然の質問に思えるかもしれませんがreshape、私はその機能に慣れようとしていますが、正しい構文がわかりません!

次のデータフレームを用意しましょう。

df <- data.frame(matrix(1:12,ncol=3),row.names=letters[1:4])

  X1 X2 X3
a  1  5  9
b  2  6 10
c  3  7 11
d  4  8 12

次の結果を得るために、行を列にバインドするにはどうすればよいでしょうか?

  X1.a X2.a X3.a X1.b X2.b X3.b X1.c X2.c X3.c X1.d X2.d X3.d
     1    5    9    2    6   10    3    7   11    4    8   12

ありがとうございました

4

3 に答える 3

2

ここに1つあります:

m <- melt(cbind(df, rn=rownames(df)), id.vars='rn')
cast(m, ~ rn + variable)

##   value a_X1 a_X2 a_X3 b_X1 b_X2 b_X3 c_X1 c_X2 c_X3 d_X1 d_X2 d_X3
## 1 (all)    1    5    9    2    6   10    3    7   11    4    8   12

または、Arun が示すように、 (追加の列acastなしで) 行列が得られます。value

acast(m, . ~ variable+rn)
##      X1_a X1_b X1_c X1_d X2_a X2_b X2_c X2_d X3_a X3_b X3_c X3_d
## [1,]    1    2    3    4    5    6    7    8    9   10   11   12

(式が反転しているため、順列が逆になっていることに注意してください。)

于 2013-03-31T18:09:08.820 に答える