R(dplyr)中的条件最大值?

Conditional Max Value In R (dplyr)?

这似乎是一个 simple/common 问题,但我很难在网上找到相关答案。

我想从现有数据框中生成条件最大值。

我正在使用的数据框的简化版本如下所示:

ID    Phase   Session    Trial
A1    Train1     1         1
A1    Train1     1         2
A1    Train1     2         1
A1    Train1     2         2
A1    Train2     3         1
A1    Train2     3         2
B1    Train1     1         1
B1    Train2     2         1
B2    Train2     2         2
B1    Train2     3         1
B1    Train2     3         2

我想知道的是,对于每个科目,每个 "Phase" 的最大 "Session" 值是多少。理想情况下,我想生成另一个如下所示的数据框:

ID    Phase   MaxSession
A1    Train1      2         
A1    Train2      3         
B1    Train1      1         
B1    Train2      3      

我已经在 dplyr 中尝试了以下代码,但它没有生成我正在寻找的输出。

MaxSessions <- DataFrame %>%
   count(ID,Phase,Session)%>%
   mutate(MaxSession = max(Session))

有人知道我做错了什么吗?或者什么代码可以解决我的问题?有或没有 dplyr 的解决方案都很好。

谢谢!

您需要使用 group_bysummarise 而不是 countmutate:

MaxSessions <- DataFrame %>%
   group_by(ID,Phase)%>%
   summarise(MaxSession = max(Session))


# A tibble: 5 x 3
# Groups:   ID [?]
  ID    Phase  MaxSession
  <fct> <fct>       <dbl>
1 A1    Train1       2.00
2 A1    Train2       3.00
3 B1    Train1       1.00
4 B1    Train2       3.00
5 B2    Train2       2.00