已经晚了,我无法弄清楚。我正在使用lubridate和dlypr。
我的数据如下:
table1 = 1每个受试者的观察结果,并带有日期
table2 =每个对象具有相关日期的1个或更多观察结果
当我退出联接时,我实际上添加了观察值。这是因为表2中有多个与键匹配的记录。我该如何简单地将其作为条件联接,以使表2中只有1条匹配记录被联接,因为它的日期最接近表1中的日期。
抱歉,这很冗长。
答案 0 :(得分:0)
使用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