r bin 等于十分位数

Jra*_*ch2 3 r percentile binning

我有一个包含 6,000 多个观察值的数据集,每条记录的分数范围为 0-100。下面是一个示例:

+-----+-------+
| uID | score |
+-----+-------+
|   1 |    77 |
|   2 |    61 |
|   3 |    74 |
|   4 |    47 |
|   5 |    65 |
|   6 |    51 |
|   7 |    25 |
|   8 |    64 |
|   9 |    69 |
|  10 |    52 |
+-----+-------+
Run Code Online (Sandbox Code Playgroud)

我想根据他们在分数列中相对于同龄人的排名顺序将它们分成相等的十分位数,截止点为每 10 个百分位数,如下所示:

+-----+-------+-----------+----------+
| uID | score | position% | scoreBin |
+-----+-------+-----------+----------+
|   7 |    25 | 0.1       |        1 |
|   4 |    47 | 0.2       |        2 |
|   6 |    51 | 0.3       |        3 |
|  10 |    52 | 0.4       |        4 |
|   2 |    61 | 0.5       |        5 |
|   8 |    64 | 0.6       |        6 |
|   5 |    65 | 0.7       |        7 |
|   9 |    69 | 0.8       |        8 |
|   3 |    74 | 0.9       |        9 |
|   1 |    77 | 1         |       10 |
+-----+-------+-----------+----------+
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过 cut、cut2、tapply 等。我认为我在正确的逻辑路径上,但我不知道如何将它们应用于我的情况。任何帮助是极大的赞赏。

Bry*_*gin 7

我会ntile()dplyr.

library(dplyr)

score<-c(77,61,74,47,65,51,25,64,69,52)
ntile(score, 10)

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

scoreBin<- ntile(score, 10)
Run Code Online (Sandbox Code Playgroud)