我想在R中创建一个列,它只是另一列的所有先前值的平均值.例如:
D
X
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Run Code Online (Sandbox Code Playgroud)
我希望D $ Y是D $ X的先前平均值,即D $ Y是之前所有D $ X观测值的平均值.我知道如何使用for循环移动每一行来做到这一点,但是有更高效的方式吗?
我有一个大型数据集和硬件不能胜任该任务!
谢谢Ryan
您可以生成矢量的累积方式,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
所以D$Y<-cumsum(D$X)/1:nrow(D)应该工作.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |