取消给定表中多个列的分组

问题描述 投票:0回答:1

这里提供的答案应该适用于许多专栏,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); ...

q kdb
1个回答
0
投票

由于取消分组的实现为raze flip each t,因此您可以复制该方法,但排除(并重新加入)不要

© www.soinside.com 2019 - 2024. All rights reserved.