У меня есть фрейм данных, как показано ниже
df <- data.frame(group_var = c("a", "a", "b", "b"),
summ_var = c("x", "y", "z", "w"),
val = c(100, 100, 150, 200))
df
group_var summ_var val
1 a x 100
2 a y 100
3 b z 150
4 b w 200
Для каждого group_var
я хочу выбрать ровно один summ_var
с минимальным val
.
Я пробовал следующий код:
df %>%
group_by(group_var) %>%
filter(val == min(val)) %>%
ungroup()
group_var summ_var val
<fct> <fct> <dbl>
1 a x 100
2 a y 100
3 b z 150
, что дает мне кратное summ_var
для group_var = a
, поскольку val == min(val)
равно TRUE
для нескольких значений summ_var
. Как случайно выбрать одно из нескольких значений summ_var
для group_var = a
?
Мой желаемый результат выглядит следующим образом: случайное значение summ_var
выбирается в каждой группе в случае конфликта.
group_var summ_var val
<fct> <fct> <dbl>
1 a x 100
2 b z 150
Это просто воспроизводимый пример, в действительности у меня может быть более двух конфликтующих значений. Поэтому ищем обобщенный подход. Любая помощь приветствуется.