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

时间:2019-01-08 14:08:38

标签: r merge temporal-database

我有两个要根据“日期”列合并的名为“ tag.cs​​v”和“ wind.csv”的.csv文件。但是,从下面的数据可以看出,时间并不完全匹配。

tag.cs​​v

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)

是否可以添加一条命令,使数据与最近的时间合并?例如,2014年13月12日05:11将与2014年12月13日05:00合并

1 个答案:

答案 0 :(得分: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"]

另请参见Join R data.tables where key values are not exactly equal--combine rows with closest times

但是,为了保持健壮性,我可能会做一些日期时间操纵来将它们都强制为最近的时间,然后在所有其他方法均失败的情况下进行最近的联接

编辑:如果您未使用data.frame,在保持简洁和整点工作之前没有使用过data.table对象,则此方法将不适用于table {background: black} .contour { border: 2px solid #ccc; width: 50%; height: 20%; margin: 10px auto }对象