2012-08-15 13 views
11

मुझे नीचे दिए गए उदाहरण से 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's :6097 
+0

क्या आपने 'na.omit' की कोशिश की है? – seancarmody

+0

हां, 'सारांश (as.data.frame (आर, na.omit = टी))' कहता है कि 60 9 7 'एनए' है। – ils

+0

स्टैक ओवरव्लो में आपका स्वागत है। [पुनरुत्पादित उदाहरण] के लिए +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 के लिए काम नहीं कर रहा है (यानी पुन: वर्गीकरण (आर, cbind (NaN, NA))) – kennyB

संबंधित मुद्दे