cumdenseRank

语法

cumdenseRank(X, [ascending=true], [ignoreNA=true], [percent=false], [norm='max'])

参数

X 可以是向量、矩阵或内存表。

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

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

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

norm 是一个字符串,可为 'max' 或 'minmax' ,在计算百分比时,不同设置值决定了排名的起始值,进而可决定了百分比的计算结果。当 norm='max' 时,排名从1开始;当 norm='minmax' 时,排名从0开始。以返回 [3, 1, 2] 的密集排名百分比为例进行说明:
  • norm='max' 时,最后一个累计窗口中2的排名为2,窗口中的最大排名数为3,因此结果为2\3。

  • norm='minmax' 时,最后一个累计窗口中2的排名为1,窗口中的最大排名数为2,因此结果为1\2。

详情

注:
  • 该函数首发于1.30.22.3版本。
  • 若要使用参数 normpercent 应为 true

X 是向量,对 X 中的每一个元素,返回其在累计窗口内的密集排名。

  • 基于 ascending 指定的方式排序。

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

若 X 是矩阵或内存表,在每列内进行上述计算,返回一个与 X 维度相同的矩阵或内存表。

例子

a = 1 3 2 3 4
cumdenseRank(X=a, ascending=true, ignoreNA=true, percent=false)
// output
[0,1,1,2,3]

cumdenseRank(X=a, ascending=true, ignoreNA=true, percent=true, norm="max")
// output
[1,1,0.6667,1,1]

cumdenseRank(X=a, ascending=true, ignoreNA=true, percent=true, norm="minmax")
// output
[1,1,0.5,1,1]

m = matrix(1 6 2 NULL, 3 0 1 6, 7 3 NULL 2)
cumdenseRank(X=m, ascending=true, ignoreNA=true, percent=false)
#0 #1 #2
-- -- --
0  0  0 
1  0  0 
1  1    
   3  0
       
t = table([4,10,3,4,8,1] as val1, [10,8,1,8,5,2]  as val2)
cumdenseRank(X=t, ascending=true, ignoreNA=true, percent=false)
    	val1	val2
    0	0	0
    1	1	0
    2	0	0
    3	1	1
    4	2	1
    5	0	1