R 基于多列合并两个数据集,但使时间列在分钟范围内灵活

R 基于多列合并两个数据集,但使时间列在分钟范围内灵活,r,time,merge,strftime,R,Time,Merge,Strftime,我有一个像这样的数据集 id|date |social_id | race | age | time |Location 1 04/02/19 2000001 W 29 "04:10:05" HA 2 04/06/20 2000002 B 22 "05:12:49" CA 3 04/12/20 2000021

我有一个像这样的数据集

id|date     |social_id     | race    | age | time        |Location
 1  04/02/19  2000001          W        29    "04:10:05"  HA
 2  04/06/20  2000002          B        22    "05:12:49"  CA
 3  04/12/20  2000021          B        26    "09:13:32"  MA
 4  08/14/20  2000026          A        29    "06:12:34"  VT
    id2|date     |social_id     | race    | age | time| sex
      1  04/02/19  2000001          W        29    "04:30:05"  M
      2  04/06/20  2000002          B        22    "05:49:49"  F
      3  04/12/20  2000021          B        26    "10:13:32"  M
      4  08/14/20  2000026          A        29    "06:19:54"  F
第二个数据集如下所示

id|date     |social_id     | race    | age | time        |Location
 1  04/02/19  2000001          W        29    "04:10:05"  HA
 2  04/06/20  2000002          B        22    "05:12:49"  CA
 3  04/12/20  2000021          B        26    "09:13:32"  MA
 4  08/14/20  2000026          A        29    "06:12:34"  VT
    id2|date     |social_id     | race    | age | time| sex
      1  04/02/19  2000001          W        29    "04:30:05"  M
      2  04/06/20  2000002          B        22    "05:49:49"  F
      3  04/12/20  2000021          B        26    "10:13:32"  M
      4  08/14/20  2000026          A        29    "06:19:54"  F
请注意,除时间外,所有列都相同。我想基于这些列进行连接

日期、社交id、种族年龄和时间。但是,两个数据集的时间不匹配

df3 <- df1 %>% left_join(df2,by=c("date","social_id","race","time"))

我们可以使用
round\u date
from
lubridate

library(dplyr)
library(lubridate)
library(stringr)
df1 %>% 
    mutate(datetime = round_date(mdy_hms(str_c(date, time,
       sep = ' ')), '45 mins')) %>% 
    left_join(df2 %>%
       mutate(datetime = round_date(mdy_hms(str_c(date, time,
          sep = ' ')), '45 mins')), 
    by = c('datetime', 'id' = 'id2', 'race', 'age'))

是否要在合并的数据帧中保留时间列?在这种情况下,您会保留哪一个?@akrun添加了两个示例的dput。谢谢。@NicoleElChaar我打算保留时间栏。我假设您只剩下time.df1和time.df2。那太好了这不是你的复制品吗?在这之前问了3个小时,在被问之前回答了1个小时。@r2evans我无法执行它。使用模糊匹配,除非我更改了列的数据类型。我还在这里添加了额外的列。这些小细节有时很重要。