dplyr - объединяет таблицы на основе разницы дат - PullRequest
0 голосов
/ 26 февраля 2019

Уже поздно, и я не могу понять это.Я использую lubridate и dlypr.

Мои данные таковы:
table1 = 1 наблюдение за субъектом с датой

table2 = 1 или более наблюдений за субъектом с соответствующими датами

Когда я ухожу, я добавляю наблюдения.Это потому, что у меня есть несколько записей в таблице 2, которые соответствуют ключу.Как можно просто сделать это условным объединением, чтобы объединялась только 1 соответствующая запись из таблицы 2, если ее дата наиболее близка к дате в таблице 1.

Извините, если это было многословно.

1 Ответ

0 голосов
/ 26 февраля 2019

Используйте data.table-package, чтобы присоединиться.Используйте roll = "nearest" для получения ближайшего совпадения ..

library(data.table)
dt1 <- data.table( id = 1:10, date = 1:10, stringsAsFactors = FALSE )
dt2 <- data.table( date = 6:15, letter = letters[1:10], stringsAsFactors = FALSE )

dt1[, letter := dt2[dt1, letter, on = "date", roll = "nearest"] ][]

#    id date letter
# 1:  1    1      a
# 2:  2    2      a
# 3:  3    3      a
# 4:  4    4      a
# 5:  5    5      a
# 6:  6    6      a
# 7:  7    7      b
# 8:  8    8      c
# 9:  9    9      d
# 10: 10   10     e
...