differ
¶
Find where list items change value
differ x differ[x]
Returns a boolean list indicating where consecutive pairs of items in x
differ.
It applies to all data types.
It is a uniform function.
The first item of the result is always 1b
:
r[i]=1b for i=0
r[i]=not A[i]~A[i-1] otherwise
q)differ`IBM`IBM`MSFT`CSCO`CSCO
10110b
q)differ 1 3 3 4 5 6 6
1101110b
Split a table with multiple dates into a list of tables with distinct dates.
q)d:2009.10.01+asc 100?30
q)s:100?`IBM`MSFT`CSCO
q)t:([]date:d;sym:s;price:100?100f;size:100?1000)
q)i:where differ t[`date] / indices where dates differ
q)tlist:i _ t / list of tables with one date per table
q)tlist 0
date sym price size
-----------------------------
2009.10.01 IBM 37.95179 710
2009.10.01 CSCO 52.908 594
2009.10.01 MSFT 32.87258 250
2009.10.01 CSCO 75.15704 592
q)tlist 1
date sym price size
----------------------------
2009.10.02 MSFT 18.9035 26
2009.10.02 CSCO 12.7531 760
domain: b g x h i j e f c s p m d z n u v t
range: b b b b b b b b b b b b b b b b b b
differ
is a multithreaded primitive.
Binary use deprecated
As of V3.6 the keyword is variadic. Binary application is deprecated and may disappear in future versions. The keyword cannot be applied infix.
For a binary version, use Match Each Prior: ~:'
.
Basics: Comparison