Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 查找两个数据帧之间最接近的时间戳,并在时差为<;时合并不同的列;60年代_R_Merge_Timestamp_Closest - Fatal编程技术网

R 查找两个数据帧之间最接近的时间戳,并在时差为<;时合并不同的列;60年代

R 查找两个数据帧之间最接近的时间戳,并在时差为<;时合并不同的列;60年代,r,merge,timestamp,closest,R,Merge,Timestamp,Closest,我需要根据最近的时间戳合并两个数据帧,时间戳之间的最大差值为60秒 例如: library(lubridate) df1 <- data.frame(Timestamp = ymd_hms(c("2020-01-01 00:00:00", "2020-01-01 00:02:00", &

我需要根据最近的时间戳合并两个数据帧,时间戳之间的最大差值为60秒

例如:

library(lubridate)

df1 <- data.frame(Timestamp = ymd_hms(c("2020-01-01 00:00:00", 
                                        "2020-01-01 00:02:00", 
                                        "2020-01-01 00:04:00",
                                        "2020-01-01 00:06:00", 
                                        "2020-01-01 00:08:00", 
                                        "2020-01-01 00:10:00",
                                        "2020-01-01 00:12:00",
                                        "2020-01-01 00:14:00", 
                                        "2020-01-01 00:16:00")), 
                  Data  = c(1:9))

df2 <- data.frame(Timestamp = ymd_hms(c("2020-01-01 00:00:10", 
                                        "2020-01-01 00:02:30", 
                                        "2020-01-01 00:12:45",
                                        "2020-01-01 00:20:15")), 
                  Data  = c(10:13))

我的R技能还没有达到我自己可以解决这个问题的水平,我在这个特殊的问题上没有发现什么,有人愿意hep吗?非常感谢

这可以直接用sql表示:

library(sqldf)
sqldf("select a.*, b.Data df1_Data
  from df2 a
  left join df1 b on abs(a.Timestamp - b.Timestamp) < 60")
library(sqldf)
sqldf("select a.*, b.Data df1_Data
  from df2 a
  left join df1 b on abs(a.Timestamp - b.Timestamp) < 60")
            Timestamp Data df1_Data
1 2019-12-31 19:00:10   10        1
2 2019-12-31 19:02:30   11        2
3 2019-12-31 19:12:45   12        7
4 2019-12-31 19:20:15   13       NA