【问题标题】:Comparing multiple columns in different data sets to find values within range R比较不同数据集中的多列以查找范围 R 内的值
【发布时间】:2013-12-18 23:01:35
【问题描述】:

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

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

这就是我目前所拥有的:

d

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

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

newfile

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

我希望我的最终数据如下所示:

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

【问题讨论】:

    标签: r compare


    【解决方案1】:

    合并和子集应该可以让您到达那里(尽管我认为您的预期结果与您对所需内容的描述不匹配):

    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
    

    【讨论】:

    • 完美运行。我只是注意到我的预期打印输出是错误的。应该看起来像你的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2018-01-25
    相关资源
    最近更新 更多