У меня есть два фрейма данных - один - фрейм данных транзакции, который показывает номер позиции и дату транзакции. Другой - ценовой фрейм данных, который показывает цену продуктов (меняющуюся с течением времени).
Мне нужно объединить правильную цену из ценового фрейма данных с фреймом данных транзакции. Мнимый пример ниже:
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 () для копирования цен, но еще не понял, как учитывать дату. Я начал писать al oop, который бы это делал (очень грубо), но у меня огромный объем данных, и я уверен, что должен быть более чистый способ сделать это - возможно, с помощью filter ().
Машина, с которой я работаю, к сожалению, не имеет доступа к пакетам, поэтому DPLYR не вариант, хотя мне было бы интересно узнать, можно ли / как это сделать с помощью transform ().
Большое спасибо за любую помощь :)