Is this what you are looking for?
library(dplyr)
df <- 
  full_join(df.1, df.2)
#> Joining, by = c("class", "geom", "eng", "draw")
df
#>    class math hist geom eng draw
#> 1      1  0.7  0.6  0.7 0.7  0.8
#> 2      6  0.4  0.4  0.4 0.4  0.6
#> 3      8  0.7  0.3  0.7 0.7  0.7
#> 4      9  0.7  0.6  0.7 0.7  0.8
#> 5      7  0.4  0.4  0.4 0.4  0.6
#> 6      8  0.7  0.3  0.7 0.7  0.7
#> 7      9  0.7  0.6  0.7 0.7  0.8
#> 8      6  0.4  0.4  0.4 0.4  0.6
#> 9      4  0.7  0.3  0.7 0.7  0.7
#> 10     2   NA   NA  0.7 0.7  0.8
#> 11     1   NA   NA  0.4 0.4  0.6
#> 12     2   NA   NA  0.7 0.7  0.7
#> 13     3   NA   NA  0.7 0.7  0.8
#> 14     1   NA   NA  0.4 0.4  0.6
#> 15     3   NA   NA  0.7 0.7  0.7
Created on 2020-07-11 by the reprex package (v0.3.0)
data
df.1 <- data.frame(class = c(1,6,8,9,7,8,9,6,4), 
                   math = c(0.7, 0.4, 0.7), 
                   hist = c(0.6, 0.4, 0.3), 
                   geom = c(0.7, 0.4, 0.7), 
                   eng = c(0.7, 0.4, 0.7), 
                   draw = c(0.8, 0.6, 0.7))
df.2 <- data.frame(eng = c(0.7, 0.4, 0.7), 
                   class = c(2, 1, 2, 3, 1, 3),
                   draw = c(0.8, 0.6, 0.7),
                   geom = c(0.7, 0.4, 0.7) )