Условное максимальное значение в 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