分隔 kdb 中的记录 table
separating the records in a kdb table
有一个 table 包含一个列,我想将其分成多个记录。例如
q)tab:([]a:1 2 3;b:(`a;`$"b c";`d);c:2 3 4)
q)tab
a b c
-------
1 a 2
2 b c 3
3 d 4
在b
列的第二个条目中b
和c
之间有一个space,我希望table成为
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
我试过了
" " string vs exec b from tab
但没用。
有什么想法吗?
您通常会使用 ungroup
:
q)ungroup([]a:1 2 3;b:((),`a;`b`c;(),`d);c:2 3 4)
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
由于b
是每行有多个条目的列,您可以计算每个值并相应地扩展相应的行条目。然后ungroup
就像特里提到的那样应该可以。
q)t:([]a:1 2 3;b:(`a;`b`c;`d);c:2 3 4)
q)![t;();0b;{x!(enlist({(count each x)#'y};`b)),/:x}cols t]
a b c
------------
,1 ,`a ,2
2 2 `b`c 3 3
,3 ,`d ,4
q)ungroup ![t;();0b;{x!(enlist({(count each x)#'y};`b)),/:x}cols t]
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
编辑:在您发表评论后意识到输入不同。我想这就是你想要的。
q)t:([]a:1 2 3;b:(`a;`$"b c";`d);c:2 3 4)
q)ungroup update`$" "vs'string b from t
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
有一个 table 包含一个列,我想将其分成多个记录。例如
q)tab:([]a:1 2 3;b:(`a;`$"b c";`d);c:2 3 4)
q)tab
a b c
-------
1 a 2
2 b c 3
3 d 4
在b
列的第二个条目中b
和c
之间有一个space,我希望table成为
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
我试过了
" " string vs exec b from tab
但没用。
有什么想法吗?
您通常会使用 ungroup
:
q)ungroup([]a:1 2 3;b:((),`a;`b`c;(),`d);c:2 3 4)
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
由于b
是每行有多个条目的列,您可以计算每个值并相应地扩展相应的行条目。然后ungroup
就像特里提到的那样应该可以。
q)t:([]a:1 2 3;b:(`a;`b`c;`d);c:2 3 4)
q)![t;();0b;{x!(enlist({(count each x)#'y};`b)),/:x}cols t]
a b c
------------
,1 ,`a ,2
2 2 `b`c 3 3
,3 ,`d ,4
q)ungroup ![t;();0b;{x!(enlist({(count each x)#'y};`b)),/:x}cols t]
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4
编辑:在您发表评论后意识到输入不同。我想这就是你想要的。
q)t:([]a:1 2 3;b:(`a;`$"b c";`d);c:2 3 4)
q)ungroup update`$" "vs'string b from t
a b c
-----
1 a 2
2 b 3
2 c 3
3 d 4