说我有下表:
t:([]date:25#(.z.d+ til 5); travel:(5#`car),(5#`plane),(5#`bus),(5#`cycle),(5#`scooter); val:25?100)
date travel val
----------------------
2019.12.06 car 75
2019.12.07 car 47
2019.12.08 car 70
2019.12.09 car 32
2019.12.10 car 86
2019.12.06 plane 29
2019.12.07 plane 96
如何在n
列中删除前travel
个观察值(假设它们不是从2019.12.06开始的所有内容)?
例如,在该特定示例中,如果为n=1
,我将仅获得date> 2019.12.06的条目。
答案 0 :(得分:2)
我将使用以下代码段:
n: 3;
select from t where i>({last[y]^y@x-1}[n];i) fby travel
在上面的语句中,所有行号均按行程分组,并且其中的前n
个已删除。如果{last[y]^y@x-1}[n]
大于组中的行数,则n
返回第n
个行号或最后一个行号。
答案 1 :(得分:2)
在数据不一定按日期进行排序的情况下,以下内容将起作用(由action="{{ route('update_post', ['id' => $post->id]) }}
提供):
iasc
按照您的描述包装函数:
q)select from t where 0<(iasc;date) fby travel
date travel val
----------------------
2019.12.07 car 30
2019.12.08 car 75
2019.12.09 car 61
2019.12.10 car 56
2019.12.07 plane 46
...
答案 2 :(得分:1)
我会利用简单的by
子句的优势。我们可以很容易地通过旅行获得行的索引
q)exec i by travel from t
bus | 10 11 12 13 14
car | 0 1 2 3 4
cycle | 15 16 17 18 19
plane | 5 6 7 8 9
scooter| 20 21 22 23 24
由此,我们可以删除n
个结果,整理索引并返回索引
q)n:1
q)t asc raze value exec _\:[n;]i by travel from t
date travel val
----------------------
2019.12.07 car 10
2019.12.08 car 1
2019.12.09 car 90
2019.12.10 car 73
2019.12.07 plane 43
2019.12.08 plane 90
2019.12.09 plane 84
2019.12.10 plane 63
2019.12.07 bus 54
2019.12.08 bus 38
2019.12.09 bus 97
2019.12.10 bus 88
2019.12.07 cycle 68
2019.12.08 cycle 45
2019.12.09 cycle 2
2019.12.10 cycle 39
2019.12.07 scooter 49
2019.12.08 scooter 82
2019.12.09 scooter 40
2019.12.10 scooter 88