将2个表与R中的重复命中结合起来

时间:2014-11-15 16:20:55

标签: r duplicates

我有以下问题:

我的文件看起来像这样:

table1
Nb_ID   Ly_ID
NbID1   ID1
NbID2   ID2
NbID3   ID3
NbID4   ID4
...

第二个档案:

table2
CODE    NAME    IDENTIFIER  DESCRIPTION
1.1.1.1 Name1   ID1         DESCRIPTION1
1.1.1.2 Name2   ID2         DESCRIPTION2
25.7.8  Name3   ID2         DESCRIPTION3
...

我需要将两个表与属性Ly_ID = IDENTIFIER组合在一起。最后它应该是这样的:

table3
Nb_ID Ly_ID CODE    NAME  DESCRIPTION
NbID1 ID1   1.1.1.1 Name1 DESCRIPTION1
NbID2 ID2   1.1.1.2 Name2 DESCRIPTION2
NbID2 ID2   25.7.8  Name3 DESCRIPTION3

我的问题: table1.Ly_ID可能在table2.IDENTIFIER中有多个匹配 所以我得到了警告:较长的对象长度不是较短对象长度的倍数结果行数不是向量长度的倍数。

我的问题: 当table2.IDENTIFIER中的一个table1.Ly_ID有两个以上的匹配时,如何组合这两个表。 在这种情况下,必须将table1.Nb_ID复制到table3.Nb_ID中。这就是我不知道该怎么做。

我试过这个:

table3<-cbind(table1[,1],table1[,2],table2$CODE[table1[,2]==table2$IDENTIFIER],...)

1 个答案:

答案 0 :(得分:2)

dplyr的一种方法是:

library(dplyr)

#df1 is your table 1, and df2 is your table 2
inner_join(df1, df2, by = c("Ly_ID" = "IDENTIFIER"))

#  Ly_ID Nb_ID    CODE  NAME  DESCRIPTION
#1   ID1 NbID1 1.1.1.1 Name1 DESCRIPTION1
#2   ID2 NbID2 1.1.1.2 Name2 DESCRIPTION2
#3   ID2 NbID2  25.7.8 Name3 DESCRIPTION3