【发布时间】:2018-05-04 07:05:45
【问题描述】:
我有两个表,我想根据一个变量的完全匹配和另一个变量的模糊匹配来合并它们。
考虑下面的两个表格。对于 dt1 中的每个 id1,我想在 dt2 中找到一个与大小完全匹配的 id2,并且 dt2 中的日期值等于或晚于 dt1 中的日期字段。如果有多个匹配项,我希望随机选择一个。
dt1 <- data.table(c("A", "B"), c(2, 3), as.Date(c("2013-03-27", "2014-05-08"), format = '%Y-%m-%d'))
setnames(dt1, c("V1", "V2", "V3"),
c("id1", "size", "date"))
dt2 <- data.table(1:10, c(2, 4, 3, 2, 2, 2, 3, 2, 4, 4), as.Date(c("2014-02-25", "2011-08-02", "2014-06-21", "2013-11-29", "2012-02-21", "2011-12-02",
"2014-04-22", "2011-03-05", "2014-04-21", "2014-10-29"), format = '%Y-%m-%d'))
setnames(dt2, c("V1", "V2", "V3"),
c("id2", "size", "date"))
生成的表格可能如下所示:
id1 size date id2
1: A 2 2013-03-27 1
2: B 3 2014-05-08 3
或像这样(取决于随机选择)
id1 size date id2
1: A 2 2013-03-27 4
2: B 3 2014-05-08 3
【问题讨论】:
标签: r merge data.table fuzzy-logic exact-match