我有这个矩阵:
矩阵 =
价值1 | 价值2 | 价值3 | 价值4 | 价值5 | 价值6 | 价值7 | 价值8 | 价值9 | 价值10 | |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 45 | 6 | 6 | 8 | 3 | 0 | 4 | 5 |
2 | 0 | 0 | 0 | 2 | 9 | 1 | 8 | 3 | 0 | 0 |
n | n | n | n | n | n | n | n | n | n | n |
我想要的是:
roll_aver =
价值1 | 价值2 | 价值3 | 价值4 | 价值5 | 价值6 | 价值7 | 价值8 | 价值9 | 价值10 | |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 45 | 25.5 | 19 | 16.25 | 5.75 | 5.67 | 5 | 4 |
2 | 0 | 0 | 0 | 2 | 5.5 | 4 | 5 | 3.5 | 4 | 5.5 |
n | n | n | n | n | n | n | n | n | n | n |
我知道我可以通过以下方式进行平均滚动:
roll_aver <- t(apply(matrix, 1, function(x) rollmean(x, k=4, fill = 0, align ="right")))
但通过这种方式,它会产生一个包含零的滚动平均值。
想象一下它相当于一个 excel:averageif(range of last 4 in the row,>0)