基于R中其他列的列值总和

时间:2016-06-14 10:26:29

标签: r

我对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年开始。

3 个答案:

答案 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
相关问题