合并R all中的不均匀表= TRUE

时间:2014-08-26 13:14:32

标签: r merge

我正在尝试合并R中的两个表,如下所示:

TABLE_1:

id  1_query 1_hit
1   aaa aaa
1   aaa aab
2   ccc ccc
3   ddd eee

表2:

id  2_query 2_hit
1   aaa aaa
1   aaa abb
2   ccc ccc
2   cdc cdc

不幸的是,ID并不是唯一的,因为每个ID我在不同的表中都有不同的“查询”和“命中”,但是我需要ID,而且我想合并表格。

所需的输出应如下所示:

合并:

id  1_query 1_hit   2_query 2_hit
1   aaa aaa aaa aaa
1   aaa aab NA  NA
1   NA  NA  aaa abb
2   ccc ccc ccc ccc
2   NA  NA  cdc cdc
3   ddd eee NA  NA

到目前为止我尝试的是merge(table1, table2, all=TRUE) 但是输出表如下:

id X1_query X1_hit X2_query X2_hit
1      aaa    aaa      aaa    aaa
1      aaa    aaa      aaa    abb
1      aaa    aab      aaa    aaa
1      aaa    aab      aaa    abb
2      ccc    ccc      ccc    ccc
2      ccc    ccc      cdc    cdc
3      ddd    eee     <NA>   <NA>

如果这是微不足道的话,我很抱歉。 谢谢。

1 个答案:

答案 0 :(得分:0)

如果dat1dat2是两个数据集,请尝试

dat1$Newcol <-as.character(interaction(dat1[,2:3]))
dat2$Newcol <- as.character(interaction(dat2[,2:3]))
 merge(dat1, dat2, by=c("id", "Newcol"), all=TRUE)[,-2]
 #   id X1_query X1_hit X2_query X2_hit
 #1  1      aaa    aaa      aaa    aaa
 #2  1      aaa    aab     <NA>   <NA>
 #3  1     <NA>   <NA>      aaa    abb
 #4  2      ccc    ccc      ccc    ccc   
 #5  2     <NA>   <NA>      cdc    cdc
 #6  3      ddd    eee     <NA>   <NA>