Join two data frames in R based on closest timestamp

前端 未结 2 1538
终归单人心
终归单人心 2020-11-30 05:56

Hi I have two tables (table1 and table2 below) and would like to join them based on the closest timestamp to form expected_output. Some kind of solution involving dplyr wou

2条回答
  •  悲哀的现实
    2020-11-30 06:43

    This is liable to be slow, but...

    d   <- function(x,y) abs(x-y) # define the distance function
    idx <- sapply( table1$date, function(x) which.min( d(x,table2$date) )) # find matches
    
    cbind(table1,table2[idx,-1,drop=FALSE])
    #                  date val1 val2
    # 2 2015-07-16 08:55:00   94   90
    # 3 2015-06-20 00:15:00   33   18
    # 1 2015-05-12 15:00:00   53   67
    

    Another way of constructing idx is max.col(-outer(table1$date, table2$date, d)).

提交回复
热议问题