2017-02-07 39 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',我不能接受現在的答案。請不要覺得被冒犯,但你的答案當然也有很多幫助。 –