我有两个要根据“日期”列合并的名为“ tag.csv”和“ wind.csv”的.csv文件。但是,从下面的数据可以看出,时间并不完全匹配。
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)
是否可以添加一条命令,使数据与最近的时间合并?例如,2014年13月12日05:11将与2014年12月13日05:00合并
答案 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
}
对象