Ваша проблема не очень хорошо определена, вот 2 решения, которые удовлетворяют вашим критериям, но ни одно из них не выглядит как ваш желаемый результат:
library(data.table)
data <- setDT(data.frame(name=c(NA, "bob1", "bob", "jack", "bob1", "bob"), ID=c(1,1,4,3,2,1)))
data <- na.omit(data) # remove NAs
data$ID <- data$ID[match(data$name,data$name)] # harmonize ids
data$name <- data$name[match(data$ID,data$ID)] # harmonize names
data
# name ID
# 1: bob1 1
# 2: bob 4
# 3: jack 3
# 4: bob1 1
# 5: bob 4
data <- setDT(data.frame(name=c(NA, "bob1", "bob", "jack", "bob1", "bob"), ID=c(1,1,4,3,2,1)))
data <- na.omit(data) # remove NAs
data$name <- data$name[match(data$ID,data$ID)] # harmonize names
data$ID <- data$ID[match(data$name,data$name)] # harmonize ids
data
# name ID
# 1: bob1 1
# 2: bob 4
# 3: jack 3
# 4: bob1 1
# 5: bob1 1