如何统计一个巨大的数据库要插入维恩图
How to count a huge database to be inserted into a Venn diagram
我有一个像这个例子的table:
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)
我想构造一个合乎逻辑的 table,如下所示:
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)
最后对组进行分类:
这个想法是能够计算可能的 "true" 和 "false" 组的唯一标签的数量,最终使用 venneuler
包将每个组的数量包含在维恩图中(Venn diagram proportional and color shading with semi-transparency)
您可以使用 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
本身会产生频率计数。添加 > 0
返回逻辑。 with
只是为了减少打字,也许是为了更清晰。
table
肯定更容易。另一种方法是先将 breeds
拆分为 tag
,然后再拆分为 Breed
,然后计算每个 sub-group.
中的行数
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 的解决方案中一样,您最初得到的是频率计数并添加 >0
returns 逻辑。
我有一个像这个例子的table:
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)
我想构造一个合乎逻辑的 table,如下所示:
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)
最后对组进行分类:
这个想法是能够计算可能的 "true" 和 "false" 组的唯一标签的数量,最终使用 venneuler
包将每个组的数量包含在维恩图中(Venn diagram proportional and color shading with semi-transparency)
您可以使用 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
本身会产生频率计数。添加 > 0
返回逻辑。 with
只是为了减少打字,也许是为了更清晰。
table
肯定更容易。另一种方法是先将 breeds
拆分为 tag
,然后再拆分为 Breed
,然后计算每个 sub-group.
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 的解决方案中一样,您最初得到的是频率计数并添加 >0
returns 逻辑。