是否可以将两个 .csv 文件合并到最近的时间?

Is it possible to merge two .csv files to the nearest hour?

我有两个名为 'tag.csv' 和 'wind.csv' 的 .csv 文件,我想根据 'Date' 列合并它们。但是,正如您从下面的数据中看到的那样,时间并不完全匹配。

tag.csv

Date
13/12/2014 05:11
13/12/2014 05:43
13/12/2014 06:34

wind.csv

Date
13/12/2014 05:00
13/12/2014 06:00
13/12/2014 07:00

我正在使用以下简单脚本。

tag<- read.csv("tag.csv")
wind<- read.csv("wind.csv")
myfulldata = merge(tag, wind)

有没有我可以添加的命令,以便数据与最近的时间合并?例如,13/12/2014 05:11 将与 13/12/2014 05:00

合并

data.table 包有自己的合并方法和一个名为 roll 的选项,允许最接近的匹配。例如

library(data.table)
dt1 <- data.table(a = c(1,2,3,4), b=1:4)
dt2 <- data.table(a = c(1.6,2.1,3.2,4.9), c=1:4)
setkeyv(dt1, "a")
setkeyv(dt2, "a")
dt1[dt2, roll="nearest"]

另一个例子见Join R data.tables where key values are not exactly equal--combine rows with closest times

尽管如此,为了稳健,我可能会改为进行一些日期时间操作以强制它们都在最近的时间,然后在其他所有方法都失败时进行最近的连接

编辑:此方法不适用于 data.frame 对象,如果您之前没有使用过 data.table 可能会保持简单并按小时计算