วิธีทำ vlookup (คล้ายกับ excel) ใน r
ฟังก์ชัน VLOOKUP ใน Excel ช่วยให้คุณค้นหาค่าในตารางโดยการจับคู่ค่าในคอลัมน์
ตัวอย่างเช่น ในสเปรดชีต Excel ต่อไปนี้ เราสามารถค้นหาชื่อทีมของผู้เล่นได้โดยใช้ VLOOKUP เพื่อจับคู่ชื่อผู้เล่นและส่งคืนทีมของผู้เล่น:
เราสามารถจำลองฟังก์ชันนี้โดยใช้ฐาน R หรือแพ็คเกจ dplyr:
ใช้ฐาน R:
merge(df1, df2, by=" merge_column ")
การใช้ dplyr:
inner_join(df1, df2, by=" merge_column ")
ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละฟังก์ชันเหล่านี้ใน R เพื่อจำลองฟังก์ชัน VLOOKUP จาก Excel
VLOOKUP โดยใช้ Base R
รหัสต่อไปนี้แสดงวิธีการดำเนินการฟังก์ชันคล้าย VLOOKUP ในฐาน R โดยใช้ฟังก์ชัน ผสาน () :
#create first data frame df1 <- data.frame(player= LETTERS [1:15], team= rep (c(' Mavs ', ' Lakers ', ' Rockets '), each =5)) #create second data frame df2 <- data.frame(player= LETTERS [1:15], points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5)) #merge the two data frames merge(df1, df2, by=" player ") player team points 1 A Mavs 14 2 B Mavs 15 3C Mavs 15 4D Mavs 16 5 E Mavs 8 6 F Lakers 9 7G Lakers 16 8 a.m. Lakers 27 9 I Lakers 30 10 J Lakers 24 11K Rockets 14 12L Rockets 19 13 M Rockets 8 14 N Rockets 6 15 O Rockets 5
โปรดทราบว่าสิ่งนี้จะส่งกลับผลลัพธ์เดียวกันกับฟังก์ชัน VLOOKUP ในตัวอย่างเบื้องต้น โปรดทราบว่าคุณสามารถระบุหลายคอลัมน์เพื่อผสานโดยใช้อาร์กิวเมนต์ by ได้
VLOOKUP โดยใช้ dplyr
library (dplyr) #create first data frame df1 <- data.frame(player= LETTERS [1:15], team= rep (c(' Mavs ', ' Lakers ', ' Rockets '), each =5)) #create second data frame df2 <- data.frame(player= LETTERS [1:15], points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5)) #merge the two data frames using inner_join inner_join(df1, df2, by=" player ") player team points 1 A Mavs 14 2 B Mavs 15 3C Mavs 15 4D Mavs 16 5 E Mavs 8 6 F Lakers 9 7G Lakers 16 8 a.m. Lakers 27 9 I Lakers 30 10 J Lakers 24 11K Rockets 14 12L Rockets 19 13 M Rockets 8 14 N Rockets 6 15 O Rockets 5
โปรดทราบว่าสิ่งนี้จะส่งกลับผลลัพธ์เดียวกันกับฟังก์ชัน VLOOKUP ใน Excel โปรดทราบว่าคุณสามารถระบุหลายคอลัมน์เพื่อผสานโดยใช้อาร์กิวเมนต์ by ได้
นอกจากนี้ หากคุณต้องการให้แสดงรายการที่ไม่ตรงกัน คุณสามารถใช้ฟังก์ชัน left_join ได้
แหล่งข้อมูลเพิ่มเติม
วิธีการคำนวณผลรวมสะสมใน R
วิธีสร้างมาตรฐานข้อมูลใน R
วิธีเพิ่มแถวใน data frame ใน R