У меня есть фрейм данных, фрейм данных уже отсортирован по мере необходимости, но теперь мне захочется "нарезать его" в группах.
Эти группы должны иметь максимальное кумулятивное значение 10. Если кумулятивное значение > 10, оно должно reset суммарная сумма и начать снова заново
library(dplyr)
id <- sample(1:15)
order <- 1:15
value <- c(4, 5, 7, 3, 8, 1, 2, 5, 3, 6, 2, 6, 3, 1, 4)
df <- data.frame(id, order, value)
df
Это результат, который я ищу (я сделал это "вручную" )
cumsum_10 <- c(4, 9, 7, 10, 8, 9, 2, 7, 10, 6, 8, 6, 9, 10, 4)
group_10 <- c(1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7)
df1 <- data.frame(df, cumsum_10, group_10)
df1
Итак, у меня есть 2 проблемы
- Как создать кумулятивную переменную, которая сбрасывается каждый раз, когда она проходит верхний предел (в этом случае 10)
- Как считать/группировать каждую группу
В первой части я пытался несколько комбинаций group_by и cumsum без везения
df1 <- df %>% group_by(cumsum(c(False, value < 10)))
Я предпочел бы решение pipe (% > %) вместо цикла for
Спасибо