我有两张表格(data和reference),这些表格都有开始和结束位置。我想使用像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与参考表没有重叠,因此将保持原样。但是,我希望根据Ref.table拆分ID 2&3。
我想要的结果表格如下:
>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