【发布时间】:2020-11-25 19:12:35
【问题描述】:
我有两个数据框 - 一个是交易数据框,其中显示了商品编号和交易日期。另一个是显示产品价格(随时间变化)的价格数据框。
我需要将正确的价格从价格数据框合并到交易数据框。下面的模拟示例:
transaction_df<-data.frame(Date=as.Date(c("18/12/2013", "12/09/2019", "15/8/2017", "09/01/2018"), format = "%d/%m/%Y"), Item = c(8002, 8004, 8001, 8002))
item_price<-data.frame(item=c(8000, 8000, 8001, 8002, 8002, 8002, 8003, 8003, 8004, 8004), date=as.Date(c("17/02/2015", "09/11/2017", "01/02/2012", "30/09/2012", "12/05/2017", "23/11/2019", "20/01/2013", "18/03/2017", "07/02/2018", "19/10/2019"), format = "%d/%m/%Y"), price=c(12.47, 13.20, 35.99, 21.45, 20.83, 20.55, 44.60, 45.00, 5.35, 6.80))
result<-data.frame(Date=as.Date(c("18/12/2013", "12/09/2019", "15/8/2017", "09/01/2018"), format = "%d/%m/%Y"), Item = c(8002, 8004, 8001, 8002), result=c(21.45, 5.35, 35.99, 20.83))
价格是来自的价格,即如果只有一个价格,那就是价格,或者如果交易发生在今天,则适当的价格将是最近的价格。
当然,我可以使用 merge() 来复制价格,但还没有考虑到日期。我开始编写一个循环来完成它(非常粗略),但我有大量数据,而且我确信必须有一种更清洁的方法 - 也许使用 filter()。
不幸的是,我正在使用的机器无法访问包,因此 DPLYR 不是一个选项,但我很想看看是否/如何使用 transform() 来完成。
非常感谢您的帮助:)
【问题讨论】:
-
好像是交易日期和商品日期不匹配。
-
是的,抱歉我没说清楚。如果价格数据框仅包含价格变化。正确的价格将是最近的价格变化。在几十年的时间里,我有数千次价格变化 - 所以虽然我可以为每件商品/每一天制作一个数据框,但它会占用大量内存。
标签: r