У меня есть два набора данных, и их dput ниже:
Сценарий: df1 содержит данные о единичных ценах на определенные даты и время. df2 содержит код конкурента для каждой станции в df1, а также цены и название бренда конкурента. У df2 нет всех цен за единицу для дат и времени в df1. Мне нужно каким-то образом объединить df2 в df1 так, чтобы я получал дату, время, продукт, ServiceType & Brand, но NA в единичных ценах для конкурентов, чтобы я мог вычислить эти значения после.
Я пытаюсь сделать следующее:
Узнайте, какие цены за единицу даты и времени отсутствуют в df2 на основе значений в df1, обусловленных аналогичным кодом станции, типом продукта и услуги. Каждый код станции в df1 имеет несколько «кодов станций» в df2, поскольку может быть более одного участника.
Каким-то образом извлеките и объедините эту информацию, чтобы я мог вычислить значения после.
Предположим, df1 равен
date StationCode ServiceType Product unitprice
1 2017-06-01 06:00:00 1002 Self-Service GG 1.345
2 2017-06-01 07:00:00 1002 Served GG 1.456
3 2017-06-01 07:00:00 1002 Self-Service SP 1.012
dput(df1)
structure(list(date = structure(c(1496300400,
1496304000, 1496304000 ), class = c("POSIXct", "POSIXt"), tzone =
"Etc/GMT+1"), StationCode = c(1002, 1002, 1002), ServiceType =
structure(c(1L, 2L, 1L), .Label = c("Self-Service", "Served"), class
= "factor"), Product = structure(c(1L, 1L, 2L ), .Label = c("GG", "SP"), class = "factor"), unitprice = c(1.345,
1.456, 1.012)), class = "data.frame", row.names = c(NA, -3L))
и df2 равен
date compstcode StationCode ServiceType Product unitprice brand
1 2017-06-01 06:00:00 3456 1002 Self-Service GG 1.425 Shell
2 2017-06-01 06:00:00 1267 1002 Served SP 1.406 BP
3 2017-06-01 06:00:00 5488 1002 Self-Service GG 1.011 Total
dput(df2)
structure(list(date = structure(c(1496300400, 1496300400, 1496300400
), class = c("POSIXct", "POSIXt"), tzone = "Etc/GMT+1"), compstcode = c(3456,
1267, 5488), StationCode = c(1002, 1002, 1002), ServiceType = structure(c(1L,
2L, 1L), .Label = c("Self-Service", "Served"), class = "factor"),
Product = structure(c(1L, 2L, 1L), .Label = c("GG", "SP"), class = "factor"),
unitprice = c(1.425, 1.406, 1.011), brand = structure(c(2L,
1L, 3L), .Label = c("BP", "Shell", "Total"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))
Я хочу извлечь compstcode, uprice и brand из df2 в df1 так, чтобы у нас был compstcode и brand not null, тогда как uprice может быть нулевым для всех дат и времен df1.