【发布时间】:2018-04-26 09:48:24
【问题描述】:
我有一个这种格式的数据框:
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
使用以下代码sn-p生成:
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))
我的目标是确定每个 pair_id 中的哪个 group_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
在 tidyverse 框架中是否有一种简单的方法来实现这一点?
【问题讨论】: