a <- merge(Matrix1, Matrix2,
by.Matrix2 = c(Matrix2[,1], Matrix2$[,3]),
by.Matrix1 = c(Matrix1[,1], Matrix1[,3]),
all = TRUE)
Update, much cleaner version from @Ananda:
a <- merge(Matrix1, Matrix2, by = c("Col1", "Col3"), all = TRUE)