我正在寻找类似于bedtools subtract但有 Dataframe 的东西。
例如,假设我有一个 Dataframe 范围:
Start End Value
0 100 P
我还有另一个 Dataframe ,它是排序的:
Start End Value
10 25 A
50 63 B
有没有一种方法可以像这样填充这个:
Start End Value
0 9 P1
10 25 A
26 49 P2
50 63 B
64 100 P3
填充P1、P2和P3标签以填充第2个 Dataframe ,从而覆盖整个值范围。
我尝试使用Dplyr的Lag函数并手动添加填充值,但考虑到范围可以根据基因组特征的长度(包括起始和结束坐标)而改变,我希望此范围填充是自动的。
谢谢大家!
例如,这是数据的一个小子集:
data_range<- data.frame(start=0, end=100, value="P")
tofill_range<- data.frame(start=c(15, 51, 70),end = c(39, 62, 79), value = c("A","B","C"))
4条答案
按热度按时间q43xntqr1#
以R为底:
创建于2023年2月23日,使用reprex v2.0.2
vqlkdk9b2#
使用
dplyr
(对于consecutive_id
,〉=v1.1.0)使用
between
获取缺失的范围iugsix8n3#
这里有一种方法可以计算一个data.frame的范围,只需要使用'dplyr'。对于你的第二个例子,我重命名了列。我们可以做更多的工作,使它可以与任何列名一起工作。
创建于2023年2月23日,使用reprex v2.0.2
hmae6n7t4#
“IRanges”是非常适合此任务的软件包: