आर में कैसे ठीक करें: अमान्य कारक स्तर, एनए उत्पन्न


R का उपयोग करते समय आपके सामने एक चेतावनी संदेश आ सकता है:

 Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

यह चेतावनी तब होती है जब आप आर में एक कारक चर में एक मान जोड़ने का प्रयास करते हैं जो पहले से ही परिभाषित स्तर के रूप में मौजूद नहीं है।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस चेतावनी का कैसे जवाब देना है।

चेतावनी को पुन: कैसे प्रस्तुत करें

मान लीजिए कि हमारे पास R में निम्नलिखित डेटा फ़्रेम है:

 #create data frame
df <- data. frame (team=factor(c('A', 'A', 'B', 'B', 'B')),
                 dots=c(99, 90, 86, 88, 95))

#view data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95

#view structure of data frame
str(df)

'data.frame': 5 obs. of 2 variables:
 $ team: Factor w/ 2 levels "A","B": 1 1 2 2 2
 $ points: num 99 90 86 88 95

हम देखते हैं कि टीम चर दो स्तरों वाला एक कारक है: “ए” और “बी”

अब मान लीजिए कि हम टीम के लिए “सी” मान का उपयोग करके डेटा फ्रेम के अंत में एक नई लाइन जोड़ने का प्रयास करते हैं:

 #add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

हमें एक चेतावनी संदेश प्राप्त होता है क्योंकि मान “सी” टीम चर के लिए कारक स्तर के रूप में पहले से मौजूद नहीं है।

यह ध्यान रखना महत्वपूर्ण है कि यह सिर्फ एक चेतावनी संदेश है और आर अभी भी डेटा फ्रेम के अंत में नई लाइन जोड़ देगा, लेकिन यह ‘सी’ के बजाय एनए मान का उपयोग करेगा:

 #view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 NA 100

चेतावनी से कैसे बचें

अमान्य कारक स्तर की चेतावनी से बचने के लिए, हमें पहले कारक चर को एक वर्ण चर में परिवर्तित करने की आवश्यकता है, और फिर हम नई लाइन जोड़ने के बाद इसे वापस एक कारक चर में परिवर्तित कर सकते हैं:

 #convert team variable to character
df$team <- as. character (df$team)

#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

#convert team variable back to factor
df$team <- as. factor (df$team)

#view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 C 100

ध्यान दें कि हम डेटा फ़्रेम के अंत में सफलतापूर्वक एक नई पंक्ति जोड़ने और चेतावनी संदेश से बचने का प्रबंधन करते हैं।

हम यह भी सत्यापित कर सकते हैं कि मान “सी” को टीम चर में कारक स्तर के रूप में जोड़ा गया था:

 #view structure of updated data frame
str(df)

'data.frame': 6 obs. of 2 variables:
 $ team: Factor w/ 3 levels "A","B","C": 1 1 2 2 2 3
 $points: chr "99" "90" "86" "88" ...

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य त्रुटियों को कैसे ठीक किया जाए:

आर में कैसे ठीक करें: तर्कों में अलग-अलग संख्या में लाइनें शामिल होती हैं
आर में कैसे ठीक करें: अप्रयुक्त तर्कों को चुनने में त्रुटि
आर में मरम्मत कैसे करें: प्रतिस्थापन की लंबाई शून्य है

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *