2017-02-07 2 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") 

То, что я пытаюсь сделать, это вычислить средние значения, такие как среднее у [1] = 2, у [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

Мы можем использовать cummean из dplyr

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

благодаря @akrun, ваш ответ является удивительным. но я думаю, так как он будет использовать другой пакет, 'dplyr', я не могу принять ответ на данный момент. пожалуйста, не обижайтесь, но, безусловно, ваш ответ тоже поможет. –

Смежные вопросы