The following example best speaks for itself.
I would like to get the "desired" outcome.
Any efficient R way to do it is welcome.
df1 = data.frame(id = c(1:6), feature1 = c("class1", "class2", "class3", "class4", "class5", "class6"))
df2 = data.frame(id = c(2, 2, 2, 4, 6), feature2 = c("a", "b", "c", "d", "e"))
desired <- data.frame(id = c(2, 2, 2, 4, 6), feature2 = c("a", "b", "c", "d", "e"), feature1 = c(rep("class2", 3), "class4", "class6"))
> df1
  id feature1
1  1   class1
2  2   class2
3  3   class3
4  4   class4
5  5   class5
6  6   class6
> df2
  id feature2
1  2        a
2  2        b
3  2        c
4  4        d
5  6        e
> desired
  id feature2 feature1
1  2        a   class2
2  2        b   class2
3  2        c   class2
4  4        d   class4
5  6        e   class6
 
    