代码之家  ›  专栏  ›  技术社区  ›  tenticon

q-按组频率过滤

  •  0
  • tenticon  · 技术社区  · 6 年前

    我想根据特定列中组的频率条件筛选表。例子:

    给定表格

    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 回复  |  直到 6 年前
        1
  •  3
  •   Jonathon McMurray    6 年前

    您可以使用 fby 例如

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