У меня есть data.frame с двумя колоннами:образования бен в R 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
Пожалуйста, не забудьте [принять] (http://meta.stackoverflow.com/help/someone-answers) ответ, который решил вашу проблему и что вам понравилось больше всего. Также рассмотрите ответы на голосование. – Roland