合并没有对应 ID 的数据框

Merge dataframes with no corresponding ID

我有两个数据帧,一个有 ID 和分类结果,第二个有 ID 对应于第一个数据帧的分类结果并与第二个分类输出相关联。我正在尝试根据第一个分类与第二个数据帧的分类 ID 之间的对应关系,将第二个分类输出添加到第一个数据帧。由于ID不对应,无法进行简单的合并。

我不确定我是否清楚,所以我将提供一个可重现的示例。

set.seed(15)
df1 <- data.frame(c(1:20), c(floor(runif(20, min=1, max=6))))
df1 <- setNames(df1, c("ID", "classif"))
df2 <- data.frame(c(1:6), c(floor(runif(6, min=1, max=3))))
df2 <- setNames(df2, c("ID_classif", "classif2")) 

下面的第一个数据框显示了 ID 和第一个分类结果

> df1
   ID classif
1   1       4
2   2       1
3   3       5
4   4       4
5   5       2
6   6       5
7   7       5
8   8       2
9   9       4
10 10       5

下面的第二个数据框显示了分类 ID 和第二个分类结果。

> df2
  ID_classif classif2
1   1        1
2   2        2
3   3        2
4   4        3
5   5        3
6   6        3

我想要获得的数据框如下图所示,它基本上是第一个数据框,使用“classif”和“ID_classif”之间的对应关系添加了第二个分类

> df3
   ID classif classif2
1   1       4        3
2   2       1        1
3   3       5        3
4   4       4        3
5   5       2        2
6   6       5        3
7   7       5        3
8   8       2        2
9   9       4        3
10 10       5        2

可能的解决方案:

library(tidyverse)

df1 %>% 
  left_join(df2, by = c("classif" = "ID_classif")) 

#>    ID classif classif2
#> 1   1       4        1
#> 2   2       1        2
#> 3   3       5        2
#> 4   4       4        1
#> 5   5       2        2
#> 6   6       5        2
#> 7   7       5        2
#> 8   8       2        2
#> 9   9       4        1
#> 10 10       5        2
#> 11 11       1        2
#> 12 12       4        1
#> 13 13       3        1
#> 14 14       4        1
#> 15 15       5        2
#> 16 16       5        2
#> 17 17       3        1
#> 18 18       5        2
#> 19 19       1        2
#> 20 20       4        1