друзья, задачка на подумать
допустим, есть датасет с колонкой value.
мне надо разбить строки так, чтобы сумма value по этим строкам не превышала значение x. при этом как только она превышает значение x - начинается новая группа.
в строках могут быть значения больше х.
как это сделать?
по факту это кумулята с условием порога и перезапуском
еще вариант:
dt <- data.table(x = c(7,2,9,10,15,3,2,12, 2,1,8))
threshold = 10
gr_starts <- dt[, which(x=purrr::accumulate(x, ~ ifelse(.x+.y>=threshold, .y, .x+.y)))]
dt[,gr:=c(inverse.rle(list(lengths = diff(gr_starts), values = seq(2:length(gr_starts)))), length(gr_starts))]
правда я не уверен, что внутри у accumulate не тот же цикл