ตอบ: วิธีใช้ 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

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

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