R中是否有一种方法可以根据某列中的匹配值组合两个表?

时间:2014-04-10 20:38:18

标签: r multiple-columns

假设我有两个数据帧,df1和df2:

chrom   pos   genSym   type
1       4     blah     DEL
2       5     guh      INS   
1       6     poo      DEL
2       7     foo      MMP

chrom   pos   genSym   type
1       4     blah     DEL
3       3     grub     INS   
1       6     poo      INS
2       7     foo      MMP

我想以这样的方式组合它们,即包含相同chrom,pos和genSym值的行在同一行上配对(根据需要重复)。如果有任何意义,那么包含未在其他数据框中找到的chrom,pos和genSym值的行将被列为未配对。理想情况下,输出看起来像这样:

chrom   pos   genSym   type    chrom   pos   genSym   type 
1       4     blah     DEL     1       4     blah     DEL
2       5     guh      INS     
1       6     poo      DEL     1       6     poo      INS
2       7     foo      MMP     2       7     foo      MMP
                               3       3     grub     INS

R 中的包是否简化了这一点?如果 R 不能轻易做到这一点,是否有人有其他工具的建议?

1 个答案:

答案 0 :(得分:3)

获得你想要的东西

merge(df1, df2, by = c("chrom", "pos", "genSym"), all = T)

我也只是作为一种学习经历,试试这个

merge(df, df.other,by=x,all=T)

这是一个很好的参考https://stackoverflow.com/a/1300618/2747709,用于理解外部,左连接,右连接等,并查看sql样式匹配的其他答案。