好吧,試試這個:
Rgames: timeseq<-1:5
Rgames: winmat <- outer(timeseq,timeseq,FUN=function(x,y) y>=x &y<=x+2)
Rgames: winmat
[,1] [,2] [,3] [,4] [,5]
[1,] TRUE TRUE TRUE FALSE FALSE
[2,] FALSE TRUE TRUE TRUE FALSE
[3,] FALSE FALSE TRUE TRUE TRUE
[4,] FALSE FALSE FALSE TRUE TRUE
[5,] FALSE FALSE FALSE FALSE TRUE
Rgames: winmat %*% timeseq
[,1]
[1,] 6
[2,] 9
[3,] 12
[4,] 9
[5,] 5
替換功能,與你的窗口的寬度,我想你將所有設置。
編輯:在對Thilo的查詢作出響應時,它看起來像在一般情況下您應該使用apply
。鑑於上面的東西,再次撥打您的觀測值「timval」,作爲
Rgames: timval<-c(3,4,2,6,1)
Rgames: valmat<-timval*t(winmat)
Rgames: valmat
[,1] [,2] [,3] [,4] [,5]
[1,] 3 0 0 0 0
[2,] 4 4 0 0 0
[3,] 2 2 2 0 0
[4,] 0 6 6 6 0
[5,] 0 0 1 1 1
Rgames: apply(valmat,2,median)
[1] 2 2 1 0 0
編輯:明明我睡着了沒有:沒有人願意基於所有這些零位數。發帖之前我應該多考慮一下。補充一點:
valmat[valmat==0]<- NA
apply(valmat,2, median, na.rm=T)
[1] 3.0 4.0 2.0 3.5 1.0
而且我敢肯定有「建築」 valmat
比這更清潔的方式,但最終的結果是「過濾器矩陣」任何你想要的功能應用於。
如果你添加一個玩具數據集,這將有助於提高興趣。另請參閱[這個問題](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –
由於每個觀察的「時間戳」基本上來自您的描述,隨機的,沒有先驗的方式來確定哪些觀察值適合給定的窗口。也就是說,我想知道使用'outer()'是否具有合適的時間寬度功能可能至少會爲您創建一套完整的窗口樣本集。我必須走出去玩那個。 –