R Language
लापता मूल्य
खोज…
परिचय
जब हम मूल्य एक चर लेता है पता नहीं है, हम कहते हैं अपने मूल्य याद आ रही है, ने संकेत दिया NA
।
टिप्पणियों
अनुपलब्ध मान का प्रतिनिधित्व चिन्ह NA
(उपलब्ध नहीं) द्वारा किया जाता है। असंभव मान (जैसे, sqrt(-1)
परिणामस्वरूप) प्रतीक NaN
(संख्या नहीं) द्वारा दर्शाए गए हैं।
लापता डेटा की जांच
anyNA
रिपोर्ट करता है कि क्या कोई लापता मान मौजूद है; जबकि is.na
रिपोर्ट के मान गायब हैं
vec <- c(1, 2, 3, NA, 5)
anyNA(vec)
# [1] TRUE
is.na(vec)
# [1] FALSE FALSE FALSE TRUE FALSE
ìs.na
एक तार्किक वेक्टर देता है जो अंकगणित संचालन (FALSE = 0, TRUE = 1 के साथ) के तहत पूर्णांक मानों के लिए बाध्य है। हम इसका उपयोग यह पता लगाने के लिए कर सकते हैं कि कितने लापता मूल्य हैं:
sum(is.na(vec))
# [1] 1
इस दृष्टिकोण का विस्तार करते हुए, हम प्रति कॉलम NAs की गणना करने के लिए एक डेटा फ्रेम पर colSums
और is.na
उपयोग कर सकते हैं:
colSums(is.na(airquality))
# Ozone Solar.R Wind Temp Month Day
# 37 7 0 0 0 0
नानीर पैकेज (वर्तमान में जीथब लेकिन क्रान पर नहीं) लापता मूल्यों की खोज के लिए और उपकरण प्रदान करता है।
एनए मूल्यों के साथ डेटा पढ़ना और लिखना
पढ़ने के साथ सारणीबद्ध डेटासेट read.*
आर, स्वचालित रूप से "NA"
जैसे दिखने वाले लापता मानों की तलाश करता है। हालांकि, लापता मान हमेशा NA
द्वारा प्रतिनिधित्व नहीं किया जाता है। कभी-कभी एक डॉट ( .
), एक हाइफ़न ( -
) या एक चरित्र-मूल्य (जैसे: empty
) इंगित करता है कि एक मान NA
। na.strings
पैरामीटर read.*
फ़ंक्शन का उपयोग R को यह बताने के लिए किया जा सकता है कि कौन से प्रतीकों / वर्णों को NA
मान के रूप में माना जाना चाहिए:
read.csv("name_of_csv_file.csv", na.strings = "-")
यह भी संकेत करना संभव है कि एक से अधिक प्रतीकों को NA
रूप में पढ़ा जाना चाहिए:
read.csv('missing.csv', na.strings = c('.','-'))
इसी तरह, NA
s का उपयोग करके अनुकूलित तार के साथ लिखा जा सकता है na
करने के लिए तर्क write.csv
। टेबल पढ़ने और लिखने के अन्य साधनों के समान विकल्प हैं।
विभिन्न वर्गों के NA का उपयोग करना
NA
प्रतीक एक logical
लापता मान के लिए है:
class(NA)
#[1] "logical"
यह सुविधाजनक है, क्योंकि यह आसानी से अन्य परमाणु वेक्टर प्रकारों के लिए मजबूर किया जा सकता है, और इसलिए आमतौर पर केवल NA
आपको आवश्यकता होगी:
x <- c(1, NA, 1)
class(x[2])
#[1] "numeric"
यदि आपको किसी अन्य प्रकार के एकल NA
मान की आवश्यकता है, तो NA_character_
, NA_integer_
, NA_real_
या NA_complex_
। फैंसी वर्गों के लापता मूल्यों के लिए, NA_integer_ के साथ NA_integer_
काम करता है; उदाहरण के लिए, एक लापता-मूल्य प्राप्त करने की तारीख:
class(Sys.Date()[NA_integer_])
# [1] "Date"
TRUE / FALSE और / या NA
NA
एक तार्किक प्रकार और एक साथ एक तार्किक ऑपरेटर है NA
वापस आ जाएगी NA
यदि परिणाम अस्पष्ट है। नीचे, NA OR TRUE
करने के लिए मूल्यांकन करता है TRUE
क्योंकि करने के लिए कम से कम एक पक्ष का मूल्यांकन TRUE
, फिर भी NA OR FALSE
रिटर्न NA
क्योंकि हम नहीं पता कि NA
हो गया होता TRUE
या FALSE
NA | TRUE
# [1] TRUE
# TRUE | TRUE is TRUE and FALSE | TRUE is also TRUE.
NA | FALSE
# [1] NA
# TRUE | FALSE is TRUE but FALSE | FALSE is FALSE.
NA & TRUE
# [1] NA
# TRUE & TRUE is TRUE but FALSE & TRUE is FALSE.
NA & FALSE
# [1] FALSE
# TRUE & FALSE is FALSE and FALSE & FALSE is also FALSE.
अगर आप NA
कुछ कॉलम के आधार पर डेटा सेट को सब्मिट करना चाहते हैं तो ये गुण मददगार हैं।
df <- data.frame(v1=0:9,
v2=c(rep(1:2, each=4), NA, NA),
v3=c(NA, letters[2:10]))
df[df$v2 == 1 & !is.na(df$v2), ]
# v1 v2 v3
#1 0 1 <NA>
#2 1 1 b
#3 2 1 c
#4 3 1 d
df[df$v2 == 1, ]
v1 v2 v3
#1 0 1 <NA>
#2 1 1 b
#3 2 1 c
#4 3 1 d
#NA NA NA <NA>
#NA.1 NA NA <NA>
गुम मूल्यों को स्वीकार करना या बदलना
याद आ रहे मूल्यों को फिर से पाना
नियमित रूप से, लापता डेटा को डेटासेट में NA
रूप में कोडित नहीं किया जाता है। उदाहरण के लिए SPSS में, मान 99
अक्सर गायब मानों का प्रतिनिधित्व किया जाता है।
num.vec <- c(1, 2, 3, 99, 5)
num.vec
## [1] 1 2 3 99 5
सब्सट्रेट का उपयोग करके NA को सीधे असाइन करना संभव है
num.vec[num.vec == 99] <- NA
हालाँकि, पसंदीदा विधि का उपयोग is.na<-
। नीचे is.na<-
नीचे के रूप में। मदद फ़ाइल ( ?is.na
) बताती है:
is.na<-
को सेट करने के लिए एक सुरक्षित तरीका प्रदान कर सकता है। उदाहरण के लिए, यह कारकों के लिए अलग तरह से व्यवहार करता है।
is.na(num.vec) <- num.vec == 99
दोनों विधियां लौटती हैं
num.vec
## [1] 1 2 3 NA 5
गायब मूल्यों को दूर करना
एक वेक्टर से कई मायनों में लापता मानों को हटाया जा सकता है:
num.vec[!is.na(num.vec)]
num.vec[complete.cases(num.vec)]
na.omit(num.vec)
## [1] 1 2 3 5
गणना से गायब मूल्यों को छोड़कर
गायब मानों के साथ वैक्टर पर अंकगणितीय कार्यों का उपयोग करते समय, एक लापता मान वापस किया जाएगा:
mean(num.vec) # returns: [1] NA
na.rm
पैरामीटर NA
मानों को गणना से बाहर करने के लिए फ़ंक्शन को बताता है:
mean(num.vec, na.rm = TRUE) # returns: [1] 2.75
# an alternative to using 'na.rm = TRUE':
mean(num.vec[!is.na(num.vec)]) # returns: [1] 2.75
कुछ आर फ़ंक्शंस, जैसे lm
, में एक na.action
पैरामीटर है। इसके लिए डिफ़ॉल्ट-मान na.omit
, लेकिन options(na.action = 'na.exclude')
साथ options(na.action = 'na.exclude')
R के डिफ़ॉल्ट व्यवहार को बदला जा सकता है।
यदि डिफ़ॉल्ट व्यवहार को बदलना आवश्यक नहीं है, लेकिन एक विशिष्ट स्थिति के लिए एक और na.action
की आवश्यकता है, तो na.action
पैरामीटर को फ़ंक्शन कॉल में शामिल करने की आवश्यकता है, जैसे:
lm(y2 ~ y1, data = anscombe, na.action = 'na.exclude')