У меня есть фрейм данных df
, который имеет следующую структуру:
NEW_UPC IRI_KEY WEEK DOLLARS
13000016961 272568 1220 3.29
13000016961 272568 1221 3.29
13000016961 272568 1222 3.29
13000016961 272568 1223 9.87
13000016962 272568 1224 3.29
13000016961 272568 1224 9.87
13000016962 272568 1225 3.29
13000016961 272568 1225 9.87
13000016962 272568 1226 3.29
13000016961 272568 1226 9.87
13000016961 272568 1227 9.87
13000016961 272568 1228 3.29
13000016963 272568 1228 3.29
13000016963 272568 1229 3.29
13000016962 272568 1230 3.29
13000016961 272568 1230 3.29
13000016963 272568 1230 13.16
13000016962 272568 1231 3.29
13000016963 272568 1231 9.87
21600016430 272568 1231 17.43
13000016962 272568 1232 9.87
Я пытаюсь получить сумму DOLLARS
за первые 12 недель для каждой комбинации NEW_UPC
- IRI_KEY
. Я попробовал следующий код:
df %>%
group_by(NEW_UPC,IRI_KEY) %>%
mutate(START = min(WEEK), END = max(WEEK)) %>% ungroup() %>%
group_by(NEW_UPC,IRI_KEY) %>%
summarise(Sales = case_when(WEEK<=(START+12) ~ sum(DOLLARS)))
Но я получил следующее сообщение об ошибке:
Error in summarise_impl(.data, dots) :
Column `Sales` must be length 1 (a summary value), not 8
Что я здесь не так делаю?
РЕДАКТИРОВАНИЕ: значения в столбце Sales
изменены на реальные итоги, чтобы избежать путаницы в комментарии.
Последний вывод, который я хотел бы получить, выглядит следующим образом:
NEW_UPC IRI_KEY Sales
13000016961 272568 65.8
13000016962 272568 26.3
13000016963 272568 29.6
21600016430 272568 17.4
Обратите внимание, что значения в столбце Sales
выше - это просто случайные числа, которые я указал, чтобы показать структуру вывода. Кроме того, если NEW_UPC
имеет значения DOLLARS
, превышающие 12 недель от START
, я хотел бы получить сумму только за первые 12 недель. Таким образом, столбец Sales
должен возвращать общее количество за первые 12 недель с START
. С другой стороны, если NEW_UPC
имеет значения DOLLARS
в течение менее 12 недель с START
, то Sales
должно возвращать итоговое значение за этот период.