Объединение или объединение строк даст вам десять рядов, я не думаю, что это то, что вам нужно. Он также не разделяет столбцы Tag
.
Я думаю, вам нужна операция merge
или объединение.
merge(test.df1, test.df2, by = c("ID", "Year"), all=TRUE)
# ID Year Location Tag.x Length Species Tag.y
# 1 H1 2013 Site1 272 46 1 631
# 2 H12 2017 <NA> NA NA 3 135
# 3 H2 2013 Site2 236 984 2 236
# 4 H3 2014 Site3 150 68 3 755
# 5 H34 2015 Site1 594 65 NA NA
# 6 H4 2014 Site4 698 12 4 698
Это отличается от того, что вы перечислили в своем вопросе, но я думаю, что предпосылка правильная.
Редактировать . Ближе к вашему вопросу, здесь мы обновляем Tag.y
до NA
, где оно соответствует Tag.x
.
out <- merge(test.df1, test.df2, by = c("ID", "Year"), all=TRUE)
out <- within(out, { Tag.y[Tag.x == Tag.y] = NA_integer_ })
out
# ID Year Location Tag.x Length Species Tag.y
# 1 H1 2013 Site1 272 46 1 631
# 2 H12 2017 <NA> NA NA 3 135
# 3 H2 2013 Site2 236 984 2 NA
# 4 H3 2014 Site3 150 68 3 755
# 5 H34 2015 Site1 594 65 NA NA
# 6 H4 2014 Site4 698 12 4 NA