Kdb 使用集合窗口计算两个列表的加权移动平均值
如果我有两份清单:Kdb 使用集合窗口计算两个列表的加权移动平均值,kdb,Kdb,如果我有两份清单: a:1 2 3 4; b:10 20 30 40; 我想在2的窗口内求两个列表的乘积之和。因此,结果集应为: 10 50 130 250 例如,要得到130的结果,它将是(2*20)+(3*30)=130 似乎让我有了一部分,但是2的窗口没有被应用。我试过用sum,sums,sum-each,wavg,mavg等进行实验,我完全被卡住了。有人能帮忙吗?谢谢 这一行应该适合您: 2msum a*b 如下所示: q)a:1 2 3 4 q)b:10 20 30 40 q)2
a:1 2 3 4;
b:10 20 30 40;
我想在2的窗口内求两个列表的乘积之和。因此,结果集应为:
10 50 130 250
例如,要得到130的结果,它将是(2*20)+(3*30)=130
似乎让我有了一部分,但是2的窗口没有被应用。我试过用
sum
,sums
,sum-each
,wavg
,mavg
等进行实验,我完全被卡住了。有人能帮忙吗?谢谢 这一行应该适合您:
2msum a*b
如下所示:
q)a:1 2 3 4
q)b:10 20 30 40
q)2 msum a*b
10 50 130 250
有关关键字msum
的更多信息,您可以查看Kx参考页:
希望有帮助 这一行应该适合您:
2msum a*b
如下所示:
q)a:1 2 3 4
q)b:10 20 30 40
q)2 msum a*b
10 50 130 250
有关关键字msum
的更多信息,您可以查看Kx参考页:
希望有帮助 或者,你也可以在每个之前使用副词:
q)+':[a*b]
但是,这仅适用于窗口大小为2的情况,如果数据包含空值,则需要用0填充:
q)+':[0^a*b2]
值得肯定的是,在这种情况下,它比使用msum更快
q)\ts:1000000 +':[0^a*b2]
940 1264
q)\ts:1000000 2 msum a*b2
1556 1104
或者,您可以在每个之前使用副词:
q)+':[a*b]
但是,这仅适用于窗口大小为2的情况,如果数据包含空值,则需要用0填充:
q)+':[0^a*b2]
值得肯定的是,在这种情况下,它比使用msum更快
q)\ts:1000000 +':[0^a*b2]
940 1264
q)\ts:1000000 2 msum a*b2
1556 1104
如果使用
previor
关键字,中缀(+)previor a*b
或前缀previor[+;a*b]
可能更清晰,如果使用previor
关键字,中缀(+)previor a*b
或前缀previor[+;a*b]