Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
492 views
in Technique[技术] by (71.8m points)

一个数组中,如何按照连续相同的数据进行分组计算?

v=[10,15,20,20,30,30,30,50,50,75];
v_final=[10,15,20,25,30,35,40,50,55,75];

想把v转换成v_final的样子。在DolphinDB database中试了下面代码:

diff=eachPre(-,v,0);
v1=v + iif(diff>0, 0, 5);

得到v1为[10,15,20,25,30,35,35,50,55,75],但v1这样还不行,请问怎样弄下?就是要把diff=0的部分累加5而不是直接加5,好像应该和accumulate结合起来用,但不知该怎样结合?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

可以用segmentby函数来实现:

v=[10,15,20,20,30,30,30,50,50,75];
step = 5
v1 = iif(nullFill(deltas(v),v)>0,0,1)
v_final =  v + segmentby(accumulate{add}, v1, v1) * step

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...