我有两个数据范围,我想根据时间戳将它们合并,但请保留所有时间戳。本质上,要将每个Med Timestamp(DataFrame A(与所有实验室时间戳(DataFrame B(结合到下一个Med Timestamp之前和之后。
。我只是尝试合并它们并进行滚动加入。
我想将DataFrame A与DataFrame B合并以获取DataFrame c。
第一个数据帧-Med Times(A(
a<-data.frame("Patient" = c(rep("A", times = 2)),"Med_Time" = c(as.POSIXct("2018-05-11 10:37"), as.POSIXct("2018-05-12 17:16")))
第二个数据框 - 实验室时间(b(
b<-data.frame("Patient" = c(rep("A", times = 13)),"Lab_Time" = c(as.POSIXct("2018-05-11 02:15:00"),
as.POSIXct("2018-05-11 06:25:00"),
as.POSIXct("2018-05-11 12:45:00"),
as.POSIXct("2018-05-11 16:51:00"),
as.POSIXct("2018-05-11 21:51:00"),
as.POSIXct("2018-05-12 05:46:00"),
as.POSIXct("2018-05-12 12:42:00"),
as.POSIXct("2018-05-12 17:09:00"),
as.POSIXct("2018-05-12 21:16:00"),
as.POSIXct("2018-05-13 06:04:00"),
as.POSIXct("2018-05-13 10:45:00"),
as.POSIXct("2018-05-13 16:02:00"),
as.POSIXct("2018-05-13 21:40:00")),"Lab_Res" = c(70,80,122,180,161,170,210,212,278,156,172,174,165))
预期结果(c(
c<-data.frame("Patient" = c(rep("A", times = 13)),"Med_Time" = c(rep(as.POSIXct("2018-05-11 10:37:00"), times = 8),
rep(as.POSIXct("2018-05-12 17:16:00"), times = 5)),"Lab_Time" = c(as.POSIXct("2018-05-11 02:15:00"),
as.POSIXct("2018-05-11 06:25:00"),
as.POSIXct("2018-05-11 12:45:00"),
as.POSIXct("2018-05-11 16:51:00"),
as.POSIXct("2018-05-11 21:51:00"),
as.POSIXct("2018-05-12 05:46:00"),
as.POSIXct("2018-05-12 12:42:00"),
as.POSIXct("2018-05-12 17:09:00"),
as.POSIXct("2018-05-12 21:16:00"),
as.POSIXct("2018-05-13 06:04:00"),
as.POSIXct("2018-05-13 10:45:00"),
as.POSIXct("2018-05-13 16:02:00"),
as.POSIXct("2018-05-13 21:40:00")),"Lab_Res" = c(70,80,122,180,161,170,210,212,278,156,172,174,165))
任何见解都会有所帮助!谢谢!
我们可以使用 data.table
join
library(data.table)
setDT(a)[setDT(b)[, .(Patient, Med_Time = Lab_Time, Lab_Time, Lab_Res)],
on = .(Patient, Med_Time), roll = -Inf]