首页 > 解决方案 > 在 R 中按组和按时间计算最大值

问题描述

对于以下面板数据(跟踪单元“ID”超过“时间”的值:

ID=c(1,1,1,1,2,2,2,2)
Time=c(1,2,3,4,1,2,3,4)
Value=c(1,5,4,8,2,5,9,7)

我想创建一个向量,它是每个“ID”和“时间”的最大值

输出向量“Max_Value”如下:

Max_Value=c(1,5,5,8,2,5,9,9)

澄清一下,这里是如何为 ID“1”计算 Max_Value。

对于ID“1”,“Time=1”的最大值为1,最大值为{1}。

同样,对于ID“1”,“Time=2”的最大值为5,最大值为{1,5}。

同样,对于 ID“1”,“Time=3”的最大值为 5,即最大值为 {1,5,4}。

标签: rmaxaggregate

解决方案


由于我自己无法添加评论,我建议使用@markus 输入:

library(dplyr)

ID=c(1,1,1,1,2,2,2,2)
Time=c(1,2,3,4,1,2,3,4)
Value=c(1,5,4,8,2,5,9,7)


tbl <- tibble(ID = ID, Time = Time, Value = Value)
tbl %>% group_by(Time, ID) %>% mutate(result = max(Value))  ## shouldnt work

tbl %>% group_by(ID) %>% mutate(Max_Value = cummax(Value)) ## should work

推荐阅读