denseRank
New in version 1.30.11.
语法
denseRank(X, [ascending=true],[ignoreNA=true], [percent=false])
参数
X 是一个向量或矩阵。
ascending 是一个布尔值,表示是否按升序排序。默认值是 true。
ignoreNA 是一个布尔值,表示是否忽略 NULL 值,默认值为 true。true 表示忽略 NULL 值,false 表示 NULL 作为最小值参与排名。
New in version 1.30.14: 参数 percent
percent 是一个布尔值,表示是否以百分比形式显示返回的排名,默认值为 false。
详情
若 X 是向量:
基于 ascending 指定的排序顺序,返回 X 中每个元素连续的排名。
如果 ignoreNA = true,则 NULL 值不参与排序,结果中 NULL 值的排名为空。
若 X 是矩阵,在每列内进行上述计算,返回一个与 X 维度相同的矩阵。
注意:denseRanke
和 rank 的区别在于,多个元素相等时,前者采用密集排名方式,而后者采用跳跃排名方式。
例子
$ x=1 5 5 6 8 8 9
$ print denseRank(x)
[0,1,1,2,3,3,4]
$ y=time(4 1 1 2)
$ print denseRank(y, ascending=false)
[0,2,2,1]
$ m = matrix(1 2 2 NULL, 0 0 0 1, 0 0 NULL 2)
$ denseRank(m, ignoreNA=false)
#0 |
#1 |
#2 |
---|---|---|
1 |
0 |
1 |
2 |
0 |
1 |
2 |
0 |
0 |
0 |
1 |
2 |
$ t=table(`A`A`B`C`B`B`A`C`C as id,[4,1,NULL,1,2,4,5,0,-1] as val)
$ select id,val, denseRank(val) from t context by id
id |
val |
denseRank_val |
---|---|---|
A |
4 |
1 |
A |
1 |
0 |
A |
5 |
2 |
B |
||
B |
2 |
0 |
B |
4 |
1 |
C |
1 |
2 |
C |
0 |
1 |
C |
-1 |
0 |
相关函数:rowDenseRank