0

別の列の以前のすべての値の単純な平均である列を R に作成したいと考えています。例えば:

D
    X
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10

D$Y を D$X の以前の平均にしたいと思います。つまり、D$Y は D$X の以前のすべての観測値の平均です。すべての行を移動する for ループを使用してこれを行う方法は知っていますが、より効率的な方法はありますか?

大規模なデータセットとハードウェアがあり、そのタスクに対応できません!

4

1 に答える 1

5

次のようなベクトルの累積平均を生成できます。

set.seed(123)
x<-sample(20)
x
## [1]  6 15  8 16 17  1 18 12  7 20 10  5 11  9 19 13 14  4  3  2
xmeans<-cumsum(x)/1:length(x)
xmeans
## [1]  6.000000 10.500000  9.666667 11.250000 12.400000 10.500000 11.571429
## [8] 11.625000 11.111111 12.000000 11.818182 11.250000 11.230769 11.071429
## [15] 11.600000 11.687500 11.823529 11.388889 10.947368 10.500000

だからD$Y<-cumsum(D$X)/1:nrow(D)うまくいくはずです。

于 2013-10-09T14:59:51.610 に答える