【发布时间】:2017-09-11 15:47:58
【问题描述】:
我想获取具有关联“所有者”和日期的电子邮件列表,并将它们与传入的订单、日期和值进行匹配。匹配键是电子邮件,但我希望它在最近的日期匹配,因为在某些情况下,电子邮件地址可能有 2 个不同的所有者。
可重现的例子:
require(dplyr)
e <- c("e3r@gmail.com", "e3r@gmail.com", "poi@aol.com", "tyu@gmail.com", "poi@aol.com", "tyu@gmail.com")
d <- c("2017-01-01", "2017-04-05", "2017-04-12", "2017-05-05", "2017-08-05", "2017-12-05")
p <- c("Jeff", "Sam", "Sam", "Jeff", "Matt", "Matt")
df <- data_frame(e, d, p) %>% mutate(d=as.Date(d))
o <- c("e3r@gmail.com", "poi@aol.com", "sdf@gmail.com", "tyu@gmail.com")
d2 <- c("2017-02-02", "2017-04-28", "2017-05-05", "2017-07-01")
a <- c(600.50, 3000, 4999.99, 2050.6)
df2 <- data_frame(o, d2, a) %>% mutate(d2 = as.Date(d2))
第一个df是p人拥有的电子邮件地址的映射。 df2 是带有这些电子邮件地址的订单,我想在df2 中添加一列,以固定正确的“所有者”,即拥有该电子邮件地址的人和 em> 最接近日期。
想要的结果:
> df2
# A tibble: 4 x 3
o d2 a newowner
<chr> <date> <dbl> <char>
1 e3r@gmail.com 2017-02-02 600.50 "Jeff"
2 poi@aol.com 2017-04-28 3000.00 "Sam"
3 sdf@gmail.com 2017-05-05 4999.99 NA
4 tyu@gmail.com 2017-07-01 2050.60 "Jeff"
目前,这不是一个大问题 - 在“拥有”电子邮件地址的 70k 条记录中,只有约 86 例重复。但是,所有权在一年中的最后几个月正在发生变化,因此如果所有权转移,可能会引入大量重复。我目前正在使用最远日期的所有者,并覆盖这 86 个示例中的其他所有者。
感谢您的帮助!
【问题讨论】: