msumTopN
语法
msumTopN(X, S, window, top, [ascending=true],
[tiesMethod='oldest'])
参数说明和窗口计算规则请参考:mTopN
详情
在给定长度(以元素个数衡量)的滑动窗口内,根据 ascending 指定的排序方式将 X 按照 S 进行稳定排序后,取前 top 个元素进行求和计算。
例子
X = 1..7
S = 0.3 0.5 0.1 0.1 0.5 0.2 0.4
msumTopN(X, S, 4, 2)
# output
[1,3,4,7,7,7,10]
X = NULL 1 2 3 4 NULL 5
S = 3 5 1 1 5 2 4
msumTopN(X, S, 4, 2)
# output
[,1,2,5,5,5,3]
X = matrix(1..5, 6..10)
S = 2022.01.01 2022.02.03 2022.01.23 2022.04.06 2021.12.29
msumTopN(X, S, 3, 2)
#0 | #1 |
---|---|
1 | 6 |
3 | 13 |
4 | 14 |
5 | 15 |
8 | 18 |
X = matrix(1..5, 6..10)
S = matrix(2022.01.01 2022.02.03 2022.01.23 NULL 2021.12.29,NULL 2022.02.03 2022.01.23 2022.04.06 NULL)
msumTopN(X, S, 3, 2)
#0 | #1 |
---|---|
1 | |
3 | 7 |
4 | 15 |
5 | 15 |
8 | 17 |
某行情数据的数据表,包含四列:股票代码 code,交易日期 date,收盘价 close 和交易量 volume。
t = table(take(`IBM`APPL, 20) as code, 2020.01.01 + 1..20 as date, rand(100,20) + 20 as volume, rand(10,20) + 100.0 as close)
code | date | volume | close |
---|---|---|---|
IBM | 2020.01.02 | 50 | 107 |
APPL | 2020.01.03 | 55 | 100 |
IBM | 2020.01.04 | 75 | 100 |
APPL | 2020.01.05 | 84 | 108 |
IBM | 2020.01.06 | 46 | 103 |
APPL | 2020.01.07 | 100 | 101 |
IBM | 2020.01.08 | 96 | 100 |
APPL | 2020.01.09 | 84 | 102 |
IBM | 2020.01.10 | 60 | 107 |
APPL | 2020.01.11 | 40 | 103 |
IBM | 2020.01.12 | 92 | 105 |
APPL | 2020.01.13 | 61 | 106 |
IBM | 2020.01.14 | 86 | 107 |
APPL | 2020.01.15 | 41 | 102 |
IBM | 2020.01.16 | 85 | 103 |
APPL | 2020.01.17 | 72 | 105 |
IBM | 2020.01.18 | 46 | 108 |
APPL | 2020.01.19 | 25 | 100 |
IBM | 2020.01.20 | 114 | 102 |
APPL | 2020.01.21 | 50 | 104 |
对每只股票计算窗口期内交易量最大的3条记录的收盘价之和。
select code, date, msumTopN(close, volume, 5, 3, false) from t context by code
code | date | msumTopN_close |
---|---|---|
APPL | 2020.01.03 | 100 |
APPL | 2020.01.05 | 208 |
APPL | 2020.01.07 | 309 |
APPL | 2020.01.09 | 311 |
APPL | 2020.01.11 | 311 |
APPL | 2020.01.13 | 311 |
APPL | 2020.01.15 | 309 |
APPL | 2020.01.17 | 313 |
APPL | 2020.01.19 | 313 |
APPL | 2020.01.21 | 315 |
IBM | 2020.01.02 | 107 |
IBM | 2020.01.04 | 207 |
IBM | 2020.01.06 | 310 |
IBM | 2020.01.08 | 307 |
IBM | 2020.01.10 | 307 |
IBM | 2020.01.12 | 305 |
IBM | 2020.01.14 | 312 |
IBM | 2020.01.16 | 312 |
IBM | 2020.01.18 | 315 |
IBM | 2020.01.20 | 314 |
相关函数:msum