我如何匹配一列的值根据另一个数据帧在R使用dplyr?



我有两个数据集,看起来像这样:第一个是:

<表类> id 齿轮 tbody><<tr>A1A2 td>A3CA4DA5EA6FA7G tdA8HA9我A10G

您可以使用left_join,然后比较两列:

library(dplyr)
dat1 %>% 
left_join(dat2, by = c("id1" = "id2")) %>% 
mutate(CHECK = Gear1 == Gear2) %>% 
select(id = id1, gear = Gear1, CHECK)
# A tibble: 10 × 3
id    gear  CHECK
<chr> <chr> <lgl>
1 A1    A     TRUE 
2 A2    B     FALSE
3 A3    C     TRUE 
4 A4    D     FALSE
5 A5    E     TRUE 
6 A6    F     NA   
7 A7    G     TRUE 
8 A8    H     FALSE
9 A9    I     TRUE 
10 A10   G     NA   

查看dplyr文档如何使用连接。

编辑

感谢Ritchie Sacramento在select函数中直接重命名的技巧。

试试这个:

dat1 |> 
mutate(check = ifelse(!id1 %in% dat2$id2, 
NA,
ifelse(paste(id1, Gear1) %in% paste(dat2$id2, dat2$Gear2), 
TRUE, 
FALSE)))
library(tidyverse)
dat1 = rename(dat1, id = 'id1')
dat2 = rename(dat2, id = 'id2')
check_data = dat1 %>% 
full_join(dat2, by='id') %>% 
mutate(check = ifelse(Gear1==Gear2, TRUE, FALSE)) %>% 
filter(! is.na(Gear1))

输出:

check_data
# A tibble: 10 x 4
id    Gear1 Gear2 check
<chr> <chr> <chr> <lgl>
1 A1    A     A     TRUE 
2 A2    B     A     FALSE
3 A3    C     C     TRUE 
4 A4    D     E     FALSE
5 A5    E     E     TRUE 
6 A6    F     NA    NA   
7 A7    G     G     TRUE 
8 A8    H     B     FALSE
9 A9    I     I     TRUE 
10 A10   G     NA    NA   

最新更新