Условное максимальное значение в R (dplyr)?

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

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

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

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 ответ

Решение

Вам нужно использовать 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
Другие вопросы по тегам