将CSV数据转换为矩阵到R中的热图

时间:2013-03-24 11:53:50

标签: r csv heatmap

对我正在撰写的论文进行一些可视化处理,并坚持将数据从加载CSV的表转移到矩阵(以便能够在之后绘制热图)。

我这样做:

dta.tesiscsv<- read.csv("dtatesis.csv", header=TRUE)

加载如下所示的数据样本:

Col,Row,Kf
1,1,100
1,2,97.14285714
2,1,100 
...,...,...

但是在下一步中有点丢失(创建一个空矩阵并根据公式将数据从表中传输到它):

X<- matrix(nrow= 48, ncol=12)
X[dta.test[,c(1:2)]] <- dta.test$Kf

3 个答案:

答案 0 :(得分:5)

您可以使用acast包中的reshape2以您希望的矩阵形式获取数据。

require(reshape2)
acast(dta.test, Row ~ Col, value.var = "Kf")

这将使用NA填充缺失的值。如果你想填充它们,例如,用0代替,那么,

acast(dta.test, Row ~ Col, value.var = "Kf", fill = 0)

会做到这一点。您可以使用heatmap(.)将其包裹起来以获取热图。

答案 1 :(得分:1)

如果每个Col / Row组合有一个行,这应该是有意义的:

dta.tesiscsv <- read.table(text="Col,Row,Kf
1,1,100
1,2,97.14285714
2,1,100",h=T,sep=",")

X <- tapply(dta.tesiscsv[,3],dta.tesiscsv[,2:1],head,1)
heatmap(X)

答案 2 :(得分:1)

你真的很亲近。要使用矩阵索引,索引必须是矩阵,而不是data.frame。

X[as.matrix(dta.test[,c(1:2)])] <- dta.test$Kf