วิธีดำเนินการล้างข้อมูลใน r (พร้อมตัวอย่าง)


การล้างข้อมูล หมายถึงกระบวนการแปลง ข้อมูลดิบ ให้เป็นข้อมูลที่เหมาะสมสำหรับการวิเคราะห์หรือการสร้างแบบจำลอง

ในกรณีส่วนใหญ่ การ “ล้าง” ชุดข้อมูลเกี่ยวข้องกับการจัดการกับค่าที่หายไปและข้อมูลที่ซ้ำกัน

ต่อไปนี้เป็นวิธีการทั่วไปในการ “ล้าง” ชุดข้อมูลใน R:

วิธีที่ 1: ลบแถวที่มีค่าหายไป

 library (dplyr)

#remove rows with any missing values
df %>% na. omit ()

วิธีที่ 2: แทนที่ค่าที่หายไปด้วยค่าอื่น

 library (dplyr)
library (tidyr)

#replace missing values in each numeric column with median value of column
df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))

วิธีที่ 3: ลบแถวที่ซ้ำกัน

 library (dplyr)

df %>% distinct(. keep_all = TRUE )

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'),
                 points=c(4, 4, NA, 8, 6, 12, 14, 86, 13, 8),
                 rebounds=c(9, 9, 7, 6, 8, NA, 9, 14, 12, 11),
                 assists=c(2, 2, NA, 7, 6, 6, 9, 10, NA, 14))

#view data frame
df

   team points rebound assists
1 to 4 9 2
2 to 4 9 2
3 B NA 7 NA
4 C 8 6 7
5 D 6 8 6
6 E 12 NA 6
7 F 14 9 9
8 G 86 14 10
9:13:12 NA
10 I 8 11 14

ตัวอย่างที่ 1: ลบแถวที่มีค่าหายไป

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

 library (dplyr)

#remove rows with missing values
new_df <- df %>% na. omit ()

#view new data frame
new_df

   team points rebound assists
1 to 4 9 2
2 to 4 9 2
4 C 8 6 7
5 D 6 8 6
7 F 14 9 9
8 G 86 14 10
10 I 8 11 14

โปรดทราบว่ากรอบข้อมูลใหม่ไม่มีแถวที่มีค่าขาดหายไป

ตัวอย่างที่ 2: แทนที่ค่าที่หายไปด้วยค่าอื่น

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแทนที่ค่าที่หายไปด้วยค่ามัธยฐานของแต่ละคอลัมน์:

 library (dplyr)
library (tidyr)

#replace missing values in each numeric column with median value of column
new_df <-df %>% mutate(across(where(is. numeric ),~replace_na(.,median(.,na. rm = TRUE )))) 

#view new data frame
new_df

   team points rebound assists
1 to 4 9 2.0
2 to 4 9 2.0
3 B 8 7 6.5
4 C 8 6 7.0
5 D 6 8 6.0
6 E 12 9 6.0
7 F 14 9 9.0
8 G 86 14 10.0
9:13 12 6.5
10 I 8 11 14.0

โปรดทราบว่าค่าที่หายไปในแต่ละคอลัมน์ตัวเลขจะถูกแทนที่ด้วยค่ามัธยฐานของคอลัมน์

โปรดทราบว่าคุณสามารถแทนที่ ค่ามัธยฐาน ในสูตรด้วย ค่าเฉลี่ย เพื่อแทนที่ค่าที่หายไปด้วยค่าเฉลี่ยของแต่ละคอลัมน์ได้

หมายเหตุ : เรายังต้องโหลดแพ็คเกจ Tidyr ในตัวอย่างนี้ด้วย เนื่องจากฟังก์ชัน drop_na() มาจากแพ็คเกจนั้น

ตัวอย่างที่ 3: ลบแถวที่ซ้ำกัน

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแทนที่ค่าที่หายไปด้วยค่ามัธยฐานของแต่ละคอลัมน์:

 library (dplyr)

#remove duplicate rows
new_df <- df %>% distinct(. keep_all = TRUE )

#view new data frame
new_df

  team points rebound assists
1 to 4 9 2
2 B NA 7 NA
3 C 8 6 7
4 D 6 8 6
5 E 12 NA 6
6 F 14 9 9
7 G 86 14 10
8:13:12 NA
9 I 8 11 14

โปรดทราบว่าแถวที่สองถูกลบออกจากกรอบข้อมูลเนื่องจากแต่ละค่าในแถวที่สองซ้ำกับค่าในแถวแรก

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

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

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

วิธีจัดกลุ่มและสรุปข้อมูลใน R
วิธีสร้างตารางสรุปใน R
วิธีลบแถวที่มีค่าหายไปใน R

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

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