对我正在撰写的论文进行一些可视化处理,并坚持将数据从加载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
答案 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