q查询:从表创建网格

时间:2014-03-12 13:50:12

标签: kdb q-query

我编写了一个包含q查询的函数,该查询返回一个包含三列的表--c1,c2和vals。如何创建网格(2D数组),使得c1为x轴,c2为y轴,相应单元格为值。例如,如果表中的一行是c1:A c2:B值:100,我想在x轴上显示A,在y轴上显示B,在与(A,B)对应的单元格中显示100。

感谢您的帮助。

输入:
_c1_ | _c2_ |vals
=============== -
 _A_ | _B_ | 100
 _A_ | _Y_ | 110
 _X_ | _Y_ | 120
 _X_ | _T_ | 220

输出:
_ _ | _B_ | _Y_ | _T_ |
=============== -
_A_ | 100 | 110 |000 |
_X_ | 1000 | 120 |220 |

为格式错误道歉,我不知道如何创建一个合适的表格。

1 个答案:

答案 0 :(得分:3)

您可以尝试转动结果表:

q)tt:flip`c1`c2`vals!(`a`a`x`x;`b`y`y`t;100 200 300 400)
q)tt
c1 c2 vals
----------
a  b  100
a  y  200
x  y  300
x  t  400
q)0^exec (distinct tt`c2)#c2!vals by c1:c1 from tt
c1| b   y   t
--| -----------
a | 100 200 0
x | 0   300 400

您可以查看Pivot Table了解详情。