【发布时间】:2015-09-01 15:24:30
【问题描述】:
我有 2 个表格(数据和参考;下面的玩具示例)。这些表具有我想检查重叠的 START 和 END 位置(使用 data.table 包中的 foverlaps 之类的东西),然后拆分值,如下所示。
>data <- data.table(ID=c(1,2,3), Chrom=c(1,1,2), Start=c(1,500,1000), End=c(900,5000,5000), Probes=c(899,4500,4500))
>Ref.table <- data.table(Chrom=c(1,2), Split=c(1000,2000))
>Ref.table
Chrom Split
1 1000
2 2000
>data
ID Chrom Start End Probes
1 1 1 900 899
2 1 500 5000 4500
3 2 1000 5000 4000
如您所见,ID 1 与参考表没有重叠,因此将单独放置。但是,ID 2&3,我想根据 Ref.table 进行拆分。
我想得到的结果表是:
>result
ID Chrom Start End Probes
1 1 1 900 899
2 1 500 1000 500
2 1 1001 5000 4000
3 2 1000 2000 1000
3 2 2001 5000 3000
我相信您可以看到,这有两个部分: 1. 根据单独的表将范围拆分为两列 2. 在两部分之间按比例拆分 # 个探针
我一直在寻找可以做到这一点的 R 包(按染色体臂分割范围),但找不到如上所示的。任何指向函数包的链接都将不胜感激,但我也愿意自己编写代码......在一些帮助下。
到目前为止,我只能使用 foverlaps 来确定是否存在重叠: 示例:
>foverlaps(Ref.table[data[14]$Chrom], data[14], which=TRUE)
xid yid
1: 1 1
【问题讨论】:
标签: r data.table