rowRank

语法

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

详情

逐行计算 X 的元素排名或组排名,排名方式请参照 rank

参数

row 系列函数通用参数说明和计算规则请参考:rowFunctions

ascending 是一个布尔值,表示排序方向。true 表示升序,false 表示降序。默认值为 true。它是一个可选参数。

groupNum 是一个正整数,表示排序形成的组的数量。它是一个可选参数。

ignoreNA 是一个布尔值,表示是否忽略 NULL 值。true 表示忽略 NULL 值,false 表示 NULL 值参与排名。默认值为 true。它是一个可选参数。NULL 值参与排序时,NULL 值为最小值。

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

  • 'max'表示取最大排名。

  • 'average'表示取排名的均值。

  • 'first' 表示按照原数据的顺序排名。

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

precision 是一个 [1, 15] 范围内的整数,用于设置参与排序的值的精度。若两个值之差的绝对值小于等于 10^(-precision) ,则认为两值相等。

注:
指定 precision 参数后,X 只能是数值型对象。且 tiesMethod 不能指定为 'first'。

返回值

返回一个和 X 维度相同的矩阵。

例子

m=matrix(3 1 2 4 7 6 9 8 5, 9 NULL 2 3 5 6 3 2 8).transpose();
m

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
3 1 2 4 7 6 9 8 5
9 2 3 5 6 3 2 8
m.rowRank();

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
2 0 1 3 6 5 8 7 4
7 0 2 4 5 2 0 6
m.rowRank(ascending=false);

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
6 8 7 5 2 3 0 1 4
0 6 4 3 2 4 6 1

指定 percent=true,以分数形式返回排名。

m.rowRank(percent=true);
0 1 2 3 4 5 6 7 8
0.33 0.11 0.22 0.44 0.77 0.67 1 0.89 0.56
1 0.125 0.375 0.625 0.75 0.375 0.125 0.875
m.rowRank(groupNum=3);

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
0 0 0 1 2 1 2 2 1
2 0 0 1 1 0 0 2
m.rowRank(ignoreNA=false);

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
2 0 1 3 6 5 8 7 4
8 0 1 3 5 6 3 1 7
m.rowRank(ignoreNA=false, tiesMethod='max');

返回:

#0 #1 #2 #3 #4 #5 #6 #7 #8
2 0 1 3 6 5 8 7 4
8 0 2 4 5 6 4 2 7
m.rowRank(ignoreNA=false, tiesMethod='first');

返回:

col1 col2 col3 col4 col5 col6 col7 col8 col9
2 0 1 3 6 5 8 7 4
8 0 1 3 5 6 4 2 7
对于浮点数,可通过参数 precision 设置数值比较的精度。当两个值的差的绝对值小于等于 10^(-precision) 时,认为这两个值相等。下例中不设置 precision 参数,默认将1.000003,1.000004视为不相等。
m = matrix(1.000001 1.000002 1.000003,   
           2.000001 2.000002 2.000003,  
           1.000001 1.000002 1.000004) 
/ 不使用 precision 参数的默认行为  
rowRank(m);
col1 col2 col3
0 2 0
0 2 0
0 2 1

设置 precision=4 后,1.000003,1.000004 被视为相等(都得到排名 0)。

rowRank(m, precision=4)
col1 col2 col3
0 2 0
0 2 0
0 2 0