我有两个 Dataframe ,希望使用其中一个(DF1$pos
)中的值来搜索DF2中的两列(DF2start,DF2end),如果它福尔斯在这些数字之内,则返回DF2$name
- DF1*
ID pos name
chr 12
chr 542
chr 674
字符串
- DF2*
ID start end annot
chr 1 200 a1
chr 201 432 a2
chr 540 1002 a3
chr 2000 2004 a4
型
所以在这个例子中,我希望DF1成为
ID pos name
chr 12 a1
chr 542 a3
chr 674 a3
型
我尝试过使用merge和intersect,但不知道如何使用if
语句中的逻辑表达式。
Dataframe 应编码如下,
DF1 <- data.frame(ID=c("chr","chr","chr"),
pos=c(12,542,672),
name=c(NA,NA,NA))
DF2 <- data.frame(ID=c("chr","chr","chr","chr"),
start=c(1,201,540,200),
end=c(200,432,1002,2004),
annot=c("a1","a2","a3","a4"))
型
3条答案
按热度按时间n9vozmp41#
也许您可以使用“data.table”包中的
foverlaps
。字符串
正如@Arun在评论中提到的,你也可以在
foverlaps
中使用which = TRUE
来提取相关值:型
yzxexxkh2#
也可以使用
IRanges
字符串
cqoc49vn3#
这个“dupiter”解决方案的工作原理类似于Excel中的范围查找。
字符串