是否可以将两个 .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
可能会保持简单并按小时计算
我有两个名为 '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
可能会保持简单并按小时计算