R:数据帧操作

时间:2013-07-09 12:05:51

标签: r dataframe heatmap

我的数据框如下:

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 *上创建一个热图。非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

假设您的data.frame被称为“mydf”,请使用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))