วิธีรวมเฟรมข้อมูลในหลายคอลัมน์โดยใช้ dplyr


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

 library (dplyr)

left_join(df1, df2, by=c(' x1 '=' x2 ', ' y1 '=' y2 '))

ไวยากรณ์เฉพาะนี้จะดำเนินการรวมด้านซ้ายโดยมีเงื่อนไขต่อไปนี้เป็นจริง:

  • ค่าในคอลัมน์ x1 ของ df1 ตรงกับค่าในคอลัมน์ x2 ของ df2
  • ค่าของคอลัมน์ y1 ของ df1 สอดคล้องกับค่าของคอลัมน์ y2 ของ df2

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

ตัวอย่าง: รวมหลายคอลัมน์โดยใช้ dplyr

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

 #define first data frame
df1 = data. frame (team=c('A', 'A', 'B', 'B'),
                 pos=c('G', 'F', 'F', 'G'),
                 dots=c(18, 22, 19, 14))

df1

  team pos points
1 AG 18
2 AF 22
3 BF 19
4 BG 14

#define second data frame
df2 = data. frame (team_name=c('A', 'A', 'B', 'C', 'C'),
                 position=c('G', 'F', 'F', 'G', 'F'),
                 assists=c(4, 9, 8, 6, 5))

df2

  team_name position assists
1 GA 4
2 AF 9
3 BF 8
4 CG 6
5 CF 5

เราสามารถใช้ไวยากรณ์ต่อไปนี้ใน dplyr เพื่อดำเนินการรวมด้านซ้ายโดยยึดตามสองคอลัมน์:

 library (dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c(' team '=' team_name ', ' pos '=' position '))

#view result
df3

  team pos points assists
1 AG 18 4
2 AF 22 9
3 BF 19 8
4 BG 14 NA

กรอบข้อมูลผลลัพธ์ประกอบด้วยแถวทั้งหมดจาก df1 และเฉพาะแถวจาก df2 ซึ่งค่าทีมและตำแหน่งตรงกัน

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

 library (dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c(' team ', ' position '))

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

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

วิธีเข้าร่วมซ้ายใน R
วิธีการเข้าร่วมที่ถูกต้องใน R
วิธีการเข้าร่วมภายในใน R
วิธีการรวมภายนอกใน R

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

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