如果某些列在 R 数据框中是分类的,如何在列中找到每个值的排名?

如果某些列在 R 数据框中属于分类列,要查找列中每个值的排名,我们可以按照以下步骤操作 -

  • 首先,创建一个数据框。

  • 然后,如果某些列是分类的,则使用 plyr 包中的 numcolwise 函数来查找列中每个值的排名。

示例

创建数据框

让我们创建一个数据框,如下所示 -

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
DV1<-rnorm(25)
DV2<-rnorm(25)
df<-data.frame(Level,Group,DV1,DV2)
df
输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

   Level  Group     DV1           DV2
1  medium first  -0.15444635   0.44771691
2  low    first   0.64594002   0.70918039
3  medium first   0.11612343  -0.46156286
4  medium second -2.07505385  -0.19145800
5  medium first   0.91928571   0.80887669
6  medium first   0.71592841   0.16538757
7  high   second -1.45712679   0.40105329
8  high   second -0.57098794   0.97701583
9  high   second -0.55531986   0.52548578
10 medium first   0.21788069  -0.89447993
11 low    second  0.13378146  -1.54879981
12 low    first  -1.25162532   0.21650691
13 low    second  0.14558721   1.24260380
14 medium second  0.93689245   0.34528017
15 high   second -1.25450836   0.34797171
16 low    second -0.38612538   0.31359466
17 high   first   2.70415465   0.73713265
18 high   second -0.12480067   0.37259163
19 high   second  0.78704330  -0.35841561
20 low    first   0.81727351  -0.74304509
21 medium second  0.61382411  -0.40644606
22 low    first   0.39757586  -2.33494132
23 high   second -2.07106056  -0.90051548
24 high   second -0.08953589   0.09631326
25 high   second  0.65695959  -1.10357835

如果某些列是分类列,则查找列中每个值的排名

如果某些列在数据框 df 中是分类列,则使用 plyr 包中的 numcolwise 函数查找列中每个值的排名 -

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
DV1<-rnorm(25)
DV2<-rnorm(25)
df<-data.frame(Level,Group,DV1,DV2)
library(plyr)
numcolwise(rank)(df)
输出结果
  DV1 DV2
1  11 15
2   5  3
3  15  5
4  23 23
5   8 17
6   4 11
7  17 10
8  16 21
9   7 24
10  6 14
11 14  1
12 10  9
13 19 19
14 22 12
15  9 16
16 20  2
17 18 22
18 21 18
19 13  7
20  2 25
21  1 20
22 24  6
23  3 13
24 12  8
25 25  4

猜你喜欢