如果我有两个列表:
a:1 2 3 4;
b:10 20 30 40;
我想在一个2的窗口内求和两个列表的乘积。因此结果集应该是:
10 50 130 250
例如,要获得130的结果,它将是(2 * 20)+(3 * 30)= 130
sums 2 mavg '(a*b)
似乎可以帮助我实现目标,但是2的窗口没有被应用。我尝试使用sum
,sums
,sum each
,wavg
,mavg
等进行试验,但我完全陷入了困境。有人可以帮忙吗?谢谢!
答案 0 :(得分:5)
此行应为您工作:
2 msum 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参考页面:
https://code.kx.com/wiki/Reference/msum
希望有帮助!
答案 1 :(得分:1)
或者,您也可以在每个之前使用副词:
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