小编Sem*_*ant的帖子

数据框查找值在范围内并返回不同的列

我有两个数据帧,并希望使用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)

merge r multiple-columns dataframe

4
推荐指数
1
解决办法
2394
查看次数

标签 统计

dataframe ×1

merge ×1

multiple-columns ×1

r ×1