0

如何找到两个不同数据帧之间的重叠,然后将这些数据写入相应的 bin 中?

例如,我将有一个数据框(由此处的第一个表表示),其中包含一个子集的起点和终点,例如从 0 到 10.000 的数字序列,但这些子集没有提供有关其余 10.000 个数字的信息/不包含它们。

染色体 开始 结尾 长度
ch1 151 250 100
ch1 301 410 110
ch1 461 500 40
ch+n n n n

另一个数据帧(由第二个表表示)由 100 个小数字组成——跨越整个序列的短间隔,从 0 到 10.000。

染色体 垃圾桶 BinStart BinEnd 重叠数
ch1 1 1 100
ch1 2 101 201
ch1 3 301 400
ch1 4 401 500
ch+n n n n

因此,不同的数据帧也有不同的行数,第一个只跨越 10.000 个数字的一​​部分,而第二个跨越全部。

我想过使用一个循环遍历每行的 BinStart 和 BinEnd,然后查看间隔是否在第一个数据帧的 Start 和 End 值之间,然后填充 Number of Overlaps 列,但不知道如何做到这一点。

也许我应该将我的垃圾箱分成仅跨越 1 个数字的垃圾箱,并检查这个数字是否介于两个值之间,然后如果是 = 填充数字 1,如果否 = 填充数字 0,然后再次将我的垃圾箱合并到垃圾箱中跨越100个数字?

最后的输出/结果应如下所示:

染色体 垃圾桶 开始 结尾 重叠数
ch1 1 1 100 0
ch1 2 101 201 50
ch1 3 301 400 100
ch1 4 401 500 50
ch+n n n n n

dplyr 或 findOverlaps 或 GenomicRanges 包的 mutate 函数在这里有用吗?

提前谢谢大家,周末愉快!

4

0 回答 0