我对R比较新,试图根据其他列获得列的总和。我的数据框如下所示
YEAR EventID LOSS
1 554 334740
1 415 149816
1 207 199446
2 961 527042
3 614 188199
4 968 87044
4 650 75377
4 341 424678
4 397 210730
5 610 368068
我的条件是,我需要每年最高损失的总和。
损失编号:EVENTID 554从第1年开始,EVENTID 961从第2年开始,EVENTID 341从4年开始,EVENTID 610从第5年开始。
答案 0 :(得分:3)
dplyr
d %>%
group_by(YEAR) %>%
summarize(EventID = EventID[1],
max_loss = max(LOSS))
您还可以多次出现具有相同最大损失的事件,然后您需要合并回原始数据集并过滤:
d %>%
group_by(YEAR) %>%
summarize(max_loss = max(LOSS)) %>%
left_join(d, .) %>%
filter(LOSS == max_loss)
答案 1 :(得分:1)
对于此类任务,我的偏好是library(sqldf)
sqldf("select * from mydata
group by YEAR
having LOSS=max(LOSS);")
:
## YEAR EventID LOSS
## 1 554 334740
## 2 961 527042
## 3 614 188199
## 4 341 424678
## 5 610 368068
<强>结果
var td = document.querySelector('td'),
child = td.childNodes
for (var i = 0;i < child.length;i++){
if (child[i].nodeType === 3){
td.removeChild(child[i])
}
}
答案 2 :(得分:0)
sum(unique(ave(df$LOSS, df$YEAR, FUN = max)))
输出:
[1] 1842727