如何计算kdb中的时间加权平均值?

时间:2013-05-22 18:54:20

标签: kdb

由于wavg函数,在kdb中计算加权平均值很容易。如何计算两个连续行时间之间的延迟,并将这些值用作wavg的权重参数?

类似的东西:

`date`ts xasc select date,ts,mytw:(next ts - ts) wavg mycolumnval from pmd where date=2013.05.22

next在查询中提供以下行列,但我无法计算如何减去两个ts值并在wavg中使用它们。

更新 解决方案是使用括号:((next ts) - ts)。请注意,我无法使用deltas[ts]。这会产生不同的权重:

08:15:19.811    00:00:00.000
08:15:19.811    00:00:00.001
08:15:19.812    00:00:00.014
08:15:19.826    00:00:07.305
08:15:27.131    NULL

这是deltas[ts]

08:15:19.811    08:15:19.811
08:15:19.811    00:00:00.000
08:15:19.812    00:00:00.001
08:15:19.826    00:00:00.014
08:15:27.131    00:00:07.305

3 个答案:

答案 0 :(得分:1)

怎么样:

`date`ts xasc select date,ts,mytw:deltas[ts] wavg mycolumnval from pmd where date=2013.05.22

答案 1 :(得分:1)

'下一个ts'周围需要括号:

`date`ts xasc select date,ts,mytw:((next ts) - ts) wavg mycolumnval from pmd where date=2013.05.22

答案 2 :(得分:0)

不应该是: date ts xasc select date,ts,mytw:(1 _ deltas ts,0Nv)wavg mycolumnval from pmd where date = 2013.05.22。如果您的ts是日期时间,则使用0Np