Dplyr: วิธีสรุปข้อมูลแต่เก็บทุกคอลัมน์
เมื่อใช้ฟังก์ชัน summarise() ใน dplyr ตัวแปรใดๆ ที่ไม่รวมอยู่ในฟังก์ชัน summarise() หรือ group_by() จะถูกลบออกโดยอัตโนมัติ
อย่างไรก็ตาม คุณสามารถใช้ฟังก์ชัน mutate() เพื่อสรุปข้อมูลโดยที่ยังคงรักษาคอลัมน์ทั้งหมดในกรอบข้อมูลไว้ได้
ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ
ตัวอย่าง: สรุปข้อมูลแต่เก็บคอลัมน์ทั้งหมดโดยใช้ dplyr
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
#create data frame df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 3 ), points=c(4, 9, 8, 12, 15, 14, 29, 30, 22), assists=c(3, 3, 2, 5, 8, 10, 4, 5, 12)) #view data frame df team points assists 1 to 4 3 2 to 9 3 3 to 8 2 4 B 12 5 5 B 15 8 6 B 14 10 7 C 29 4 8 C 30 5 9 C 22 12
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสรุป คะแนน เฉลี่ยต่อ ทีม :
library (dplyr) #summarize mean points values by team df %>% group_by(team) %>% summarize(mean_pts = mean(points)) # A tibble: 3 x 2 team mean_pts 1 to 7 2 B 13.7 3 C 27
คอลัมน์ชื่อ Mean_pts จะแสดงคะแนนเฉลี่ยที่แต่ละทีมทำได้
จากผลลัพธ์เราจะเห็นได้ว่า:
- คะแนนเฉลี่ยที่ผู้เล่นของทีม A ทำได้คือ 7
- คะแนนเฉลี่ยที่ผู้เล่นของทีม B ทำได้คือ 13.7
- คะแนนเฉลี่ยที่ผู้เล่นของทีม C ทำได้คือ 27
อย่างไรก็ตาม สมมติว่าเราต้องการเก็บคอลัมน์อื่นๆ ทั้งหมดจากกรอบข้อมูลดั้งเดิม
เราสามารถใช้ไวยากรณ์ต่อไปนี้ร่วมกับฟังก์ชัน mutate() เพื่อทำสิ่งนี้:
library (dplyr) #summarize mean points values by team and keep all columns df %>% group_by(team) %>% mutate(mean_pts = mean(points)) %>% A group() # A tibble: 9 x 4 team points assists mean_pts 1 to 4 3 7 2 to 9 3 7 3 to 8 2 7 4 B 12 5 13.7 5 B 15 8 13.7 6 B 14 10 13.7 7 C 29 4 27 8 C 30 5 27 9 C 22 12 27
เมื่อใช้ฟังก์ชัน mutate() เราสามารถสร้างคอลัมน์ใหม่ชื่อ Mean_pts ซึ่งจะสรุปคะแนนเฉลี่ยต่อทีมโดยยังคงรักษาคอลัมน์อื่นๆ ทั้งหมดจากกรอบข้อมูลเดิม
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่น ๆ ใน dplyr:
dplyr: วิธีกลายพันธุ์ตัวแปรหากคอลัมน์มีสตริง
dplyr: วิธีเปลี่ยนระดับแฟคเตอร์โดยใช้ mutate()
dplyr: วิธีเพิ่มหลายคอลัมน์