Как заменить NA в растровом объекте
Мне нужно заменить NA
в растровом объекте (r
) из приведенного ниже примера.
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 :6097
Ответы
Ответ 1
Я не уверен, что имеет смысл удалить значения NA
из объекта raster
, но вы можете легко его заменить.
Например:
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
Ответ 2
Более безопасный для хранения данных подход (для больших файлов) должен был бы использовать реклассификацию:
library(raster)
filename <- system.file("external/test.grd", package="raster")
r <- raster(filename)
rna <- reclassify(r, cbind(NA, 250))