【发布时间】:2014-10-07 20:28:06
【问题描述】:
我有一个看起来像这样的数据框(这只是一个子集,实际上数据集有 2724098 行)
> head(dat)
chr start end enhancer motif
chr10 238000 238600 9_EnhA1 GATA6
chr10 238000 238600 9_EnhA1 GATA4
chr10 238000 238600 9_EnhA1 SRF
chr10 238000 238600 9_EnhA1 MEF2A
chr10 375200 375400 9_EnhA1 GATA6
chr10 375200 375400 9_EnhA1 GATA4
chr10 440400 441000 9_EnhA1 GATA6
chr10 440400 441000 9_EnhA1 GATA4
chr10 440400 441000 9_EnhA1 SRF
chr10 440400 441000 9_EnhA1 MEF2A
chr10 441600 442000 9_EnhA1 SRF
chr10 441600 442000 9_EnhA1 MEF2A
我能够将我的数据集转换为这种格式,其中 chr、start、end 和 enhancer 组代表一个 ID:
> dat
id motif
1 GATA6
1 GATA4
1 SRF
1 MEF2A
2 GATA6
2 GATA4
3 GATA6
3 GATA4
3 SRF
3 MEF2A
4 SRF
4 MEF2A
我想找到每对可能的图案的数量,按 id 分组。 所以我想要一个像这样的输出表,
motif1 motif2 count
GATA6 GATA4 3
GATA6 SRF 2
GATA6 MEF2A 2
... and so on for each pair of motif
在实际数据集中,有 1716 个独特的图案。有83509个唯一id。
对如何进行有什么建议吗?
【问题讨论】:
-
您的数据中有多少唯一的
ids? -
@Gregor 我将在几分钟内编辑我的问题以清晰明了。
-
我不知道这是否实用,但一种可能的方法是(1)将所有内容转换为整数,将您的分组变量压缩为一个
id,就像以前一样,并且然后(2)创建一个 1716x1716x83509 3-d 稀疏数组(使用slam包),其中条目是存在/不存在的二进制,(3)您的结果是沿id维度的colsums。 -
(2) 显然是最难的部分。或者,也许 SQL 可以处理它,这将是一个相当简单的自连接然后聚合查询。
-
@Gregor 没有 SQL 的背景,尽管感谢您的建议。
标签: r