Tidyverse решение:
library(tidyverse)
Dt1%>%
group_by(ID)%>%
filter(all(!barcode %in% Dt2$barcode))%>%
ungroup()
# A tibble: 3 x 2
barcode ID
<int> <chr>
1 4 BB
2 5 BB
3 8 EE
Данные:
Dt1 <- tribble(
~barcode, ~ID,
1L, 'AA',
2L, 'AA',
3L, 'AA',
4L, 'BB',
5L, 'BB',
6L, 'CC',
7L, 'DD',
8L, 'EE')
Dt2 <- tribble (
~barcode, ~weight,
1L, 55L,
3L, 45L,
6L, 35L,
7L, 80L)