这里提供的答案应该适用于许多专栏,how to use ungroup with multiple composite columns in kdb
但不是。对于类似的情况:
tb:([] x: 0 1 10; y:(1 1; 2 2 2; enlist 3); z:("kk";"ttt"; enlist "j");w:("cc";"bbbb";enlist "a")
ungroup1: {[col;tbl] @[tbl where count each tbl col;col;:;raze tbl col]}
这将起作用:
ungroup1[`y;tb]
x y z w
-----------------
0 1 "kk" "cc"
0 1 "kk" "cc"
1 2 "ttt" "bbbb"
1 2 "ttt" "bbbb"
1 2 "ttt" "bbbb"
10 3 ,"j" ,"a"
再次基于单列,
ungroup1[`z;tb]
x y z w
-----------------
0 1 1 k "cc"
0 1 1 k "cc"
1 2 2 2 t "bbbb"
1 2 2 2 t "bbbb"
1 2 2 2 t "bbbb"
10 ,3 j ,"a"
这不会:
ungroup1[`y`z;tb]
返回:'长度
所需结果:
x y z w
------------
0 1 k "cc"
0 1 k "cc"
1 2 t "bbbb"
1 2 t "bbbb"
1 2 t "bbbb"
10 3 j ,"a"
我能听听专家的意见吗?>
这里提供的答案应该适用于许多列,如何在kdb中将ungroup与多个复合列一起使用,但事实并非如此。对于类似这样的情况:tb:([] x:0 1 10; y:(1 1; 2 2 2; enlist 3); ...
由于取消分组的实现为raze flip each t
,因此您可以复制该方法,但排除(并重新加入)不要