วิธีแก้ไขใน r: ไม่อนุญาตให้ใช้ 'row.names' ที่ซ้ำกัน


ข้อผิดพลาดที่คุณอาจพบใน R คือ:

 Error in read.table(file = file, header = header, sep = sep, quote = quote, : 
  duplicate 'row.names' are not allowed 

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อพยายามอ่านไฟล์ CSV ลงใน R โดยมีเครื่องหมายจุลภาคที่ท้ายทุกบรรทัดในไฟล์ ยกเว้น บรรทัดส่วนหัว

บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามีไฟล์ CSV ต่อไปนี้ชื่อ my_data.csv :

โปรดทราบว่ามีเครื่องหมายจุลภาคที่ท้ายทุกบรรทัดในไฟล์ ยกเว้น บรรทัดส่วนหัว

สมมติว่าเราพยายามนำเข้าไฟล์นี้ไปที่ R:

 #attempt to import CSV into data frame
df <- read. csv (' my_data.csv ')

Error in read.table(file = file, header = header, sep = sep, quote = quote, : 
  duplicate 'row.names' are not allowed

เราได้รับข้อผิดพลาดเนื่องจากมีเครื่องหมายจุลภาคที่ท้ายทุกบรรทัดในไฟล์ ยกเว้น บรรทัดส่วนหัว ทำให้ R คิดว่าคอลัมน์แรกของค่าคือชื่อบรรทัด

เนื่องจากสองแถวมีค่าข้อมูลเริ่มต้นเท่ากัน (4) R จึงคิดว่ามีชื่อแถวที่ซ้ำกัน

วิธีการแก้ไขข้อผิดพลาด

วิธีแก้ไขข้อผิดพลาดนี้คือใช้ row.names=NULL เมื่อนำเข้าไฟล์:

 #import CSV file into data frame
df <- read. csv (' my_data.csv ', row.names =NULL)

#view data frame
df

  row.names column1 column2 column3
1 4 5 7 NA
2 4 2 1 NA
3 7 9 0 NA

เราสามารถนำเข้าไฟล์ CSV ได้สำเร็จ แต่ชื่อคอลัมน์ไม่ถูกต้อง

เพื่อแก้ไขปัญหานี้ เราสามารถเปลี่ยนชื่อคอลัมน์แล้วลบคอลัมน์สุดท้าย:

 #modify column names
colnames(df) <- colnames(df)[2: ncol (df)]

#drop last column
df <- df[1:( ncol (df)-1)]

#view updated data frame
df

  column1 column2 column3
1 4 5 7
2 4 2 1
3 7 9 0

ขณะนี้กรอบข้อมูลอยู่ในรูปแบบที่ถูกต้อง

ที่เกี่ยวข้อง: วิธีใช้ฟังก์ชัน ncol ใน R

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

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

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