2015-03-24 4 views
2

Я хочу создать новый кадр данных с группами (A, B, C, D, E) и общим потреблением (Totalcons) на основе следующих данных.Условная сумма в использовании R для создания нового data.frame

id group consumption 
1 1  A 100 
2 2  A 210 
3 3  B 300 
4 4  B 214 
5 5  C 254 
6 6  C 124 
7 7  D 145 
8 8  D 652 
9 9  E 245 
10 10  E 150 

Как рассчитать сумму потребления в зависимости от каждой группы? На самом деле, я должен работать с более крупными data.frame с тысячами групп, так что это только, к примеру. Может ли кто-нибудь сказать мне, как это сделать в программе R и применять в случае гораздо большего объема данных? Спасибо за ваше время! Лучший

+0

Из вашего описания это всего лишь сумма на группу. Есть ли дополнительное условие? – akrun

ответ

1

Для sum пер группе вы также можете использовать ave (не самое эффективное решение, но альтернатива!):

set.seed(32) 
df = data.frame(group=rep(letters, 10000), consumption=rnorm(260000)) 

summary = data.frame(
    letters = letters, 
    sum  = with(df, ave(consumption, group, FUN=sum))[1:26] 
) 
# letters   sum 
#1  a 3.485019 
#2  b 77.740427 
#3  c -22.349616 
#4  d 94.100463 
#5  e -98.697508 
# ... 
+0

Спасибо, все работает! С наилучшими пожеланиями!!! –

3

предполагается, что ваш кадр данных с именем dat, то вы можете попробовать этот

with(dat, tapply(consumption, group, sum)) 
3

Для очень больших наборов данных,

library(data.table) 
setDT(df1)[, list(consumption=sum(consumption)), by=group] 

Или

library(dplyr) 
df1 %>% 
    group_by(group) %>% 
    summarise(consumption= sum(consumption)) 
Смежные вопросы