Можно ли объединить два файла .csv с точностью до часа? - PullRequest
0 голосов
/ 08 января 2019

У меня есть два CSV-файла с именами «tag.csv» и «wind.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)

Есть ли команда, которую я мог бы добавить, чтобы данные слились с ближайшим временем? Например, 13.12.2014 05:11 слиться с 13.12.2014 05:00

1 Ответ

0 голосов
/ 08 января 2019
Пакет

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, где значения ключей не совсем равны - объедините строки с ближайшим временем для другого примера.

Чтобы быть устойчивым, я бы, вероятно, вместо этого сделал бы некоторые манипуляции с датой и временем, чтобы заставить их обоих быть с точностью до часа, а затем сделал бы ближайшее соединение, если все остальное не удалось

edit: этот метод не будет работать на data.frame объектах, если вы не использовали data.table до того, как, возможно, останетесь простыми и круглыми часами

...