为向量中的每个值计算相应的十分位数

Compute the corresponding decile for each value in a vector

在 R 中有没有一种快速的方法可以为给定向量中的每个值分配相应的十分位数?

例如,任意输入向量应按如下方式转换。

in  <- rnorm(10)

>  [1]  9  2 10  5  3  4  8  1  7  6

干杯。

使用quantile函数得到小数位数

deciles = quantile(ran, seq(0, 1, 0.1))

然后使用cut将您的数据放入正确的十分位

ran_dec = cut(ran, deciles, include.lowest = TRUE)

因为ran_dec是一个因数,就用

as.numeric(ran_dec) 

转换为数字。

或者,您可以轻松使用 dplyr 的 ntile 函数:

dplyr::ntile(rnorm(10), 10)
# [1] 10  5  2  1  9  3  4  8  7  6