Я пытаюсь выполнить слияние, то есть связать два набора данных на основе общей строки. Однако переменная, которую я пытаюсь связать, со временем меняется, поэтому при слиянии необходимо учитывать дату, чтобы связать правильное значение. Вместо того, чтобы иметь матрицу для значения, связываемого с каждой датой, у меня есть матрица, которая дает дату каждого изменения значения .
Например, скажем, я хочу объединить цена яблок и апельсинов в списке яблок и апельсинов, приобретенных в определенные даты. Мой первый фрейм данных (транзакции) содержит дату совершения покупки и дату покупки: яблоко или апельсин. Второй фрейм данных содержит даты, когда цены на яблоки и апельсины изменились, и то, на что они изменились (в этом примере цены меняются 1 января, но на самом деле это может быть любая дата.
> transactions <- data.frame(Date_Purchased = as.Date(c("02/01/2018", "02/01/2020", "02/01/2019", "02/01/2020"), format = "%d/%m/%Y"), Item_Purchased = c("APPLE", "APPLE", "ORANGE", "ORANGE"))
> transactions
Date_Purchased Item_Purchased
1 2018-01-02 APPLE
2 2020-01-02 APPLE
3 2019-01-02 ORANGE
4 2020-01-02 ORANGE
>price <- data.frame(Date=as.Date(c("01/01/2018", "01/01/2019", "01/01/2020", "01/01/2018", "01/01/2019", "01/01/2020"), format = "%d/%m/%Y"), Item = c("APPLE", "APPLE", "APPLE", "ORANGE", "ORANGE", "ORANGE"), Price = c(0.30, 0.35, 0.40, 0.60, 0.70, 0.75))
> price
Date Item Price
1 2018-01-01 APPLE 0.30
2 2019-01-01 APPLE 0.35
3 2020-01-01 APPLE 0.40
4 2018-01-01 ORANGE 0.60
5 2019-01-01 ORANGE 0.70
6 2020-01-01 ORANGE 0.75
Стоимость яблока 2 января 2018 года составляет 30 c, а 2 января 2020 года - 40 c. Аналогично, стоимость апельсина 2 января 2019 года составит 70 c, а 2 января 2020 года - 75 c. .
Таким образом, мне нужно, чтобы объединенный набор данных выглядел так:
Date_Purchased Item_Purchased Price_On_Date_Purchased
1 2018-01-02 APPLE 0.30
2 2020-01-02 APPLE 0.40
3 2019-01-02 ORANGE 0.70
4 2020-01-02 ORANGE 0.75
К сожалению, я действительно ограничен на машине, на которой я использую, что у меня нет доступа к библиотеки CRAN и не могу загрузить дополнительные пакеты, а это значит, что я не смог использовать функцию neardate () в том, что я пробовал, что, на мой взгляд, было бы полезно.
Это уровень выше того, что я привык делать на R, так что, честно говоря, я немного растерялся.