วิธีผสานหลายเฟรมข้อมูลใน r (พร้อมตัวอย่าง)


คุณสามารถใช้หนึ่งในสองวิธีเพื่อผสานหลายเฟรมข้อมูลใน R:

วิธีที่ 1: ใช้ Base R

 #put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)

วิธีที่ 2: ใช้ Tidyverse

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
df_list %>% reduce(full_join, by=' variable_name ')

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

วิธีที่ 1: รวมหลายเฟรมข้อมูลโดยใช้ Base R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R:

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

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

 #put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)  

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

โปรดทราบว่าแต่ละค่า “id” จากแต่ละบล็อกข้อมูลดั้งเดิมจะรวมอยู่ในบล็อกข้อมูลสุดท้าย

วิธีที่ 2: รวมหลายเฟรมข้อมูลโดยใช้ Tidyverse

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R:

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อรวมเฟรมข้อมูลทั้งหมดโดยใช้ฟังก์ชันจาก Tidyverse ซึ่งเป็นชุดของแพ็คเกจที่ออกแบบมาสำหรับวิทยาศาสตร์ข้อมูลใน R:

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
df_list %>% reduce(full_join, by=' id ')

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

โปรดทราบว่ากรอบข้อมูลสุดท้ายตรงกับกรอบข้อมูลที่เราสร้างขึ้นโดยใช้วิธีแรก

หมายเหตุ : วิธี Tidyverse จะเร็วขึ้นอย่างเห็นได้ชัดหากคุณทำงานกับเฟรมข้อมูลขนาดใหญ่มาก

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

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

วิธีผสานเฟรมข้อมูลตามหลายคอลัมน์ใน R
วิธีซ้อนคอลัมน์ data frame ใน R
วิธีใช้ anti_join ใน R

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

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