如何在R数据框中找到组的百分等级?

百分位一词是指低于或高于百分位值的百分比。例如,如果我们有一个位于第50个百分位数的值,则可以说有50%的值低于或高于该值。此处的值50称为百分等级。要找到R数据帧中组的百分数等级,我们可以使用dplyr包的mutate函数。

示例

考虑以下数据帧-

Group<-sample(LETTERS[1:4],20,replace=TRUE)
Response<-rpois(20,5)
df1<-data.frame(Group,Response)df1

输出结果

Group Response
1 D    5
2 B    7
3 D    5
4 C    4
5 D    5
6 C    5
7 A    10
8 D    3
9 B    2
10 D   0
11 B   4
12 D   5
13 A   3
14 A   6
15 D   2
16 A   7
17 A   6
18 C   2
19 A   9
20 C   3

示例

加载dplyr软件包-

library(dplyr)

查找组的响应百分等级-

示例

df1%>%group_by(Group)%>%mutate(Percentile_Rank=rank(Response)/length(Response))
# A tibble: 20 x 3
# Groups: Group [4]

输出结果

Group Response Percentile_Rank
<chr> <int> <dbl>
1 D    5    0.786
2 B    7    1
3 D    5    0.786
4 C    4    0.75
5 D    5    0.786
6 C    5    1
7 A    10    1
8 D    3    0.429
9 B    2    0.333
10 D   0    0.143
11 B   4    0.667
12 D   5    0.786
13 A   3    0.167
14 A   6    0.417
15 D   2    0.286
16 A   7    0.667
17 A   6    0.417
18 C   2    0.25
19 A   9    0.833
20 C   3    0.5

示例

Class<-sample(c("I","II","III"),20,replace=TRUE)
Y<-rnorm(20,25,3.27)
df2<-data.frame(Class,Y)df2

输出结果

   Class Y
1 III 32.88152
2 III 23.35048
3 III 19.78199
4 III 26.05137
5 I 26.16563
6 III 20.30466
7 I 22.93382
8 II 30.03620
9 I 16.89365
10 I 27.33329
11 I 27.46550
12 III 27.59028
13 II 27.40766
14 III 23.29442
15 II 28.69237
16 II 31.25723
17 II 22.58002
18 III 22.48583
19 I 26.08357
20 III 24.51681

查找类别的响应百分等级-

示例

df2%>%group_by(Class)%>%mutate(Percentile_Rank=rank(Y)/length(Y))
# A tibble: 20 x 3
# Groups: Class [3]

输出结果

Class Y Percentile_Rank
<chr> <dbl> <dbl>
1 III 32.9 1
2 III 23.4 0.556
3 III 19.8 0.111
4 III 26.1 0.778
5 I   26.2 0.667
6 III 20.3 0.222
7 I   22.9 0.333
8 II  30.0 0.8
9 I   16.9 0.167
10 I  27.3 0.833
11 I  27.5 1
12 III 27.6 0.889
13 II  27.4 0.4
14 III 23.3 0.444
15 II  28.7 0.6
16 II  31.3 1
17 II 22.6 0.2
18 III 22.5 0.333
19 I   26.1 0.5
20 III 24.5 0.667