วิธีคำนวณสถิติสรุปตามกลุ่มใน r


มีสองวิธีพื้นฐานในการคำนวณสถิติสรุปกลุ่มใน R:

วิธีที่ 1: ใช้ tapply() จาก Base R

 tapply(df$value_col, df$group_col, summary)

วิธีที่ 2: ใช้ group_by() จากแพ็คเกจ dplyr

 library (dplyr)

df %>%
  group_by (group_col) %>% 
  summarize (min = min(value_col),
            q1 = quantile(value_col, 0.25 ),
            median = median(value_col),
            mean = mean(value_col),
            q3 = quantile(value_col, 0.75 ),
            max = max(value_col))

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

วิธีที่ 1: ใช้ tapply() จาก Base R

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน tapply() ใน R เพื่อคำนวณสถิติสรุปตามกลุ่ม:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(99, 68, 86, 88, 95, 74, 78, 93),
                 assists=c(22, 28, 31, 35, 34, 45, 28, 31),
                 rebounds=c(30, 28, 24, 24, 30, 36, 30, 29))

#calculate summary statistics of 'points' grouped by 'team'
tapply(df$points, df$team, summary)

$A
   Min. 1st Qu. Median Mean 3rd Qu. Max. 
  68.00 81.50 87.00 85.25 90.75 99.00 

$B
   Min. 1st Qu. Median Mean 3rd Qu. Max. 
   74.0 77.0 85.5 85.0 93.5 95.0 

วิธีที่ 2: ใช้ group_by() จากแพ็คเกจ dplyr

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน group_by() และ summary() ในแพ็คเกจ dplyr เพื่อคำนวณสถิติสรุปตามกลุ่ม:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(99, 68, 86, 88, 95, 74, 78, 93),
                 assists=c(22, 28, 31, 35, 34, 45, 28, 31),
                 rebounds=c(30, 28, 24, 24, 30, 36, 30, 29))

#calculate summary statistics of 'points' grouped by 'team'
df %>%
  group_by (team) %>% 
  summarize (min = min(points),
            q1 = quantile(points, 0.25 ),
            median = median(points),
            mean = mean(points),
            q3 = quantile(points, 0.75 ),
            max = max(points))

# A tibble: 2 x 7
  team min q1 median mean q3 max
         
1 A 68 81.5 87 85.2 90.8 99
2 B 74 77 85.5 85 93.5 95

โปรดทราบว่าทั้งสองวิธีให้ผลลัพธ์ที่เหมือนกันทุกประการ

เป็นที่น่าสังเกตว่าวิธี dplyr น่าจะเร็วกว่าสำหรับเฟรมข้อมูลขนาดใหญ่ แต่ทั้งสองวิธีจะทำงานคล้ายกันกับเฟรมข้อมูลที่เล็กกว่า

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันการจัดกลุ่มทั่วไปอื่นๆ ใน R:

วิธีสร้างตารางความถี่ตามกลุ่มใน R
วิธีคำนวณผลรวมตามกลุ่มใน R
วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R
วิธีคำนวณผลรวมตามกลุ่มใน R

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

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