我很肯定这是一个非常简单的答案,但是我似乎无法在多个条件下进行聚合或转换
我有一个看起来像这样的表:
> 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
你可以试试
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)
尝试 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)
| 归档时间: |
|
| 查看次数: |
3236 次 |
| 最近记录: |