一人加入R

一人加入R,r,R,有两个文件,数据如下所示: 文件1 文件2: Col1 col2 **A** XYZ **B** PQR **B** QES **C** UIY **D** UUI **D** HUI **E** BIG 我想在col1上连接这两个文件,但我只想要那些只有一对一映射的条目。输出应如下所示: 文件A(我们有匹配项的地方) A10 XYZ C30 UIY 文件B(我们没有找到一对一映射) col1 col2 B20 D 40 由于

有两个文件,数据如下所示:
文件1

文件2:

Col1   col2   
**A**   XYZ  
**B**   PQR  
**B**   QES  
**C**   UIY  
**D**   UUI  
**D**   HUI  
**E**   BIG   
我想在col1上连接这两个文件,但我只想要那些只有一对一映射的条目。输出应如下所示:
文件A(我们有匹配项的地方)
A10 XYZ
C30 UIY

文件B(我们没有找到一对一映射)

col1 col2
B20
D 40


由于B和D在文件2中有多个条目,因此我不希望这些记录出现在我的联接结果中。

在对第二个数据集进行子集设置后,我们可以使用
内部联接

library(dplyr)
df2 %>% 
   group_by(Col1) %>% 
   filter(n()==1) %>% 
   inner_join(., df1, by = "Col1")
#     Col1  col2  Col2
#   <chr> <chr> <int>
#1     A   XYZ    10
#2     C   UIY    30

或使用
data.table

library(data.table)
na.omit(setDT(df2)[df1,  Col2 := Col2[.N==1],on = "Col1", by = .EACHI])
#   Col1 col2 Col2
#1:    A  XYZ   10
#2:    C  UIY   30

我会在连接后添加过滤器,以防df1有重复的值。我现在得到了一个匹配的值,我想分离那些在df2中没有匹配的值,因此将有两个文件:一个是有匹配的文件,另一个是没有匹配的文件。我会在我的测试数据集上测试你的方法,非常感谢@HimangSoukaLa:这是基于你的例子,它是为这一点而努力的。@ HimangSoukaLa如果是一个新的问题,请考虑把它作为一个新的问题。它不是一个新问题,它只是对以前的合并后的帖子的扩展:
res <- df2 %>%
        inner_join(., df1, by = "Col1") %>%
        group_by(Col1) %>%
        filter(n()==1)
res %>%
    select(Col1, Col2) %>% 
    anti_join(df1, .)
#  Col1 Col2
#1    B   20
#2    D   40
library(data.table)
na.omit(setDT(df2)[df1,  Col2 := Col2[.N==1],on = "Col1", by = .EACHI])
#   Col1 col2 Col2
#1:    A  XYZ   10
#2:    C  UIY   30