比较不同数据集中的多个列以查找范围R内的值

时间:2013-12-18 23:01:35

标签: r compare

我有两个数据集。一个称为域(d),其作为关于基因和表的一般信息称为突变(m)。两个表都有类似的名为Gene.name的列,我将用它来查找。这两个数据集的列数或行数不同。

我想查看文件变异中的所有数据,并检查列中gene.name中的数据是否也存在于文件域中。如果是,我希望它检查列变异中的数据是否在“开始”和“结束”列之间(它们可以等于开始或结束)。如果是,我想将它打印到具有合并列的新表:Gene.Name,Mutation和域信息。如果它不存在,请忽略它。

所以这就是我到目前为止:

  

d< -read.table( “domains.txt”)

d
Gene.name Domain Start  End
ABCF1   low_complexity_region   2   13
DKK1    low_complexity_region   25  39
ABCF1   AAA 328 532
F2  coiled_coil_region  499 558
  

M< -read.table( “mutations.tx”)

m
Gene.name   Mutation        
ABCF1   10      
DKK1    21      
ABCF1   335     
xyz 15      
F2  499     
  

newfile< -m [,list(new = findInterval(d(c(d $ Start,   d $完))中,由 '= Gene.Name']

我的代码无效,我正在阅读很多不同的问题/答案,而且我更加困惑。任何帮助都会很棒。

我希望我的最终数据看起来像这样:

Gene.name   Mutation    Domain  
DKK1    21  low_complexity_region   
ABCF1   335 AAA 
F2  499 coiled_coil_region  

1 个答案:

答案 0 :(得分:2)

合并和子集可以帮助您(虽然我认为您的预期结果与您想要的描述不符):

result <- merge(d,m,by="Gene.name")
result[with(result,Mutation >= Start & Mutation <= End),]

#  Gene.name                Domain Start End Mutation
#1     ABCF1 low_complexity_region     2  13       10
#4     ABCF1                   AAA   328 532      335
#6        F2    coiled_coil_region   499 558      499