2013-10-14 183 views
2

這裏相同的結果是我的數據,我想與計算:如何獲得與骨料

data 
    type time grade money 
1  A 1.0000 16 2 
2  A 1.5625 25 3 
3  A 4.0000 64 4 
4  A 1.0000 16 6 
5  A 1.0000 16 3 
6  A 1.0000 16 1 
7  A 3.0000 48 2 
8  B 4.0000 64 8 
9  B 4.0000 64 4 
10 B 3.0000 48 4 
11 C 4.0000 64 3 
12 C 1.5625 25 3 

我可以根據不同的類型與命令總而言之,

sqldf("select type,sum(time),sum(grade) from data group by type") 

,並得到正確的結果:

我試着在ggregate(data,by=list("type"),FUN=sum),但得到了錯誤的結果。
我怎樣才能得到aggregate

type sum(time) sum(grade) 
1 A 12.5625  201 
2 B 11.0000  176 
3 C 5.5625   89 

回答

4

嘗試

> aggregate(.~type, FUN=sum, data=data) 
    type time grade 
1 A 12.5625 201 
2 B 11.0000 176 
3 C 5.5625 89 

In this post你可以找到一些其他的替代品。

+0

如果我添加一列'money',並且我不想在結果中獲得colume'money',我該怎麼辦?如何修改'aggregate(。〜type,FUN = sum,data =數據)' –

+0

我收到了'aggregate(cbind(time,money)〜type,FUN = sum,data = data) ' –

+0

@it_is_a_literature你也可以通過在'data'參數中刪除數據來做到這一點,聚合(。〜type,FUN = sum,data = data [,c(「time」,「money」,「type」)])'。 –