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   ...