我有两个数据帧,并希望使用one(DF1$pos)中的值来搜索DF2中的两列(DF2start,DF2end),如果它在这些数字范围内,则返回DF2$name
DF1
ID pos name
chr 12
chr 542
chr 674
Run Code Online (Sandbox Code Playgroud)
DF2
ID start end annot
chr 1 200 a1
chr 201 432 a2
chr 540 1002 a3
chr 2000 2004 a4
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中我希望DF1成为
ID pos name
chr 12 a1
chr 542 a3
chr 674 a3
Run Code Online (Sandbox Code Playgroud)
我尝试过使用merge和intersect但不知道如何使用if带有逻辑表达式的语句.
数据帧应编码如下,
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"))
Run Code Online (Sandbox Code Playgroud)