2016-11-16 152 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”中不需要的列。 –

相关问题