data.table::frank
val
(以我为例)
我设法获得了高密度的排名
@Prasad Chalasani 's solution
,例如:
library(dplyr)
foo_df <- data.frame(id = c(4,1,1,3,3), val = letters[1:5])
foo_df %>% arrange(val) %>% mutate(id_fac = as.integer(factor(id)))
#> id val id_fac
#> 1 4 a 3
#> 2 1 b 1
#> 3 1 c 1
#> 4 3 d 2
#> 5 3 e 2
但我希望因子水平是根据
. 期望输出:
foo_desired <- foo_df %>% arrange(val) %>% mutate(id_fac = as.integer(factor(id, levels = c(4,1,3))))
foo_desired
#> id val id_fac
#> 1 4 a 1
#> 2 1 b 2
#> 3 1 c 2
#> 4 3 d 3
#> 5 3 e 3
-
我试过了
-
-
我试着定下了比赛的顺序
id
使用
id[rank(val)]
(及
sort(val)
和
order(val)
).
-
rank(val)
等等,但这会抛出一个错误(
Evaluation error: factor level [3] is duplicated.
-
我知道可以指定级别顺序,我使用它来创建所需的输出。然而,这个解决方案并不好,因为我的数据有更多的行和级别
我需要它是为了方便,为了生成一个具有特定顺序的表,而不是为了计算。
于2018年12月19日由
reprex package