我有以下问题:
我的文件看起来像这样:
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],...)
答案 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