كيفية إصلاح الخطأ في r: الأسماء لا تتطابق مع الأسماء السابقة


الخطأ الشائع الذي قد تواجهه في R هو:

 Error in match.names(clabs, names(xi)): 
  names do not match previous names

يحدث هذا الخطأ عند محاولة استخدام الدالة rbind() لربط إطاري بيانات، ولكن أسماء الأعمدة الخاصة بإطاري البيانات غير متطابقة.

يشارك هذا البرنامج التعليمي الخطوات الدقيقة التي يمكنك استخدامها لحل هذا الخطأ.

مثال: كيفية إصلاح “الأسماء لا تتطابق مع الأسماء السابقة”

لنفترض أن لدينا إطاري البيانات التاليين في R:

 #create and view first data frame
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                  var2=c(7, 7, 8, 3, 2))

df1

  var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2

#create and view first second frame 
df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

df2

  var3 var4
1 3 1
2 3 1
3 6 2
4 6 8
5 8 9

إذا حاولنا استخدام الدالة rbind() لربط إطاري البيانات هذين، فسوف نحصل على خطأ:

 #attempt to row bind the two data frames
rbind(df1, df2)

Error in match.names(clabs, names(xi)): 
  names do not match previous names

لقد حصلنا على هذا الخطأ لأن أسماء الأعمدة لإطاري البيانات غير متطابقة.

يحتوي إطار البيانات الأول على أسماء الأعمدة التالية:

  • فار1
  • var2

ويحتوي إطار البيانات الثاني على أسماء الأعمدة التالية:

  • فار3
  • فار4

يمكننا أيضًا استخدام الكود التالي للتحقق مما إذا كانت أسماء الأعمدة هي نفسها بين إطاري البيانات:

 #check if column names are identical between two data frames
identical(names(df1), names(df2))

[1] FALSE

يمكننا أن نرى أن أسماء الأعمدة ليست هي نفسها.

لإصلاح هذا الخطأ، يمكننا إعادة تسمية أسماء الأعمدة يدويًا في إطار البيانات الثاني لتتناسب مع أسماء الأعمدة في إطار البيانات الأول:

 #define two data frames
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                  var2=c(7, 7, 8, 3, 2))

df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

#rename second data frame columns
names(df2) <- c(' var1 ', ' var2 ')

#row bind the two data frames
rbind(df1, df2)

   var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2
6 3 1
7 3 1
8 6 2
9 6 8
10 8 9

يمكننا أن نرى أن rbind() نجح في ربط إطاري البيانات منذ تطابق أسماء الأعمدة.

هناك طريقة أخرى لإصلاح هذا الخطأ وهي استخدام وظيفة الأسماء () لتعيين أسماء الأعمدة تلقائيًا من إطار البيانات الأول إلى إطار البيانات الثاني:

 #define two data frames
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                 var2=c(7, 7, 8, 3, 2))

df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

#rename second data frame columns
names(df2) <- names(df1)

#row bind the two data frames
rbind(df1, df2)

   var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2
6 3 1
7 3 1
8 6 2
9 6 8
10 8 9

مرة أخرى، rbind() قادر على ربط إطاري البيانات بنجاح لأنهما يشتركان في نفس أسماء الأعمدة.

مصادر إضافية

كيفية استخدام rbind في R (مع أمثلة)
كيفية استخدام cbind في R (مع أمثلة)
كيفية إضافة صفوف إلى إطار البيانات في R

Add a Comment

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