TopN 系列

数据依照某个指标进行排序,并取排序后前 top 个元素进行计算。

TopN 系列函数介绍:

  • TopN 系列函数对应的高阶函数 aggrTopN

$ aggrTopN(func, funcArgs, sortingCol, top, [ascending=true])

针对滑动窗口内的 TopN 计算场景,DolphinDB 引入了 moving TopN(mTopN) 系列函数。

  • mTopN 系列函数的通用参数模板如下:

$ mfuncTopN(X, S, window, top, [ascending=true])
$ mfuncTopN(X, Y, S, window, top, [ascending=true])

参数

X (Y) 是数值型的向量或矩阵。

S 是数值类型或时间类型的向量/矩阵,表示 X 的排序指标。

window 是一个大于 1 的整数,表示滑动窗口的大小。

top 是 (1, window] 范围内的一个整数,表示 X 基于 S 排序后的前 top 个元素。

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


TopN 系列函数如下:


窗口确定规则:

mTopN 系列函数的 window 长度以元素个数衡量。

window 确定的窗口内,将 X (X, Y) 根据 S 列进行稳定排序(排序方式由 ascending 指定,默认 true 为升序),取排序后结果的前 top 个元素进行计算。

注意:S 中的 NULL 值作为最小值处理。


以下图为例,在长度为 6 滑动窗口内,将 X 的元素根据 S 的升序排序后,取前 3 个元素进行计算。

(前 top 个窗口内,默认取窗口中的所有元素进行计算,因此图例从 top + 1 个元素开始示意。)

../../_images/mTopN_1.png

上图的对应代码,这里以 msumTopN 为例:

$ X = [2, 1, 5, 3, 4, 3, 1, 9, 0, 5, 2, 3]
$ S = [5, 8, 1, 9, 7, 3, 1, NULL, 0, 8, 7, 7]

$ print msumTopN(X, S, window=6, top=3)
[2, 3, 8, 8, 11, 10, 9, 15, 10, 10, 10, 10]