2016-05-19 3 views
0

У меня есть набор данных с миллионами значений с 2 ​​столбцами (ID, Amount). Сумма сортируется в порядке убывания. Мне нужно получить кумулятивную сумму суммы на основании условия.Как получить суммарную сумму на основании условия

ID  Amount 
101  40000 
102  20000 
103  15000 
104  10000 
...... 

Для примера, если есть 1000 строк мне нужна кумулятивная сумма первых 1% т.е. первых 10 строк после сортировки, а затем 4% (40), 15% (150), 35% (350) и ниже 50% (500).

Как я могу получить это в R

+0

Вы хотите отдельный 'cumsum' для каждого' ID'? –

+0

@ RafaelPereira Мне нужна 'cumsum' для всей базы, а не для каждого' ID'. – mockash

ответ

1

Почему не

data <- 1:1000 
n <- length(data) 
quantile <- 0.01 # cumsum top 1% 
cumsum(data[1:floor(n*quantile)]) 
+0

Если у меня есть дубликаты в моем наборе данных, 'cumsum' добавит дубликат также или пропустит его – mockash

0

Я бы начать, чтобы обеспечить dataframe сортируется ... Я предполагаю, что вы хотите только агрегированный cumsum, а не деталь

percentage=0.1 
cumsum(df$Amount)[round(quantile(0:nrow(df),percentage))] 
+0

ваш код не работает, вам не хватает') ' – rbm

+0

Действительно: исправлено –

Смежные вопросы