我的数据框如下:
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 *上创建一个热图。非常感谢任何帮助。
感谢。
答案 0 :(得分:2)
假设您的data.frame
被称为“mydf”,请使用stack
和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))