После группировки по «ID» можно было бы преобразовать «Ситуацию» в factor
с levels
, указанным в пользовательском порядке, а затем выбрать first
level
после сброса неиспользованных levels
(droplevels
)
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(Situation = factor(Situation, levels = c("Other", "Active", "Away")),
Situation = levels(droplevels(Situation))[1])
# A tibble: 9 x 2
# Groups: ID [3]
# ID Situation
# <int> <chr>
#1 1 Other
#2 1 Other
#3 1 Other
#4 2 Active
#5 2 Active
#6 2 Active
#7 3 Away
#8 3 Away
#9 3 Away
данные
df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L),
Situation = c("Active",
"Active", "Other", "Active", "Away", "Active", "Away", "Away",
"Away")), class = "data.frame", row.names = c(NA, -9L))