Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算kdb中的时间加权平均值?_Kdb - Fatal编程技术网

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

如何计算kdb中的时间加权平均值?,kdb,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中使用它们 更新 解决方案是使用括号:((下一个ts)-ts)。请注意,我不能使用增量[ts]。这将产生不

由于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
中使用它们

更新 解决方案是使用括号:
((下一个ts)-ts)
。请注意,我不能使用
增量[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
这是
三角洲[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
那么:

`date`ts xasc select date,ts,mytw:deltas[ts] wavg mycolumnval from pmd where date=2013.05.22
难道不是:
date
ts xasc选择日期,ts,mytw:(1 u增量ts,0Nv)来自pmd的wavg mycolumnval,其中date=2013.05.22。如果您的ts是datetime,请使用0Np,因为“下一个ts”需要括号:

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

你能举一个你期望的结果的例子吗?同样,在你的计算中,(下一个ts-ts)将从右向左求值,所以它将是零列表中的下一个。你应该在这里使用delta。我很确定你的版本不起作用,我的查询使用了backtick,它们工作得很好。现在,如果有人愿意解释这种差异(如果有任何原因的话)…谢谢你指出这一点。原因正是您已经发现的(next-ts)与(ts-prev)之间的差异。此查询存在一个问题:权重设置为(ts-prev)。我正在更新我的问题。。。