Exactly what I was thinking
library(tidyverse)
df_1 <- data.frame(x = c(1, 1, 1), y = c("a", "a", "a"))
df_2 <- data.frame(x = c(2, 2, 2), z = c("b", "b", "b"))
top_joined <- df_1 %>%
bind_rows(df_2) %>%
select(names(df_1))
bottom_joined <- df_1 %>%
bind_rows(df_2) %>%
select(names(df_2))