0

次のようなデータフレームがあります。

Name    W1xH1    W2xH2  W3xH3  W1xH2
A           0       10     20     10
B          10      100    200     20
C           0        0     10     40

しかし、次のようにデータフレームを取得したい:

     H1    H2    H3
W1   10    70     0
W2    0   110     0
W3    0     0   230

誰かがこれを行う方法を教えてもらえますか? これが必要な理由は、W* と H* でヒートマップを作成したいからです。どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

2

data.frameあなたが「mydf」と呼ばれると仮定すると、 and を使用stackxtabsます。

temp <- stack(mydf[-1])
temp1 <- data.frame(temp, 
                    do.call(rbind, 
                            strsplit(as.character(temp$ind), "x")))
xtabs(values ~ X1 + X2, temp1)
#     X2
# X1    H1  H2  H3
#   W1  10  70   0
#   W2   0 110   0
#   W3   0   0 230

ここで、「mydf」は次のように定義されています。

mydf <- structure(list(Name = c("A", "B", "C"), W1xH1 = c(0L, 10L, 0L), 
  W2xH2 = c(10L, 100L, 0L), W3xH3 = c(20L, 200L, 10L), W1xH2 = c(10L, 20L, 40L)),
  .Names = c("Name", "W1xH1", "W2xH2", "W3xH3", "W1xH2"), 
  class = "data.frame", row.names = c(NA, -3L))
于 2013-07-09T12:11:42.790 に答える