美文网首页
[R|编程练习]将两列关系对转换成01矩阵

[R|编程练习]将两列关系对转换成01矩阵

作者: 郑宝童 | 来源:发表于2018-11-17 11:14 被阅读10次

    今天科室里的一个小伙伴问我:你知道怎么把两列的表转换成那种0 1的矩阵。
    之后我看了他发来的数据,我发现两列是不一样的东西:第一列是代谢子,第二列是通路。哦~,原来是打算弄成每行是一个代谢子,每列是一个通路,有关系的对应位置打成1。

    data

    好吧,看到数据量的行数比较少,于是乎,直接开编代码(应该有函数可以实现,只是这样的数据,找行数的时间都够编好代码了。)

    data<-read.table("data.txt",header = TRUE,sep = "\t",stringsAsFactors = FALSE,quote = "")
    t1<-unique(data$metabolite) #构建行名
    t2<-unique(data$pathClass) #构建列名
    #623*11
    datamatrix<-matrix(0,623,11)
    rownames(datamatrix)<-t1
    colnames(datamatrix)<-t2
    for (i in 1:nrow(data1)) {
      datamatrix[data1[i,1],data1[i,2]]<-1 #对应位置打上1
    }
    write.table(datamatrix,"datamatrix.txt",sep = "\t",quote = FALSE)
    

    输出结果:

    image.png

    注:这样的矩阵不叫邻接矩阵,因为邻接矩阵通常行名和列名是同一类东西。具体概念你可以上网查阅一下下,这里不赘述了。
    至于怎么把关系对转换成邻接矩阵,我将会在后续的文章中提到。

    相关文章

      网友评论

          本文标题:[R|编程练习]将两列关系对转换成01矩阵

          本文链接:https://www.haomeiwen.com/subject/mwebfqtx.html