Агрегирование при объединении двух фреймов данных в R
Конечная цель состоит в суммировании общего количества (transact_data$qty
) для каждой записи вproduct_info
гдеtransact_data$productId
существует вproduct_info
, и гдеtransact_data$date
находится междуproduct_info$beg_date
а такжеproduct_info$end_date
.
Данные приведены ниже:
product_info <- data.frame(productId = c("A", "B", "A", "C","C","B"),
old_price = c(0.5,0.10,0.11,0.12,0.3,0.4),
new_price = c(0.7,0.11,0.12,0.11,0.2,0.3),
beg_date = c("2014-05-01", "2014-06-01", "2014-05-01", "2014-06-01","2014-05-01", "2014-06-01"),
end_date = c("2014-05-31", "2014-06-31", "2014-05-31", "2014-06-31","2014-05-31", "2014-06-31"), stringsAsFactors=FALSE)
transact_data <- data.frame(productId=c('A', 'B','A', 'C','A', 'B','C', 'B','A', 'C','A', 'B'),
date=c("2014-05-05", "2014-06-22", "2014-07-05", "2014-08-31","2014-05-03", "2014-02-22",
"2014-05-21", "2014-06-19", "2014-03-09", "2014-06-22","2014-04-03", "2014-07-08"),
qty =c(12,15,5,21,13,17,2,5,11,9,6,4), stringsAsFactors=FALSE)
Моим первым шагом было объединение обоих фреймов данных по productId:
sku_transact_merge <-merge(x=product_info, y=transact_data, by = c("productId"))
Следующим шагом было вычисление суммы суммы:
sku_transact_merge$total_qty <- ifelse(sku_transact_merge$date >= sku_transact_merge$beg_date &
sku_transact_merge$date <= sku_transact_merge$end_date,
aggregate(qty ~ productId+beg_date+end_date,
data= sku_transact_merge, sum), 0)
Результат не то, что я хочу, и я получаю ошибку, которая говорит
(список) объект не может быть приведен к типу 'double'
Любые указатели о том, как правильно выполнить эту логику, будут высоко оценены!