2012-08-15 11 views
11

以下の例のラスターオブジェクト()のNAを置き換える必要があります。ラスターオブジェクトのNAを置き換える方法

library(raster) 
filename <- system.file("external/test.grd", package="raster") 
r <- raster(filename) 

私はまた、これらのこれらを削除(およびdata.frameに結果を配置)が、無駄にしてみました。

dfr <- as.data.frame(r, na.rm=T) 
summary(dfr) 
# test  
# Min. : 128.4 
# 1st Qu.: 293.2 
# Median : 371.4 
# Mean : 423.2 
# 3rd Qu.: 499.8 
# Max. :1805.8 
# NA's :6097 
+0

あなたは 'na.omit'を試しましたか? – seancarmody

+0

はい、 'summary(as.data.frame(r、na.omit = T))'は、6097個の「NA」があると言っています。 – ils

+0

ようこそStackOverflowへ。 +1 [再生可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – Andrie

答えて

12

私はそれがrasterオブジェクトからNA値を削除することに意味がわからないんだけど、あなたは簡単にそれを置き換えることができます。例えば

oldpar <- par(mfrow=c(1, 2)) 
plot(r) 
r[is.na(r)] <- 250 
plot(r) 
par(oldpar) 

enter image description here


あなたは本当に、あなたがベクターにラスタ値を抽出してNA値を削除することができますしたい場合。 (あなたが空間情報を失うことから、私はこれが役立つことができるか見ることができない、けれども。)

r <- raster(filename) 

r <- values(r) 
head(r) 
[1] NA NA NA NA NA NA 

head(na.omit(r)) 
[1] 633.686 712.545 654.162 604.442 857.256 755.506 
21

(大きなファイルのために)より多くのメモリ安全なアプローチは、再分類を使用することです:

library(raster) 
filename <- system.file("external/test.grd", package="raster") 
r <- raster(filename) 
rna <- reclassify(r, cbind(NA, 250)) 
+2

+1メモリ効率的なアプローチ! – ils

+0

これはNaNでは機能しないようです(すなわち、reclassify(r、cbind(NaN、NA))) – kennyB

関連する問題