Я не знаю, есть ли готовый пакет R, но это помогает:
dfr<-data.frame(c1=c(123,132,388,792,2737,2741,2929,3396,3517,3546),
c2=c(0.244,0.194,0.47,0.105,0.199,0.115,0.087,0.190,0.163,0.123),
c3=c(NA, 0.193,0.149, NA, 0.201, NA, 0.083,0.187,0.163,NA))
hdidx<-which(!is.na(dfr[,3]))
hd<-dfr[hdidx,]
md<-dfr[-hdidx,]
closesthd<-sapply(md[,2], function(curval){which.min(abs(curval-hd[,2]))})
md[,3]<-hd[closesthd,3]
Замените номера столбцов там, где это необходимо для вашего случая + возможно, предпримите другую меру расстояния.