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
fromlubridate
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我无法执行它。使用模糊匹配,除非我更改了列的数据类型。我还在这里添加了额外的列。这些小细节有时很重要。