R Academy · पाठ

NA मान हटाना और बदलना

na.omit(), complete.cases() और मैन्युअल प्रतिस्थापन रणनीतियाँ लागू करें।

पाठ 3, कुल 4 में से13 चरण

NA मान हटाना और बदलना, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

NA प्रबंधन की रणनीतियाँ

लुप्त मानों के प्रबंधन की तीन मुख्य रणनीतियाँ हैं: उन्हें हटाना, किसी स्थिर मान से बदलना, या सांख्यिकीय अनुमान का उपयोग करके उनका आरोपण करना। सही तरीका आपके डेटा और विश्लेषण के उद्देश्यों पर निर्भर करता है।

data_vals <- c(88, NA, 72, NA, 91, 65, NA, 78)
cat('Original data:', data_vals, '
')
cat('NA count:', sum(is.na(data_vals)), '
')

# Strategy 1: remove
cat('After removal:', data_vals[!is.na(data_vals)], '
')
# Strategy 2: replace with 0
replaced <- data_vals; replaced[is.na(replaced)] <- 0
cat('Replaced with 0:', replaced, '
')

x[!is.na(x)] से NA हटाना

वेक्टर से NA हटाने का सबसे सीधा तरीका तार्किक उपसमुच्चयन है: x[!is.na(x)]। यह केवल उन तत्वों को रखता है जहाँ is.na(x) का मान FALSE होता है (अर्थात उपस्थित मान)।

response_times <- c(1.2, NA, 0.9, 1.5, NA, 1.1, 0.8, NA, 1.3)
cat('With NAs:    ', response_times, '
')
cat('Length:', length(response_times), '
')

clean_times <- response_times[!is.na(response_times)]
cat('Without NAs: ', clean_times, '
')
cat('Length:', length(clean_times), '
')
cat('Mean after removal:', round(mean(clean_times), 3), '
')

वेक्टर के लिए na.omit()

na.omit(x) वेक्टर से NA मान हटा देता है। यह x[!is.na(x)] के समतुल्य है, लेकिन हटाए गए NA के स्थानों को 'na.action' नामक विशेषता में संग्रहीत भी करता है।

scores <- c(88, NA, 72, NA, 91, 65, NA, 78)
clean_scores <- na.omit(scores)
cat('Original:', scores, '
')
cat('Cleaned: ', as.numeric(clean_scores), '
')

# na.omit records which positions were removed
removed_at <- attr(clean_scores, 'na.action')
cat('NAs were at positions:', removed_at, '
')

डेटा फ़्रेम के लिए na.omit()

डेटा फ़्रेम पर लागू करने पर na.omit(df) ऐसी प्रत्येक पंक्ति हटा देता है जिसमें कम-से-कम एक NA हो। इसे सूची-आधारित विलोपन कहते हैं — पूरा प्रेक्षण हटा दिया जाता है।

df <- data.frame(
  name   = c('Alice', 'Bob', 'Carol', 'Dave', 'Eve'),
  age    = c(28, NA, 32, 45, 29),
  salary = c(55000, 72000, NA, 90000, 61000)
)
cat('Original rows:', nrow(df), '
')
df_clean <- na.omit(df)
cat('After na.omit rows:', nrow(df_clean), '
')
print(df_clean)

complete.cases() — पंक्ति-वार पूर्णता

complete.cases(df) एक तार्किक वेक्टर लौटाता है, जिसमें उन पंक्तियों के लिए TRUE होता है जिनमें कोई लुप्त मान नहीं है। इसका उपयोग पूर्ण पंक्तियों को फ़िल्टर करने या अपूर्ण पंक्तियों की पहचान करने के लिए करें।

df <- data.frame(
  id  = 1:5,
  x   = c(1, NA, 3, 4, NA),
  y   = c(NA, 2, 3, NA, 5)
)
cc <- complete.cases(df)
cat('Complete cases (T/F):', cc, '
')
cat('Complete rows:
')
print(df[cc, ])
cat('Number complete:', sum(cc), '
')

NA को स्थिर मान से बदलना

NA को किसी विशिष्ट मान से बदलने के लिए तार्किक असाइनमेंट का उपयोग करें: x[is.na(x)] <- value। सामान्य प्रतिस्थापनों में गिनती के लिए 0, सतत डेटा के लिए माध्य/मध्यिका, या factors के लिए श्रेणी लेबल शामिल हैं।

# Replace with 0
counts <- c(5, NA, 3, NA, 8, 1, NA, 4)
counts_filled <- counts
counts_filled[is.na(counts_filled)] <- 0
cat('Original:', counts, '
')
cat('Filled:  ', counts_filled, '
')

# Replace with mean of present values
mean_val <- mean(counts, na.rm = TRUE)
counts_mean <- counts
counts_mean[is.na(counts_mean)] <- mean_val
cat('Mean-filled:', round(counts_mean, 1), '
')

replace() — फ़ंक्शन-आधारित प्रतिस्थापन

replace(x, list, values), x की एक संशोधित प्रति लौटाता है, जिसमें list में दिए गए स्थानों के तत्वों को values से बदल दिया जाता है। यह प्रतिस्थापन का फ़ंक्शन-आधारित (मूल को बदले बिना) तरीका है।

temps <- c(22.1, NA, 19.8, NA, 25.1)
cat('Original:', temps, '
')

# Replace NAs with the median
median_temp <- median(temps, na.rm = TRUE)
filled_temps <- replace(temps, is.na(temps), median_temp)
cat('Filled:  ', filled_temps, '
')
cat('Original unchanged:', temps, '
')  # original not modified

आगे भरना (अंतिम प्रेक्षण को आगे ले जाना)

आरोपण की एक सामान्य रणनीति आगे भरना (LOCF) है: प्रत्येक NA को अंतिम ज्ञात मान से बदलना। इसका उपयोग समय-श्रृंखला डेटा में किया जाता है, जहाँ माप को नए मान से अपडेट होने तक आगे ले जाया जाता है।

# Manual forward-fill
readings <- c(10, NA, NA, 13, NA, 15, NA, NA, 18)
filled <- readings
for (i in seq_along(filled)) {
  if (is.na(filled[i]) && i > 1) {
    filled[i] <- filled[i - 1]
  }
}
cat('Original:     ', readings, '
')
cat('Forward-filled:', filled, '
')

कैरेक्टर वेक्टर में NA बदलना

कैरेक्टर वेक्टर के लिए भी यही तकनीकें काम करती हैं। श्रेणीबद्ध डेटा के विश्लेषण में स्ट्रिंग के NA को 'Unknown' या 'Missing' जैसे लेबल से बदलना सामान्य है।

categories <- c('A', NA, 'B', 'A', NA, 'C', NA, 'B')
cat('Original:', categories, '
')

# Replace with 'Unknown'
filled_cat <- replace(categories, is.na(categories), 'Unknown')
cat('Filled:  ', filled_cat, '
')

# Count each category
cat('Table:
')
print(table(filled_cat))

सशर्त प्रतिस्थापन रणनीति

कभी-कभी आप किसी दूसरे कॉलम के मान के आधार पर अलग-अलग प्रतिस्थापन मान रखना चाहते हैं। लक्षित प्रतिस्थापन लागू करने के लिए शर्तों के साथ अनुक्रमण का उपयोग करें।

# Scores: replace NA with group mean
group   <- c('A', 'A', 'B', 'B', 'A', 'B')
scores  <- c(85, NA, 72, NA, 90, 78)

mean_a <- mean(scores[group == 'A'], na.rm = TRUE)
mean_b <- mean(scores[group == 'B'], na.rm = TRUE)

imputed <- scores
imputed[is.na(imputed) & group == 'A'] <- mean_a
imputed[is.na(imputed) & group == 'B'] <- mean_b

cat('Original:', scores, '
')
cat('Imputed: ', imputed, '
')

NA हटाने की विधियों का सारांश

R में NA प्रबंधन के उपकरणों का सारांश:

  • x[!is.na(x)] — वेक्टर से NA हटाता है
  • na.omit(x) — NA हटाता है (स्थान भी दर्ज करता है)
  • na.omit(df) — डेटा फ़्रेम से अपूर्ण पंक्तियाँ हटाता है
  • complete.cases(df) — तार्किक वेक्टर: पूर्ण पंक्तियों के लिए TRUE
  • x[is.na(x)] <- val — NA को उसी स्थान पर बदलता है
  • replace(x, is.na(x), val) — फ़ंक्शन-आधारित प्रतिस्थापन (प्रति लौटाता है)
v <- c(5, NA, 8, NA, 3, 7)
cat('Remove:          ', v[!is.na(v)], '
')
cat('Replace with 0:  ', replace(v, is.na(v), 0), '
')
cat('Replace with mean:', replace(v, is.na(v), mean(v, na.rm=TRUE)), '
')

त्वरित जाँच

na.omit(c(1, NA, 3, NA, 5)) क्या लौटाता है?

पुनरावलोकन: NA हटाना और बदलना

बहुत अच्छा कार्य! इस पाठ की मुख्य बातें:

  • x[!is.na(x)] और na.omit(x) वेक्टर से NA हटाते हैं
  • na.omit(df) सूची-आधारित विलोपन करता है (NA वाली कोई भी पंक्ति हटा देता है)
  • complete.cases(df) उन पंक्तियों की पहचान करता है जिनमें कोई लुप्त मान नहीं है
  • x[is.na(x)] <- value NA को उसी स्थान पर बदलता है
  • replace(x, is.na(x), value) मूल को बदले बिना एक संशोधित प्रति लौटाता है
  • रणनीति का चुनाव डेटा के लुप्त होने के कारण और लुप्त डेटा की मात्रा के आधार पर करें
# Complete workflow: audit, then handle
data_raw <- c(82, NA, 75, NA, 91, 68, NA, 79)
cat('Missing:', sum(is.na(data_raw)), '/', length(data_raw), '
')

# Replace with median (robust to outliers)
imputed <- replace(data_raw, is.na(data_raw), median(data_raw, na.rm=TRUE))
cat('Before imputation mean:', round(mean(data_raw, na.rm=TRUE), 2), '
')
cat('After imputation mean: ', round(mean(imputed), 2), '
')
शुरुआत निःशुल्क

एआई शिक्षक के साथ R सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
43
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “NA मान हटाना और बदलना” पाठ निःशुल्क है?

हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “NA मान हटाना और बदलना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“NA मान हटाना और बदलना” में मैं क्या सीखूँगा?

na.omit(), complete.cases() और मैन्युअल प्रतिस्थापन रणनीतियाँ लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“NA मान हटाना और बदलना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. R में NA को समझना
  2. अनुपलब्ध मानों का पता लगाना और गिनना
  3. NA मान हटाना और बदलना
  4. गणनाओं और समुच्चयों में NA
← R Academy पर वापस जाएँ