วิธีแก้ไขใน r: ระดับปัจจัยไม่ถูกต้อง สร้าง na แล้ว


ข้อความเตือนที่คุณอาจพบเมื่อใช้ R คือ:

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

คำเตือนนี้เกิดขึ้นเมื่อคุณพยายามเพิ่มค่าให้กับตัวแปรปัจจัยใน R ที่ไม่มีอยู่ในระดับที่กำหนดไว้

ตัวอย่างต่อไปนี้แสดงวิธีการตอบสนองต่อคำเตือนนี้ในทางปฏิบัติ

วิธีทำซ้ำคำเตือน

สมมติว่าเรามี data frame ต่อไปนี้ใน 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

เราจะเห็นว่าตัวแปร ทีม เป็นปัจจัยที่มี 2 ระดับ คือ “A” และ “B”

ตอนนี้ สมมติว่าเราพยายาม เพิ่มบรรทัดใหม่ ที่ส่วนท้ายของกรอบข้อมูลโดยใช้ค่า “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: การเปลี่ยนมีความยาวเป็นศูนย์

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

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