# mavgTopN

Syntax

mavgTopN(X, S, window, top, [ascending=true])

Please see Moving TopN Functions (mTopN functions) for the parameters and windowing logic.

Details

After stably sorting S in the specified ascending order, the function calculates the average for the first top elements of X in the sliding window.

Examples

```\$ X = 1..7
\$ S = 0.3 0.5 0.1 0.1 0.5 0.2 0.4
\$ mavgTopN(X, S, 4, 2)
[1,1.5,2,3.5,3.5,3.5,5]

\$ X = NULL 1 2 3 4 NULL 5
\$ S = 3 5 1 1 5 2 4
\$ mavgTopN(X, S, 4, 2)
[,1,2,2.5,2.5,2.5,3]

\$ X = matrix(1..5, 6..10)
\$ S = 2022.01.01 2022.02.03 2022.01.23 2022.04.06 2021.12.29
\$ mavgTopN(X, S, 3, 2)
```

#0

#1

1

6

1.5

6.5

2

7

2.5

7.5

4

9

```\$ 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)
\$ mavgTopN(X, S, 3, 2)
```

#0

#1

1

6

1.5

6.5

2

7

2.5

7.5

4

9

A table with columns code, date, close and 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

114

107

APPL

2020.01.03

66

106

IBM

2020.01.04

36

106

APPL

2020.01.05

52

101

IBM

2020.01.06

28

100

APPL

2020.01.07

55

108

IBM

2020.01.08

54

106

APPL

2020.01.09

103

106

IBM

2020.01.10

94

104

APPL

2020.01.11

82

102

IBM

2020.01.12

98

103

APPL

2020.01.13

118

101

IBM

2020.01.14

61

105

APPL

2020.01.15

43

105

IBM

2020.01.16

41

104

APPL

2020.01.17

111

106

IBM

2020.01.18

119

103

APPL

2020.01.19

24

107

IBM

2020.01.20

22

109

APPL

2020.01.21

26

103

Calculate the average of the closing prices of the top 3 records with the highest trading volume in the window for each stock.

```\$ select code, date, mavgTopN(close, volume, 5, 3, false) from t context by code
```

code

date

mavgTopN_close

APPL

2020.01.03

106

APPL

2020.01.05

103.5

APPL

2020.01.07

105

APPL

2020.01.09

106.6667

APPL

2020.01.11

104.6667

APPL

2020.01.13

103

APPL

2020.01.15

103

APPL

2020.01.17

104.3333

APPL

2020.01.19

103

APPL

2020.01.21

104

IBM

2020.01.02

107

IBM

2020.01.04

106.5

IBM

2020.01.06

104.3333

IBM

2020.01.08

106.3333

IBM

2020.01.10

105.6667

IBM

2020.01.12

104.3333

IBM

2020.01.14

104

IBM

2020.01.16

104

IBM

2020.01.18

103.3333

IBM

2020.01.20

103.6667

Related function: mavg