rank

语法

rank(X, [ascending=true], [groupNum], [ignoreNA=true], [tiesMethod='min'], [percent=false])

参数

X 是一个向量或矩阵。

ascending 是一个布尔值,表示是否按升序排序。默认值是 true。

groupNum 是一个正整数,指定该参数后,元素将分成指定数量的组,按组进行排序。

ignoreNA 是一个布尔值,表示是否忽略 NULL 值,默认值为 true。false 表示 NULL 作为最小值参与排名。

tiesMethod 是一个字符串,表示如何对相同元素进行排名。'min'表示所有相同元素的排名取最小排名,'max'表示取最大排名,'average'表示取排名的均值。

1.30.14 新版功能: 参数 percent

percent 是一个布尔值,表示是否以百分比形式显示返回的排名。

详情

X 是向量:

  • 基于 ascending 指定的排序顺序,返回 X 中每个元素的排名。

  • 如果指定了 groupNum,则将排序后的 X 分成 groupNum 个组。返回 X 中每个元素对应的组编号(从0开始编号)。

    请注意:

    • X 不能被均分,多余元素优先存入编号较小的组内。

    • X 中相同元素分别属于不同的组,则所有相同元素返回最小的组号。

  • 如果 ignoreNA = true,则 NULL 值不参与排序,结果中 NULL 值的排名为空。

X 是矩阵或表,在每列内进行上述计算。

例子

$ rank(45 16 32 21);
[3,0,2,1]

$ rank(45 16 32 21, false);
[0,3,1,2]

$ rank(9 1 6 1 3 3);
[5,0,4,0,2,2]
// 两个相同的元素有相同的排名

$ rank(X=9 5 4 8 1 3 6 2 7, groupNum=3);
[2,1,1,2,0,0,1,0,2]

$ rank(X=9 5 4 8 1 3 6 2 7, ascending=false, groupNum=3);
[0,1,1,0,2,2,1,2,0]

$ rank(X=1 2 2 3, tiesMethod='min');
[0,1,1,3]

$ rank(X=1 2 2 3, tiesMethod='average');
[0,1.5,1.5,3]

$ rank(1 NULL NULL 3);
[0,,,1]

$ rank(X=1 NULL NULL 3, ignoreNA=false);
[2,0,0,3]

$ t=table(1 1 1 2 2 2 2 as id, 3 5 4 6 2 7 1 as x)
$ t

id

x

1

3

1

5

1

4

2

6

2

2

2

7

2

1

$ select *, rank(x) from t context by id;

id

x

rank_x

1

3

0

1

5

2

1

4

1

2

6

2

2

2

1

2

7

3

2

1

0