【问题标题】:How to count a huge database to be inserted into a Venn diagram如何计算要插入维恩图的巨大数据库
【发布时间】:2017-02-17 18:08:58
【问题描述】:

我有一个这样的表:

breeds <- "tag  Chr Position Breed
chr1-2157  1  2157 BRL
chr1-2157  1  2157 GOT
chr1-2157  1  2157 HED
chr1-2157  1  2157 KIN
chr2-2185  2  2185 BRL
chr2-2185  2  2185 GOT
chr2-2185  2  2185 HED
chr3-2189  3  2185 BRL"
breeds <-read.table(text=breeds,header=T)

我想构建一个这样的逻辑表:

final <- "tag  BRL GOT HED KIN 
chr1-2157  TRUE  TRUE TRUE TRUE
chr2-2185  TRUE  TRUE TRUE FALSE
chr3-2189  TRUE  FALSE FALSE FALSE"
final <-read.table(text=final,header=T)

最终对组进行分类: 这个想法是能够计算可能的“真”和“假”组的唯一标签的数量,最终使用venneuler包(Venn diagram proportional and color shading with semi-transparency)将每个组的数量包含在维恩图中/p>

【问题讨论】:

    标签: r venn-diagram


    【解决方案1】:

    您可以使用table 函数以及逻辑比较来计算:

    with(breeds, table(tag, Breed)) > 0
               Breed
    tag          BRL   GOT   HED   KIN
      chr1-2157 TRUE  TRUE  TRUE  TRUE
      chr2-2185 TRUE  TRUE  TRUE FALSE
      chr3-2189 TRUE FALSE FALSE FALSE
    

    table 本身会产生频率计数。添加&gt; 0 返回逻辑。 with 只是为了减少打字,也许是为了更清楚一点。

    【讨论】:

      【解决方案2】:

      table 绝对更容易。另一种方法是先将breeds 拆分为tag,然后再拆分为Breed,并计算每个子组中的行数。

      t(sapply(split(breeds, breeds$tag), function(a)
                 sapply(split(a, a$Breed), function(b)
                                             nrow(b)>0 )))
      
      #           BRL   GOT   HED   KIN
      #chr1-2157 TRUE  TRUE  TRUE  TRUE
      #chr2-2185 TRUE  TRUE  TRUE FALSE
      #chr3-2189 TRUE FALSE FALSE FALSE 
      

      就像在 lmo 的解决方案中一样,您最初得到的是频率计数,添加 &gt;0 会返回逻辑值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-15
        • 1970-01-01
        相关资源
        最近更新 更多