วิธีกรอง data frame โดยไม่สูญเสียสาย na โดยใช้ dplyr


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อกรองเฟรมข้อมูลโดยไม่สูญเสียแถวที่มีค่า NA โดยใช้ฟังก์ชันในแพ็คเกจ dplyr และ Tidyr ใน R:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

โปรดทราบว่าสูตรนี้ใช้ฟังก์ชัน แทนที่_na() จากแพ็คเกจ Tidyr เพื่อแปลงค่า NA เป็น TRUE เพื่อไม่ให้ถูกลบออกจากกรอบข้อมูลระหว่างการกรอง

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

ตัวอย่าง: กรองเฟรมข้อมูลโดยไม่สูญเสียแถว NA โดยใช้ dplyr

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

 #create data frame
df <- data. frame (team=c('A', NA, 'A', 'B', NA, 'C', 'C', 'C'),
                 points=c(18, 13, 19, 14, 24, 21, 20, 28),
                 assists=c(5, 7, 17, 9, 12, 9, 5, 12))

#view data frame
df

  team points assists
1 to 18 5
2 <NA> 13 7
3 A 19 17
4 B 14 9
5 <NA> 24 12
6 C 21 9
7 C 20 5
8 C 28 12

ตอนนี้ สมมติว่าเราใช้ฟังก์ชัน filter() จากแพ็คเกจ dplyr เพื่อกรอง data frame เพื่อให้มีเฉพาะแถวที่มีค่าในคอลัมน์ ทีม ไม่เท่ากับ A:

 library (dplyr)

#filter for rows where team is not equal to 'A'
df <- df %>% filter(team != ' A ')

#view updated data frame
df

  team points assists
1 B 14 9
2 C 21 9
3 C 20 5
4 C 28 12

โปรดทราบว่าทุกแถวที่มีค่าในคอลัมน์ ทีม เท่ากับ A ได้ถูกกรองแล้ว รวมถึงแถวที่มีค่าในคอลัมน์ ทีม เท่ากับ NA

หากเราต้องการกรองแถวที่ ทีม เท่ากับ A และ เก็บ แถวที่มีค่า NA เราสามารถใช้ไวยากรณ์ต่อไปนี้:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

#view updated data frame
df

  team points assists
1 <NA> 13 7
2 B 14 9
3 <NA> 24 12
4 C 21 9
5 C 20 5
6 C 28 12

โปรดทราบว่าทุกแถวที่มีค่าในคอลัมน์ ทีม เท่ากับ A จะถูกกรอง แต่เราเก็บแถวโดยที่ค่าในคอลัมน์ ทีม เท่ากับ NA

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน Tidyr replacement_na() ได้ที่นี่

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันทั่วไปอื่น ๆ ใน dplyr:

วิธีกรองตามหมายเลขแถวโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr
วิธีใช้ตัวกรอง “ไม่รวม” ใน dplyr

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

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