【问题标题】:Convert CSV data to a matrix to a heatmap in R将CSV数据转换为矩阵到R中的热图
【发布时间】:2013-03-24 11:53:49
【问题描述】:

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

【问题讨论】:

    标签: r csv heatmap


    【解决方案1】:

    您可以使用reshape2 包中的acast 来获取所需矩阵形式的数据。

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

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

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

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

    【讨论】:

      【解决方案2】:

      怎么样(如果每个 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)
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2017-08-24
          • 1970-01-01
          • 2017-10-02
          • 2018-10-06
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          • 2016-08-25
          • 1970-01-01
          相关资源
          最近更新 更多