3

为我正在写的一篇论文做一些可视化,并且被困在将数据从 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
4

3 回答 3

5

您可以使用acastfrom reshape2package 以您想要的矩阵形式获取数据。

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

这将用NA. 如果你想填充它们,例如,用 0 代替,那么,

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

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

于 2013-03-24T12:10:17.227 回答
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)
于 2013-03-24T12:53:16.527 回答
1

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

X[as.matrix(dta.test[,c(1:2)])] <- dta.test$Kf
于 2013-03-24T13:09:20.973 回答