按组对所有列求和

时间:2015-01-22 13:36:17

标签: r aggregate

我很肯定这是一个非常简单的答案,但我似乎无法理解聚合或使用多个条件进行投射

我有一个看起来像这样的表:

> head(df, n=10L)
   STATE  EVTYPE FATALITIES INJURIES
1     AL TORNADO          0       15
3     AL TORNADO          0        2
4     AL TORNADO          0        2
5     AL TORNADO          0        2
6     AL TORNADO          0        6
7     AL TORNADO          0        1
9     AL TORNADO          1       14
11    AL TORNADO          0        3
12    AL TORNADO          0        3
13    AL TORNADO          1       26

显然这种情况继续下去......我想要做的就是按照STATE和EVTYPE总结死亡和伤害进行崩溃,因为如果这10行是我的完整数据集,结果将是单行数据框: / p>

   STATE  EVTYPE FATALITIES INJURIES
1     AL TORNADO          2       74

我的完整框架有许多状态和许多EVTYPES

2 个答案:

答案 0 :(得分:5)

你可以尝试

library(dplyr)
df %>% 
    group_by(STATE, EVTYPE) %>% 
    summarise_each(funs(sum))

或者

aggregate(.~STATE+EVTYPE, df, sum)

答案 1 :(得分:0)

尝试ddply,例如下面的示例总结显式类型列,但我几乎可以肯定可以使用通配符或技巧来汇总所有列。分组由“STATE”进行。

library(plyr)
df <- read.table(text = "STATE  EVTYPE FATALITIES INJURIES
1     AL TORNADO          0       15
3     AL TORNADO          0        2
4     AL TORNADO          0        2
5     AL TORNADO          0        2
6     AL TORNADO          0        6
7     AL TORNADO          0        1
9     AL TORNADO          1       14
11    AL TORNADO          0        3
12    AL TORNADO          0        3
13    AL TORNADO          1       26
14    IL FLOOD            0       15
15    IL FLOOD            0       20
16    IL FIRE             1        1", header = TRUE, sep = "")

c = ddply(df,.(STATE),summarise,val1 = sum(FATALITIES), val = sum(INJURIES))
print(c)

结果:

  STATE val1 val
1    AL    2  74
2    IL    1  36