كيفية الإصلاح في r: مستوى العامل غير صالح، تم إنشاء na


رسالة التحذير التي قد تواجهها عند استخدام R هي:

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

يحدث هذا التحذير عند محاولة إضافة قيمة إلى متغير عامل في R غير موجود بالفعل كمستوى محدد.

يوضح المثال التالي كيفية الاستجابة لهذا التحذير عمليًا.

كيفية إعادة إنتاج التحذير

لنفترض أن لدينا إطار البيانات التالي في 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

نرى أن متغير الفريق هو عامل ذو مستويين: “أ” و”ب”

لنفترض الآن أننا نحاول إضافة سطر جديد في نهاية إطار البيانات باستخدام القيمة “C” للفريق :

 #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

نتلقى رسالة تحذير لأن القيمة “C” غير موجودة بالفعل كمستوى عامل لمتغير الفريق .

من المهم ملاحظة أن هذه مجرد رسالة تحذير وأن R سيظل يضيف السطر الجديد إلى نهاية إطار البيانات، ولكنه سيستخدم قيمة NA بدلاً من ‘C’:

 #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

لاحظ أننا نجحنا في إضافة سطر جديد إلى نهاية إطار البيانات بنجاح وتجنب ظهور رسالة تحذير.

يمكننا أيضًا التحقق من إضافة القيمة “C” كمستوى عامل إلى متغير الفريق :

 #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" ...

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح في R: تتضمن الوسائط عددًا مختلفًا من الأسطر
كيفية الإصلاح في R: خطأ في اختيار الوسائط غير المستخدمة
كيفية الإصلاح في R: الاستبدال له طول صفر

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *