Use a função Merge, e vai juntando de duas em duas.
O comando Merge vai te pedir dois dataframes e por qual coluna juntar eles (Fazer o Join)
Existe um quarto argumento, que ele vai perguntar se você so quer juntar casos completos, ou se tiver um nome de especie numa tabela e não na outra, se você quer que essa linha apareca na tabela final preenchida com NA ou não.
veja que são duas tabelas, x e y, e a gente pode querer juntar pela coluna k1 ou k2, ou os 2, veja o que o incomparables faz também.
> x <- data.frame(k1 = c(NA,NA,3,4,5), k2 = c(1,NA,NA,4,5), data = 1:5)
> y <- data.frame(k1 = c(NA,2,NA,4,5), k2 = c(NA,NA,3,4,5), data = 1:5)
> merge(x, y, by = c("k1","k2")) # NA's match
k1 k2 data.x data.y
1 4 4 4 4
2 5 5 5 5
3 NA NA 2 1
> merge(x, y, by = "k1") # NA's match, so 6 rows
k1 k2.x data.x k2.y data.y
1 4 4 4 4 4
2 5 5 5 5 5
3 NA 1 1 NA 1
4 NA 1 1 3 3
5 NA NA 2 NA 1
6 NA NA 2 3 3
> merge(x, y, by = "k2", incomparables = NA) # 2 rows
k2 k1.x data.x k1.y data.y
1 4 4 4 4 4
2 5 5 5 5 5
>