我有一张如下表:
q)tab:([]time:.z.t;sym:`ax`bx`cx`ds;col1:`a`a`b`b;price:1.4,1.2,1.3,1.4)
q)tab
time sym col1 price
---------------------------
20:29:37.309 ax a 1.4
20:29:37.309 bx a 1.2
20:29:37.309 cx b 1.3
20:29:37.309 ds b 1.4
q)
我的目标是将 col1 中的值从 a->b(其中 a 和 b->a(其中 b 和列名相同))更改为 a->b(其中 b 和列名相同)。下面是我的代码,可以完成这项工作,但是有没有更好的方法可以用更少的代码行来实现这一点?
testTab:update col2:count[i]#enlist `b from tab where col1=`a
testTab:update col2:count[i]#enlist `a from testTab where col1=`b
q)testTab
time sym col1 price col2
--------------------------------
20:29:37.309 ax a 1.4 b
20:29:37.309 bx a 1.2 b
20:29:37.309 cx b 1.3 a
20:29:37.309 ds b 1.4 a
q)testTab:`time`sym`col2 xcols testTab //Bring forward col2
q)testTab
time sym col2 col1 price
--------------------------------
20:29:37.309 ax b a 1.4
20:29:37.309 bx b a 1.2
20:29:37.309 cx a b 1.3
20:29:37.309 ds a b 1.4
q)testTab: delete col1 from testTab //Delete original col1 from the table
q)testTab: `time`sym`col1 xcol testTab // Rename col2 to col1
q)testTab
time sym col1 price
---------------------------
20:29:37.309 ax b 1.4
20:29:37.309 bx b 1.2
20:29:37.309 cx a 1.3
20:29:37.309 ds a 1.4
q)
谢谢!