similar unanswered question here: merge 2 dataframes condition on timestamp question more general , not time-series specific i have 2 dataframes want merge proximity condition on 2 columns both dataframes. in sql have done like select * (select * a) t1 inner join (select * b) t2 on t1.user = t2.user , t1.label - t2.label < 2 what i'm looking canincal way above in r, like- merge(x,y,by='user', condition = x$label - y$label <=2 ) so following should without rows 3,7,11,12,13,15 etc.... set.seed(1212) <- data.frame(user=rep(paste("u",1:3,sep=''),4),label=sample.int(10,12,t)) b <- data.frame(user=rep(paste("u",1:3,sep=''),4),label=sample.int(10,12,t)) merge(a,b,by='user') user label.x label.y 1 u1 3 1 2 u1 3 3 3 u1 3 10 4 u1 3 5 5 u1 3 1 6 u1 3 3 7 u1 3 10 8 u1 3 5 9 ...