一个数组中,如何按照连续相同的数据进行分组计算?
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结合起来用,但不知该怎样结合?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以用segmentby函数来实现:
最简单最高效的办法应该是使用cumPositiveStreak函数。连续的positive的数会累加,遇到0或负数置0
segmentby是解决连续相同的数据分组计算的通用办法。