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”,请使用stackand xtabs

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 回答