首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索某个范围内的值,并为其分配两个数据框之间的标签

搜索某个范围内的值,并为其分配两个数据框之间的标签
EN

Stack Overflow用户
提问于 2017-07-29 04:14:17
回答 1查看 56关注 0票数 0

这是我第一次来这里,如果我做错了什么或弄错了,我深表歉意。我正在处理基因组数据,我有两个数据框:一个是关于一系列SNP的祖先的信息(见下表):

代码语言:javascript
复制
Chrom | Start    | End      | Ancestry
---------------------------------------
 22   | 16495833 | 19868218 | EUR_Patag
 22   | 19873357 | 21405110 | Patag_Patag
 22   | 21416404 | 21449724 | Patag_UNK
 22   | 21458082 | 23704421 | EUR_Patag
 22   | 23712647 | 23717466 | Patag_UNK

另一个数据帧包含有关每个rsID的阶段性基因型的信息(见下表):

代码语言:javascript
复制
Chrom | Pos      | ID       | Genot
---------------------------------------
 22   | 16495833 | rs116823 | 0|1
 22   | 16620701 | rs635455 | 0|0
 22   | 16648658 | rs445724 | 1|1
 22   | 16872459 | rs827345 | 1|0
 22   | 16880098 | rs309287 | 1|1

因此,我想用第一个数据帧分析来自第二个数据帧(通过"Pos“列)的每个SNP,评估这个特定SNP所在的范围,并用新列(在第二个数据帧中)分配祖先(根据SNP所在的范围)。

我正在寻找解决方案,我发现R中的库数据表能够处理这个问题,但不幸的是我无法找到解决方案。

我希望能对我的问题有一个很好的理解。非常感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-29 07:00:31

我认为我们可以将其作为重叠连接来实现。重叠连接在一个间隔上连接,在本例中我们有一个间隔和一个位置。从技术上讲,位置是长度为0的区间,所以我们仍然可以这样做。

代码语言:javascript
复制
require(data.table)

setDT(df1)
setDT(df2)

#create a duplicate of the position so we have our "interval"
df2[, Pos2:= Pos]

setkey(df1, Start, End)

outDF <- foverlaps(df2,df1, by.x=c("Pos","Pos2"),by.y=c("Start","End"),
  type="within", mult="all")

输出(将另一行22 23712650 rs309884 1|1 23712650添加到df2以进一步验证)

代码语言:javascript
复制
   Chrom    Start      End  Ancestry V1      Pos       ID Genot    Pos2
1:    22 16495833 19868218 EUR_Patag 22 16495833 rs116823 0|1  16495833
2:    22 16495833 19868218 EUR_Patag 22 16620701 rs635455 0|0  16620701
3:    22 16495833 19868218 EUR_Patag 22 16648658 rs445724 1|1  16648658
4:    22 16495833 19868218 EUR_Patag 22 16872459 rs827345 1|0  16872459
5:    22 16495833 19868218 EUR_Patag 22 16880098 rs309287 1|1  16880098
6:    22 23712647 23717466 Patag_UNK 22 23712650 rs309884 1|1  23712650

df1df2与您列出的顺序相对应。

我在引用here时使用的示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45381716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档