2015-05-14 180 views
1

是否有一個更優雅的方式來獲取當前行至前n行的平均值?例如,R獲得每n行的平均值

x=replicate(3, rnorm(20)) 

我想要的是在每行+ 2行之前得到第2列的平均值。我目前的做法是1)創建一個空列2)遍歷每一行,並從前兩行中獲取值,表示它,然後將其存儲在新列中。這是乏味的,所以我想知道是否有更清潔,更快的方法?提前致謝。 ahdee

回答

2

嘗試filter - 你在做什麼是滾動的意思。

filter(x[,2], rep(1/3,3), sides=1) 
+0

謝謝;滾動手段是現貨。我搜索了一下,發現了一個圖書館動物園,這對我很好。圖書館(動物園); rollapply(x [,2],2,mean,na.pad = 1,align =「right」)' – Ahdee

2

感謝電郵我想要的是一個滾動的意思。我找到了解決方案。

library(zoo) 
x=replicate(3, rnorm(20)) 

rollapply(x[,2], 2, mean, na.pad = 1, align="right") 
+1

是的,這相當於'filter(x [,2],rep(1/2,2) = 1)'從我的答案。 'rollapply'是同類邏輯的更通用的版本。很高興看到你整理出來。 – thelatemail