2014-01-24 42 views
0

即使閱讀文檔後,我對如何使用dcast功能也有點困惑。我正在嘗試按如下方式熔化熔融數據幀:dcast熔融數據幀如何跨多個維度?

> head(res) 
     factoroneid  factortwoid   val 
1    1    1 5.8223670800 
2    1    2 -1.3314644000 
3    1    3 0.7206910120 
4    1    4 0.0762039224 
5    1    5 2.7409736300 
6    1    6 0.0896606575 

res包含第1列和第2列作爲索引。我需要使用第一列數據作爲行號和第二列數據作爲列號,並使用第三列的值生成矩陣。我正在嘗試這樣的事情,但數據看起來不正確。

temp <- dcast(res, factoroneid + factortwoid ~ val) 

預期的輸出應該是:

1   2  3  4 ... 
1 5.82 -1.33 0.72 0.076 ... 
2 
3 
4 
. 
. 

能否請你建議?

回答

1
dcast(res, factoroneid ~ factortwoid) 

適合我。

+0

謝謝。這似乎很簡單:)。我不知道如何在輸出結果中指定val。爲了更好地理解,在這種情況下,因爲它只有一個列,它只是複製值,但如果有多個列,那麼我們需要一個托架來使用聚合函數(例如SUM)來聚合它們。我的理解是否正確? – Alok

+1

@Alok,不完全。如果來自同一列的多個值與任何單個'factoroneid〜factorwoid'組合匹配,則需要聚合函數。如果你在你的鑄造數據框中有多個值列,你首先需要進一步「融化」你的數據,這樣你只有一個值列,然後纔是「dcast」。參見[Andrie的解釋](http://stackoverflow.com/questions/11608167/cast-multiple-value-columns)。如果你有多個值列,但只想保留一列,那麼你使用'value.var'。 – BrodieG