tmoving
New in version 1.30.14.
语法
tmoving(func, T, funcArgs, window)
参数
func 是一个函数。
T 是一个递增的整型或时间类型的向量,且不能包含NULL值。
funcArgs 是函数func的参数。可为向量、字典或表。如果有多个参数,则用元组表示,并且每个参数的长度(向量/字典的元素个数或表的行数)必须相同。
window 是一个正整数或一个 duration,表示滚动窗口的区间大小。 对于 T 中每个元素T i,确定一个区间为[T i - window + 1, T i ]的移动窗口,所有包含在这个区间的数据均属于该窗口。
其他相关的 tm 系列函数的参数说明和窗口计算规则请参考: 时序滑动窗口系列(tm 系列)
详情
应用函数/运算符到给定对象的一个滚动窗口上。tmoving 高阶函数返回一个向量,长度与输入参数的长度相同。
内置函数 tmsum, tmcount 和 tmavg 为各自的计算场景进行了优化,因此比 tmoving 高阶函数有更好的性能。
例子
$ date=2021.08.01 2021.08.02 2021.08.02 2021.08.02 2021.08.03 2021.08.04 2021.08.05 2021.08.06 2021.08.09 2021.08.10 2021.08.14
$ value=1..11
$ t = table(date,value)
$ timer(100) select date, value, tmoving(avg,date,value,3d) from t;
Time elapsed: 1.995 ms
$ timer(100) select date, value, tmavg(date, value, 3d) from t;
Time elapsed: 0.997 ms
单独打印计算结果,可以看到,当窗口滑动到2021.08.09,计算窗口范围为[2021.08.07, 2021.08.08, 2021.08.09], 但7日和8日值缺失,因此不参与计算。
date |
value |
tmoving_sum |
---|---|---|
2021.08.01 |
1 |
1 |
2021.08.02 |
2 |
1.5 |
2021.08.02 |
3 |
2 |
2021.08.02 |
4 |
2.5 |
2021.08.03 |
5 |
3 |
2021.08.04 |
6 |
4 |
2021.08.05 |
7 |
6 |
2021.08.06 |
8 |
7 |
2021.08.09 |
9 |
9 |
2021.08.10 |
10 |
9.5 |
2021.08.14 |
11 |
11 |