2017-02-07 37 views
0

假设我有一个数据帧是像下面这样:R中如何计算数量/序的增加来

mydataframe <- data.frame(x=1:10, y=c(2,4,6,8,11,14,17,19,22,29)) 

plot(mydataframe$y, type = "l", lwd="3", col="red") 

我所要做的是计算平均值,如平均Y的[1] = 2,Y [1,2] = 3等等...

y Avg basically 
2 2  2/1 
4 3  (2+4)/2 
6 4  (2+4+6)/3 
8 5  (2+4+6+8)/4 
11 6  (2+4+6+8+11)/5 
14 8  so forth 
17 9   
19 10 
22 11 
29 13 

我试图使用循环,但我知道我错了,并不会得到想要的结果...

for (i in 1:length(mydataframe$x)) { 
    print (mean(mydataframe$y[i])) 
} 

有人可以帮忙吗?谢谢。

回答

2

您可以简单地使用cumsum通过x分,

cumsum(mydataframe$y)/mydataframe$x 
#[1] 2.000000 3.000000 4.000000 5.000000 6.200000 7.500000 8.857143 10.125000 11.444444 13.200000 
3

我们可以使用cummeandplyr

library(dplyr) 
mydataframe$basically <- cummean(mydataframe$y) 
+0

感谢@akrun,你的答案是真棒。但我想,因为它会使用另一个软件包'dplyr',我不能接受现在的答案。请不要觉得被冒犯,但你的答案当然也有很多帮助。 –