2013-07-09 67 views
0

我有一個數據幀如下:R:數據幀操作

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

你的示例輸出顯示爲不正確。請確認。 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto謝謝你指出這一點。 –

回答

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))