cumdenseRank

New in version 1.30.22.3.

语法

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

参数说明和窗口计算规则请参考:cumFunctions

参数

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。

详情

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

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

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

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

注意:若要使用参数 norm,percent 应为 true。

例子

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

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

$ cumdenseRank(X=a, ascending=true, ignoreNA=true, percent=true, norm="minmax")
[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