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_by
和 summarise
而不是 count
和 mutate
:
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
这似乎是一个 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_by
和 summarise
而不是 count
和 mutate
:
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