У меня есть data.frame с двумя столбцами:
category quantity
a 20
b 30
c 100
d 10
e 1
f 23
g 3
h 200
Мне нужно написать функцию с двумя параметрами: dataframe
, bin_size
, которая запускает cumsum
по столбцу количества, выполняет разбиение последующей строки, если cumsum
превышает bin_size
, и добавляет текущий номер ячейки в качестве дополнительного столбца.
Скажем, введя это:
function(dataframe, 50)
в приведенном выше примере должен дать мне:
category quantity cumsum bin_nbr
a 20 20 1
b 30 50 1
c 50 50 2
c 50 50 3
d 10 10 4
e 1 11 4
f 23 34 4
g 3 37 4
h 13 50 4
h 50 50 5
h 50 50 6
h 50 50 7
h 37 37 8
Объяснение:
row a + b sum up to 50 --> bin_nbr 1
row c is 100 -> split into 2 rows @ 50 -> bin nbr 2, bin_nbr 3
row d,e,f,g sum up to 37 -> bin_nbr 4
I need another 13 from row h to fill in bin_nbr 4 to 50
The rest of the remaining quantity from h will be spitted into 4 bins -> bin_nbr 5, 6, 7, 8