我有一个有很多零的向量。
v <-(3,0,0,5,0,0,0,10,0,0,0,0)
我想向前分发非零数字,并用非零数字替换平均值之前的所有数字。
例如(3,0,0)应替换为(1,1,1)。
(3 + 0 + 0)/ 3 = 1
v应该成为
(1,1,1,1.25,1.25,1.25,1.25,2,2,2,2,2)
是否有可以执行此操作的功能?
感谢。
答案 0 :(得分:17)
您正在寻找函数 ave(v,cumsum(v))
[1] 1.00 1.00 1.00 1.25 1.25 1.25 1.25 2.00 2.00 2.00 2.00 2.00
0