小编Pet*_*ete的帖子

是否可以使用R data.table函数foverlaps来查找两个表中重叠范围的交集?

我想使用foverlaps查找两个床文件的交叉范围,并将包含重叠范围的任何行折叠成一行.在下面的例子中,我有两个基因组范围表.这些表被称为"床"文件,其具有从零开始的坐标和染色体中特征的基于一个的结束位置.例如,START = 9,STOP = 20被解释为跨越10到20的基数,包括10和20.这些床文件可以包含数百万行.无论提供两个要交叉的文件的顺序如何,解决方案都需要提供相同的结果.

第一张表

> table1
   CHROMOSOME START STOP
1:          1     1   10
2:          1    20   50
3:          1    70  130
4:          X     1   20
5:          Y     5  200
Run Code Online (Sandbox Code Playgroud)

第二张表

> table2
   CHROMOSOME START STOP
1:          1     5   12
2:          1    15   55
3:          1    60   65
4:          1   100  110
5:          1   130  131
6:          X    60   80
7:          Y     1   15
8:          Y    10   50
Run Code Online (Sandbox Code Playgroud)

我认为新的foverlaps函数可以是一种非常快速的方法来查找这两个表中的交叉范围,以生成一个表格,如下所示:

结果表:

> resultTable
   CHROMOSOME START STOP
1:          1     5   10 …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics data.table

11
推荐指数
1
解决办法
3656
查看次数

用R数据检查一个表(X)中的值是否在另一表(Y)中两列的值之间。

可怕的标题问题,但这是我想要解决的问题。对于表1,我想添加“ BETWEEN”列,以验证表2中相应“ BIN”的“ POSITION”是否介于“ START”和“ STOP”值之间。

表1。BIN名称(字符)和BIN(数字)中的POSITION:

  BIN    POSITION
    1          12
    1          52
    1          86
    7           6
    7          22
    X         112
    X         139
   MT           3
   MT          26
Run Code Online (Sandbox Code Playgroud)

表2:BIN名称(字符)以及START和STOP位置(数字)

  BIN    START    STOP
    1        2      64
    1       90     110
    7       20     100
    7      105     200
    X        1       5
   MT        1    1000
Run Code Online (Sandbox Code Playgroud)

和预期的结果-表1与“ BETWEEN”:

CHROM    POSITION      BETWEEN
    1          12         TRUE
    1          52         TRUE
    1          86        FALSE
    7           6        FALSE
    7          22         TRUE
    X         112        FALSE
    X         139        FALSE
   MT           3         TRUE …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
1260
查看次数

标签 统计

data.table ×2

r ×2

bioinformatics ×1