2012-08-15 18 views
11

Aşağıdaki örnekte, raster nesnesindeki (r) NA'leri değiştirmem gerekiyor. NA'lar bir raster nesnesinde nasıl değiştirilir

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

Ben de bu bu (ve bir data.frame sonucu yerleştirmek), ama boşuna ortadan kaldırmaya çalıştı.

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' denediniz mi? – seancarmody

+0

Evet, özet (as.data.frame (r, na.omit = T)) 'nin 6097' NA' olduğunu söylüyor. – ils

+0

StackOverflow'a hoş geldiniz. [Tekrarlanabilir örnek] için +1 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Andrie

cevap

12

Ben bir raster nesneden NA değerleri kaldırmak için mantıklı emin değilim, ancak kolayca değiştirebilirsiniz. Örneğin

:

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

enter image description here


Eğer gerçekten bir vektör haline raster değerlerini çıkarmak ve sonra NA değerlerini kaldırabilirsiniz istiyorsanız

. (. Eğer uzamsal bilgiyi kaybetmek beri, bu yararlı olabilir nasıl göremez rağmen)

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

(büyük dosyalar için) Daha bellek güvenli yaklaşım kullanmak olacaktır reclassify:

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

+1! – ils

+0

Bu, NaN (örneğin, yeniden sınıflandırma (r, cbind (NaN, NA))) için çalışmıyor gibi görünüyor. – kennyB