我想对组合的euclid_dist进行排名,按我的数据帧中的pitch_2从最小到最大g进行分组。我的数据框有超过8000万个组合,以及一堆不同的pitch_2,这是我将其分组的依据。但是排序似乎几乎是随机的,在我查看数据时,最小的euclid_dist没有获得#1排名。我认为这可能是一些低于1的问题,然后开始计数,但对于大于1的值甚至不起作用。
这是我要执行排名的命令
data <- data %>% group_by(pitch_2) %>%
mutate(rank = order(euclid_dist))
但这是我的数据框之后的样子-排名时它正确地从每个pitch_2的1开始,但是排名本身并不合理,我不确定如何修改顺序或是否有更好的方法< / p>
> head(data)
# A tibble: 6 x 4
# Groups: pitch_2 [1]
pitch_1 pitch_2 euclid_dist rank
<fct> <fct> <dbl> <int>
1 429721-CU 493247-SI 2.53 15
2 114849-FC 493247-SI 3.52 6
3 430599-FF 493247-SI 3.49 14
4 458567-FF 493247-SI 2.59 27
5 435261-CU 493247-SI 3.10 8
6 425629-CU 493247-SI 2.14 17
答案 0 :(得分:0)
我们需要rank
而不是order
。根据{{1}}
返回向量中值的样本等级。
?rank
library(dplyr)
data %>%
group_by(pitch_2) %>%
mutate(rank = order(euclid_dist))
# A tibble: 6 x 4
# Groups: pitch_2 [1]
# pitch_1 pitch_2 euclid_dist rank
# <chr> <chr> <dbl> <dbl>
#1 429721-CU 493247-SI 2.53 2
#2 114849-FC 493247-SI 3.52 6
#3 430599-FF 493247-SI 3.49 5
#4 458567-FF 493247-SI 2.59 3
#5 435261-CU 493247-SI 3.1 4
#6 425629-CU 493247-SI 2.14 1