2012-08-15 13 views
11

Necesito reemplazar el NA en el objeto ráster (r) del ejemplo a continuación.Cómo reemplazar NA's en un objeto ráster

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

También probé para eliminar estas estas (y colocar el resultado en un data.frame), pero fue en vano.

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

¿Has probado 'na.omit'? – seancarmody

+0

Sí, 'summary (as.data.frame (r, na.omit = T))' dice que hay 6097 'NA''s. – ils

+0

Bienvenido a StackOverflow. +1 para [ejemplo reproducible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Andrie

Respuesta

12

no estoy seguro de que tiene sentido para eliminar NA valores de un objeto raster, pero se puede sustituir fácilmente.

Por ejemplo:

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

enter image description here


Si realmente desea, puede extraer los valores de mapa de bits en un vector y luego retire los NA valores. (. Aunque, ya que se pierde la información espacial, no puedo ver cómo esto puede ser útil)

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

Un enfoque seguro más memoria (para archivos de gran tamaño) sería el uso de reclasificación:

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

+1 para el enfoque de memoria eficiente! – ils

+0

Esto no parece funcionar para NaN (es decir, reclasificar (r, cbind (NaN, NA))) – kennyB

Cuestiones relacionadas