假设我有一个表,日期,符号和大小为列.日期按升序排列,每个日期的大小按降序排列.如何缩小表格,以便保留每个日期,只有前几个,比如10个记录?命令越简单越好.
提前致谢!
最佳答案
给出一张表:
q)show tbl:`date`val!/:(.z.d+til 3) cross 100+til 25;
date val
--------------
2016.10.31 100
2016.10.31 101
2016.10.31 102
2016.10.31 103
2016.10.31 104
..
按日期选择前N行:(以下示例中N = 2)
q)select from tbl where i in{raze y sublist/:group x}[date;2]
date val
--------------
2016.10.31 100
2016.10.31 101
2016.11.01 100
2016.11.01 101
2016.11.02 100
2016.11.02 101
使用group
函数 – 它将返回包含索引的字典,其中每个唯一值都出现.然后,该函数为每个唯一值检索前N个索引(sublist).
注意:我是kdb表中的隐式行索引.
相关文章
转载注明原文:使用kdb按日期输出前几个记录 - 代码日志