我在 KDB+ 中有一个表,我需要对其列重新排序,但不是按名称、按索引。我的意思是,在下面的示例表中,我不知道列名称是“ltCt”、“poPt”、“kgAg”、“xoOt”,我所知道的是第 6 列需要是第 4 列列,第 7 列需要是第 5 列,依此类推,我需要据此重新排序。
是否可以在 KDB+ 中对这样的列重新排序?我的理解是 xcols 似乎需要列名。
x y z ltCt poPt kgAg xoOt
---------------------------------------------------------------------
today setting1 model1 41.66 367.69 -662.89 11347.91
理想的输出格式:
x y z kgAg xoOt ltCt poPt
---------------------------------------------------------------------
today setting1 model1 -662.89 11347.91 41.66 367.69
您可以使用关键字
cols
来提取列列表:
q)cols tab
`x`y`z`ltCt`poPt`kgAg`xoOt
然后,您可以使用关键字
rank
后跟索引列表来重新排序列列表:
q)cols[tab] rank 0 1 2 5 6 3 4
`x`y`z`kgAg`xoOt`ltCt`poPt
最后将其与您的桌子一起放入
xcols
中:
q)(cols[tab] rank 0 1 2 5 6 3 4) xcols tab
上面的答案很好!只是好奇,你需要排名吗?
q)(rank 0 1 2 5 6 3 4)~0 1 2 5 6 3 4
1b
q)(cols[tab] 0 1 2 5 6 3 4) xcols tab
x y z kgAg xo0t ltCt poPt
---------------------------------------------------------
"today" "setting1" "model1" -662.89 11347.91 41.66 367.69