如何解决从 kdb 中的嵌套表中删除键列表
我试图从嵌套表中删除一组项目;例如给出下表
tree:{[t;col]
if[1=count col; :![t;();0b;enlist[`name]!col]];
f:first col;
c:cols[t] except f;
r:1_col;
:?[t;();(enlist `name)!enlist f ;`val`child!((sum;`val);({[r;c;l] tree[flip c!l;r]};enlist r;enlist c;(enlist,c )))]
};
t:flip`cat`dog`caps`val`val1!flip((cross/)(0 1;`$(5 1)#.Q.a;`$(5 1)#.Q.A;til 5;5+til 5));
// derive tree from aforementioned table
tre:tree[t;`cat`dog`caps];
// notably returns correct result indexed by name
.[tre;(0;`child)] enlist[`name]!enlist[`a`b`c];
// does not work ???
.[tre;(0;`child);_;enlist[`name]!enlist[`a`b`c]];
我想过使用以下作为解决方案
.[tre;(0;`child);{delete from y where name in x}[`a`b`c]];
我只是想检查是否有更简洁(普遍接受)的方法。比如使用 enlist[name]!enlist[
ab
c];索引来实现这一点。
在 KDB+ 中,应该如何适当地从嵌套树中删除一组给定的索引? 感谢您的指导。
解决方法
假设你想要改变这个:
您可以稍微修改一下代码以使用 Over,如下所示:
.[tre;(0;`child);_/;`a`b`c]
这将根据需要对这些键中的每一个应用删除。
,我喜欢 shree.pat 的解决方案!只需补充一点,如果您稍加修改,您最初的尝试可能会奏效:
q).[tre;(0;`child);{y _ x};flip enlist[`name]!enlist[`a`b`c]]
name| val child ..
----| -----------------------------------------------------------------------..
0 | 1250 (+(,`name)!,`d`e)!+`val`child!(250 250;(+`caps`val`val1`name!(`A`A..
1 | 1250 (`s#+(,`s#`a`b`c`d`e)!+`val`child!(250 250 250 250 250;(+`..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。