0

我有两个名为“tag.cs​​v”和“wind.csv”的 .csv 文件,我想根据“日期”列进行合并。但是,正如您从下面的数据中看到的那样,时间并不完全匹配。

标签.csv

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

风.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 合并

4

1 回答 1

2

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"]

请参阅在键值不完全相等的情况下加入 R data.tables - 将行与最接近的时间组合为另一个示例。

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

编辑:此方法不适用于data.frame对象,如果您以前没有使用data.table过,可能会保持简单且全天候

于 2019-01-08T16:32:33.310 回答