ตอบ: วิธีใช้ aggregate() และไม่ลบแถวที่มี na
คุณสามารถใช้ฟังก์ชัน Aggregate() ใน R เพื่อคำนวณสถิติสรุปสำหรับตัวแปรในกรอบข้อมูล
ตามค่าเริ่มต้น หากฟังก์ชัน Aggregate() พบแถวในกรอบข้อมูลที่มีค่า NA ตั้งแต่หนึ่งค่าขึ้นไป ฟังก์ชันจะลบแถวนั้นออกเมื่อทำการคำนวณ
ซึ่งอาจนำไปสู่ผลลัพธ์ที่ไม่คาดคิดเมื่อทำการคำนวณ
เพื่อหลีกเลี่ยงพฤติกรรมนี้ คุณสามารถใช้อาร์กิวเมนต์ na.action=NULL ในฟังก์ชัน Aggregate() ได้
ตัวอย่างต่อไปนี้แสดงวิธีการใช้อาร์กิวเมนต์นี้ในทางปฏิบัติ
ตัวอย่าง: ใช้ aggate() ใน R และอย่าลบบรรทัดที่มี NA
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งแสดงคะแนนและแอสซิสต์ของผู้เล่นบาสเกตบอลจากทีมต่างๆ:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'), points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18), assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA)) #view data frame df team points assists 1 to 5 NA 2 to 9 4 3 to 12 4 4 to 14 5 5 A 14 3 6 B 13 6 7 B 10 8 8 B 6 4 9 C 15 10 10 C 18 NA
ตอนนี้ สมมติว่าเราพยายามใช้ฟังก์ชัน Aggregate() เพื่อคำนวณผลรวมของ คะแนน และ การช่วยเหลือ จัดกลุ่มตาม ทีม :
#attempt to calculate sum of points and assists, grouped by team aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE ) team points assists 1 A 49 16 2 B 29 18 3 C 15 10
ผลลัพธ์ดูเหมือนจะแสดงผลรวมของคะแนนและการช่วยเหลือต่อทีม แต่แถวที่มีค่า NA จะถูกลบออกจริง ๆ เมื่อทำการคำนวณเหล่านี้
เราสามารถยืนยันสิ่งนี้ได้โดยดูจากกรอบข้อมูลดั้งเดิมและเห็นว่า ทีม C มีค่าสองค่าในคอลัมน์ คะแนน :
- 15
- 18
ดังนั้นทีม C น่าจะมีทั้งหมด 33 แต้ม แต่ผลออกมาแค่ 15 แต้ม
เนื่องจากแถวที่มีค่า คะแนน 18 มีค่า NA ในคอลัมน์ ช่วยเหลือ ซึ่งหมายความว่าแถวนี้ไม่ได้ใช้จริงในการคำนวณผลรวมคะแนนของทีมเทียบกับ
เพื่อให้แน่ใจว่าแถวที่มีค่า NA จะไม่ถูกลบออกเมื่อทำการคำนวณ เราจำเป็นต้องใช้อาร์กิวเมนต์ na.action=NULL ดังนี้:
#calculate sum of points and assists, grouped by team (don't drop NA rows) aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL) team points assists 1 A 54 16 2 B 29 18 3 C 33 10
โปรดทราบว่าฟังก์ชัน Aggregate() จะส่งคืนผลรวมของค่า คะแนน สำหรับทีม C เท่ากับ 33 อย่างถูกต้องในครั้งนี้
หมายเหตุ : อาร์กิวเมนต์ na.rm=TRUE ระบุว่าควร ละเว้น ค่า NA เมื่อทำการคำนวณในคอลัมน์ใดคอลัมน์หนึ่ง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีใช้ฟังก์ชัน summary() ใน R
วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R
วิธีการคำนวณสถิติเชิงพรรณนาใน R