q - 按组频率过滤

时间:2018-01-18 09:25:07

标签: kdb q-lang

我想根据特定列中组的频率对条件进行过滤。例如:

给出表

tmp:([] id:`a`a`b`b`b`c; c2:1 2 3 4 5 6)

首先找到每组的频率

ce:count each group tmp[`id]

然后在tmp中选择id的群组数量超过1的行

select from tmp where id in where ce > 1

id  c2
a   1
a   2
b   3
b   4
b   5
(row id=`c is gone because it appeared only once)

怎样才能做得更优雅?

由于

1 个答案:

答案 0 :(得分:3)

您可以使用fby例如

q)select from tmp where 1<(count;i) fby id
id c2
-----
a  1
a  2
b  3
b  4
b  5