简体   繁体   English

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

[英]Conditional Max Value In R (dplyr)?

This seems like a simple/common question, but I've had difficulty finding relevant answers online. 这似乎是一个简单/常见的问题,但是我很难在网上找到相关的答案。

I want to generate conditional max values from an existing data frame. 我想从现有数据框中生成条件最大值。

A simplistic version of the dataframe I'm working with looks like this: 我正在使用的数据框的简化版本如下所示:

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

What I want to know is, for each subject, what was the max "Session" value for each "Phase". 我想知道的是,对于每个主题,每个“阶段”的最大“会话”值是多少。 Ideally, I'd like to generate another dataframe that looks like this: 理想情况下,我想生成另一个如下所示的数据框:

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

I've tried the below code in dplyr, but it doesn't generate the output I'm looking for. 我已经在dplyr中尝试了以下代码,但是它不会生成我想要的输出。

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

Does anyone have ideas on what I'm doing wrong? 有人对我在做什么错有想法吗? Or what code might resolve my issue? 或者什么代码可以解决我的问题? Solutions with or without dplyr are fine. 有或没有dplyr的解决方案都可以。

Thanks! 谢谢!

You need to use group_by and summarise rather than count and mutate : 您需要使用group_by并进行summarise而不是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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM