Это ситуация слияния
В общем merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all)
Вы должны сделать что-то вроде
AB <- merge(x = A, y = B, by = "X")
ABC <- merge(x = AB, y = C, by = "F")
Вы должны проверить «все» параметры для сохранения или отсутствия несоответствующих записей, а затем подмножество AB C для хранения только столбцов F, Y, Z и G.