Условное максимальное значение в R (dplyr)? - PullRequest
0 голосов
/ 01 июня 2018

Это кажется простым / распространенным вопросом, но мне было трудно найти соответствующие ответы в Интернете.

Я хочу создать условные максимальные значения из существующего фрейма данных.

Упрощенная версия фрейма данных, с которым я работаю, выглядит следующим образом:

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

Что я хочу знать, это то, что для каждого предмета было максимальное значение "Сеанс" длякаждая "фаза".В идеале я хотел бы сгенерировать еще один кадр данных, который выглядит следующим образом:

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 в порядке.

Спасибо!

1 Ответ

0 голосов
/ 01 июня 2018

Вам нужно использовать 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
...