如何在kdb的列表中对连续相同的数字求和?

时间:2016-07-29 14:35:29

标签: kdb

我有一个这样的清单:

a:1 1 1 1 2 3 1 1 4 4 4 5 6 4

如何将a中所有连续相同的数字相加,以便它变为:

a:4 2 3 2 12 5 6 4

2 个答案:

答案 0 :(得分:4)

有很多方法 - 一种方法:

q) a:1 1 1 1 2 3 1 1 4 4 4 5 6 4
q) sum each where[differ a] _ a
    4 2 3 2 12 5 6 4

答案 1 :(得分:0)

使用prev<>实现此目的的另一种方法:

sum each cut[where a<>prev[a]; a]
4 2 3 2 12 5 6 4