Мы arrange
'ID', 'фрукты' на основе levels
, указанного в сообщении 'OP, и' X 'в порядке убывания, затем сгруппированы по' ID ', slice
первоестрока
library(dplyr)
df %>%
arrange(ID, factor(fruit, levels = c('Orange', 'Blueberries', 'Pear',
'Banana','Apple', 'Strawberry')), desc(X)) %>%
group_by(ID) %>%
slice(1)
# A tibble: 3 x 3
# Groups: ID [3]
# X ID fruit
# <int> <int> <chr>
#1 1 20 Orange
#2 10 45 Pear
#3 5 55 Blueberries
данные
df <- structure(list(X = 1:10, ID = c(20L, 20L, 20L, 55L, 55L, 45L,
45L, 45L, 45L, 45L), fruit = c("Orange", "Apple", "Pear", "Apple",
"Blueberries", "Apple", "Banana", "Banana", "Strawberry", "Pear"
)), class = "data.frame", row.names = c(NA, -10L))