假设我有一张像

tbl:flip `id`evt!(1 1 1 2 2 2 2 2 3 3; `a`b`c`a`b`b`b`c`a`c)

如何有效地计算 evt 的出现次数,但每个 id 仅计算一次

因此,结果应如下所示(或将 evt 映射到唯一计数的任何其他格式)
res:flip `evt`ct !(`a`b`c; 3 2 3)

最佳答案

一种方法是这样的:

q)select count distinct id by evt from tbl
evt| id
---| --
a  | 3
b  | 2
c  | 3

如果您希望像示例中那样取消键控,可以将 0! 添加到开头

关于KDB 计数列的唯一组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48925202/

10-12 01:47