วิธีรวม na ไว้ในคำสั่ง ifelse ใน r


บ่อยครั้งที่คุณอาจต้องการใช้คำสั่ง ifelse ใน R เพื่อสร้างคอลัมน์ใหม่ใน data frame ซึ่งค่าจะขึ้นอยู่กับค่าของคอลัมน์ที่มีอยู่

เมื่อต้องการทำเช่นนี้ คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้:

 df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')

อย่างไรก็ตาม หากมีค่า NA ในคอลัมน์ ค่าในคอลัมน์ใหม่จะเป็น NA โดยอัตโนมัติ

เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถใช้ฟังก์ชัน !is.na() ได้ดังนี้:

 df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: รวม NA ในคำสั่ง ifelse ใน R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D', 'E', 'F'),
                 conf=c('West', NA, 'West', 'East', 'East', 'East'),
                 points=c(30, 35, 11, 18, 14, NA))

#view data frame
df

  player conf points
1 A West 30
2 B <NA> 35
3 C West 11
4 D East 18
5 E East 14
6 F East NA

ตอนนี้ สมมติว่าเราพยายามสร้างคอลัมน์ใหม่ที่เรียกว่า คลาส ซึ่งรับค่าต่อไปนี้:

  • ‘West_Player’ ถ้า conf เท่ากับ ‘West’
  • ‘อื่นๆ’ ถ้า conf ไม่เท่ากับ ‘ตะวันตก’

รหัสต่อไปนี้แสดงวิธีการทำเช่นนี้:

 #create new column called 'class'
df$class <- ifelse(df$conf == ' West ', ' West_Player ', ' Other ')

#view updated data frame
df

  player conf points class
1 A West 30 West_Player
2 B <NA> 35 <NA>
3 C West 11 West_Player
4 D East 18 Other
5 E East 14 Other
6 F East NA Other

โปรดทราบว่าค่า คลาส ในแถวที่ 2 เท่ากับ NA เนื่องจากค่าที่สอดคล้องกันในคอลัมน์ conf เท่ากับ NA

เพื่อหลีกเลี่ยงปัญหานี้ เราสามารถใช้ฟังก์ชัน !is.na() ได้ดังนี้:

 #create new column called 'class'
df$class <- ifelse(df$conf == ' West ' & !is. na (df$conf), ' West_Player ', ' Other ')

#view updated data frame
df

  player conf points class
1 A West 30 West_Player
2 B <NA> 35 Other
3 C West 11 West_Player
4 D East 18 Other
5 E East 14 Other
6 F East NA Other

โปรดทราบว่าค่า คลาส ในบรรทัดที่ 2 เท่ากับ “อื่นๆ” แทนที่จะเป็น NA

เมื่อใช้ฟังก์ชัน !is.na() เราระบุว่าค่าในคอลัมน์ conf จะต้องเท่ากับ ‘West’ และ ไม่เท่ากับ NA เพื่อให้ค่าในคอลัมน์ คลาส ใหม่เป็น ‘West_Player’

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีเขียนคำสั่ง If Else แบบซ้อนใน R
วิธีเขียนคำสั่ง case ใน R
วิธีเพิ่มหลายคอลัมน์ใน data frame ใน R

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

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