วิธีแก้ไขข้อผิดพลาดใน 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

เราได้รับข้อผิดพลาดนี้เนื่องจากชื่อคอลัมน์ของเฟรมข้อมูลทั้งสองไม่ตรงกัน

กรอบข้อมูลแรกมีชื่อคอลัมน์ต่อไปนี้:

  • var1
  • var2

และกรอบข้อมูลที่สองประกอบด้วยชื่อคอลัมน์ต่อไปนี้:

  • var3
  • var4

เรายังสามารถใช้โค้ดต่อไปนี้เพื่อตรวจสอบว่าชื่อคอลัมน์เหมือนกันระหว่างสองเฟรมข้อมูลหรือไม่:

 #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 (พร้อมตัวอย่าง)
วิธีเพิ่มแถวใน data frame ใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *