按组汇总所有列

Noo*_*Mat 2 aggregate r

我很肯定这是一个非常简单的答案,但是我似乎无法在多个条件下进行聚合或转换

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

> 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
Run Code Online (Sandbox Code Playgroud)

显然,这种情况还在继续...我要做的是在执行过程中按STATE和EVTYPE折叠,以计算致命和伤害,因此,如果这10行是我的有效数据集,那么结果将是一个单行数据帧:

   STATE  EVTYPE FATALITIES INJURIES
1     AL TORNADO          2       74
Run Code Online (Sandbox Code Playgroud)

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

akr*_*run 5

你可以试试

library(dplyr)
df %>% 
    group_by(STATE, EVTYPE) %>% 
    summarise_each(funs(sum))
Run Code Online (Sandbox Code Playgroud)

要么

aggregate(.~STATE+EVTYPE, df, sum)
Run Code Online (Sandbox Code Playgroud)


Ale*_*tov 2

尝试 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)
Run Code Online (Sandbox Code Playgroud)

结果:

  STATE val1 val
1    AL    2  74
2    IL    1  36
Run Code Online (Sandbox Code Playgroud)