У меня есть 2 кадра данных, один с идентификаторами компании и 12 месяцев для каждой компании (все 12 месяцев последовательны, но для каждой компании существует разная последовательность месяцев), и больший кадр данных с идентификаторами компании, все возможные месяцы и 12различные поля доходов для каждого месяца и комбинации компаний.
Я хочу объединить их, чтобы у меня был информационный кадр с идентификаторами компаний и 12 датами для каждой компании, но только одно поле дохода для каждой компании и комбинации дат.Поле дохода, которое я хочу включить, зависит от порядка поля месяца в первом кадре данных. Надеюсь, приведенный ниже пример объясняет это.
Я попытался просто объединить кадры данных, но затем я получил 12 сумм дохода за каждыйкомбинация компании и месяца.
Ниже приведен пример, в котором для каждой компании используется всего 2 месяца, так как, надеюсь, этого достаточно, чтобы показать, что я хотел бы сделать (я использую lubridate для создания дат в этом примере).
companies <- data.frame(
Name = c( rep("Company1",2), rep("Company2",2)),
Month = c(ymd("2016-09-01"),
ymd("2016-10-01"),
ymd("2017-12-01"),
ymd("2018-01-01")
)
)
revenues <- data.frame(
Name = c( rep("Company1",5), rep("Company2",5)),
Month = c(
rep(
c(
ymd("2016-09-01"),
ymd("2016-10-01"),
ymd("2016-11-01"),
ymd("2017-12-01"),
ymd("2018-01-01")
), 2)
),
RollingRev1 = c(1000, 850, 900, 950, 875, 2350, 1900, 2200, 2150, 2400),
RollingRev2 = c(1700, 1850, 1750, 1850, 1825, 4500, 4250, 4100, 4350, 4550)
)
Итак, это мои начальные кадры данных:
companies
Name Month
1 Company1 2016-09-01
2 Company1 2016-10-01
3 Company2 2017-12-01
4 Company2 2018-01-01
revenues
Name Month RollingRev1 RollingRev2
1 Company1 2016-09-01 1000 1700
2 Company1 2016-10-01 850 1850
3 Company1 2016-11-01 900 1750
4 Company1 2017-12-01 950 1850
5 Company1 2018-01-01 875 1825
6 Company2 2016-09-01 2350 4500
7 Company2 2016-10-01 1900 4250
8 Company2 2016-11-01 2200 4100
9 Company2 2017-12-01 2150 4350
10 Company2 2018-01-01 2400 4550
Я хочу закончить следующим кадром данных
Name Month Revenue
1 Company1 2016-09-01 1000 [this is RollingRev1 as it is the 1st month]
2 Company1 2016-10-01 1850 [this is RollingRev2 as it is the 2nd month]
3 Company2 2017-12-01 2150 [this is RollingRev1 as it is the 1st month]
4 Company2 2018-01-01 4550 [this is RollingRev2 as it is the 2nd month]
Все остальные месяцы и поля доходаигнорируются.Действительно, критически важным является начальный месяц для каждой компании, поскольку он определяет последовательность месяцев и выбранные поля дохода для каждого месяца, но я не знаю, как использовать этот факт для правильного объединения кадров данных.