2012-06-19 28 views
1

我試圖計算R中光柵上移動的大多數值。柵格包中的聚焦函數僅提供平均值,最小值和最大值。我有一個具有3個值(1,2和3)的柵格,我希望在中心設置的3x3窗口中具有最豐富的值。計算R中的移動多數

我怎樣才能做到最有效的R?謝謝!

library(raster) 

# create data 
r <- raster(nrows = 120, ncol = 120, xmn=0) 
r[] <- sample(3, ncell(r), replace=TRUE) 

回答

4

你可以這樣做:

f <- function(x){ 
tab <- table(x) 
# I am using the first value here, maybe you want to use the mean, 
# if 2 or more values occur equally often. 
names(tab)[which.max(tab)][1] 
} 

r <- raster(nrows = 120, ncol = 120, xmn=0) 
r[] <- sample(3, ncell(r), replace=TRUE) 

r <- focal(r, w=3, f) 
+0

不錯的辦法。我在自制函數中使用'table'來計算整體模式值。當然,我現在無法找到該代碼:-( –

+0

謝謝你的幫助!完美的工作。 – CWohlfart

2

也許我有點晚,但它可以爲futurs讀者有用:

現在R中你可以找到大部分焦功能(模式),所以:

library(raster) 

# create data 
r <- raster(nrows = 120, ncol = 120, xmn=0) 
r[] <- sample(3, ncell(r), replace=TRUE) 

a<-focal(r, w=matrix(1,3,3), fun=modal) # 3x3 moving window 
plot(a) 

(注:請注意whenusing NA值 - 值得更好的合作nvert他們整數)

結果:

result from focal analysis