У меня есть датафрейм в этом формате:
pair_id group_id value
<int> <int> <dbl>
1 1 0.600
1 2 0.400
2 3 0.500
2 4 0.500
3 5 0.200
3 6 0.800
4 7 0.300
4 8 0.700
5 9 0.500
5 10 0.500
Генерируется с помощью следующего фрагмента кода:
library(tidyverse)
df <- tibble(pair_id = rep(1:5, each = 2),
group_id = seq(1:10),
value = c(0.6, 0.4, 0.5, 0.5, 0.2, 0.8, 0.3, 0.7, 0.5, 0.5))
Моя цель - определить, какой group_id в каждом pair_id имеет более высокое значение, а какой - более низкое. После определения я хочу присвоить «более высокий» для group_id с более высоким значением и «более низкое» для group_id с более низким значением.
Однако предостережение заключается в том, что если две группы имеют одинаковое значение (например, обе имеют значение 0,5, как в паре 2 и паре 5 в примере), следует определить присвоение «выше» или «ниже» наугад.
Цель состоит в том, чтобы создать фрейм данных с новым столбцом, скажем, group_rank, который должен выглядеть следующим образом:
pair_id group_id value group_rank
<int> <int> <dbl> <chr>
1 1 0.600 higher
1 2 0.400 lower
2 3 0.500 higher
2 4 0.500 lower
3 6 0.800 higher
3 5 0.200 lower
4 8 0.700 higher
4 7 0.300 lower
5 9 0.500 lower
5 10 0.500 higher
Есть ли простой способ достичь этого в рамках тидиверса?