2016-11-16 50 views
0

我有一個CSV文件,我想將前3列重新塑造成矩陣。 我有一個data.frame,看起來像這樣。將CSV文件的第三列重新整形爲矩陣

x a 1 
x b 2 
x c 3 
y a 3 
y b 3 
y c 2 

我想這個矩陣形式,所以我可以餵它到熱圖做一個情節。結果應該是這樣的:

a b c 
x 1 2 3 
y 3 3 2 

我試圖從重塑包的演員和我試圖寫一個手動功能做到這一點,但我似乎並沒有能夠得到它的權利。

CSV文件非常大(900mB),在第一列中有很多x,y,z可以這麼說。

回答

1

它可以使用dcast fucntion完成。

library(reshape2) 
textData <- "x a 1 
x b 2 
x c 3 
y a 3 
y b 3 
y c 2 " 

data <- read.table(textConnection(textData), header=FALSE) 
dcast(data, V1 ~ V2, value.var="V3") 
+0

由於csv文件中有太多的觀察結果(900mB),指定數據可能不切合實際。有沒有辦法可以將csv加載到R中並將其轉換爲矩陣? – dizzyLife

+0

可以通過使用'庫(reshape2)'和功能'dcast'創建矩陣在它 庫(reshape2) dcast(DT,A〜B) 甲ABC 1 X 1 2 3 2 Y數據框架(A = c(rep(「X」,3),rep(「Y」,3)),B = c(「a」,「b」 ,「c」,「a」,「b」,「c」),C = c(1,2,3,3,3,2)) –

+0

嘗試'data.table'包。他們也有一個'dcast'的實現,它經過優化,只會使用指定的列。或者,您可以讀取整個數據,並刪除「dcast」中不需要的列。 –

相關問題