วิธีคำนวณผลรวมสะสมต่อกลุ่มใน r
คุณสามารถใช้วิธีต่อไปนี้เพื่อคำนวณผลรวมสะสมต่อกลุ่มใน R:
วิธีที่ 1: ใช้ Base R
df$cum_sum <- ave(df$values_var, df$group_var, FUN=cumsum)
วิธีที่ 2: ใช้ dplyr
library (dplyr)
df %>% group_by(group_var) %>% mutate(cum_sum = cumsum(values_var))
วิธีที่ 3: ใช้ data.table
library (data.table)
setDT(df)[, cum_sum := cumsum(values_var), group_var]
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้ใน R:
#create data frame df <- data. frame (store=rep(c(' A ', ' B ', ' C '), each= 4 ), sales=c(3, 4, 4, 2, 5, 8, 9, 7, 6, 8, 3, 2)) #view data frame df blind sales 1 to 3 2 to 4 3 to 4 4 to 2 5 B 5 6 B 8 7 B 9 8 B 7 9 C 6 10 C 8 11 C 3 12 C 2
ตัวอย่างที่ 1: คำนวณผลรวมสะสมต่อกลุ่มโดยใช้ฐาน R
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชันฐานข้อมูล R ave() เพื่อคำนวณผลรวมยอด ขาย สะสม โดยจัดกลุ่มตาม ร้านค้า :
#add column to show cumulative sales by store df$cum_sales <- ave(df$sales, df$store, FUN=cumsum) #view updated data frame df store sales cum_sales 1 to 3 3 2 to 4 7 3 to 4 11 4 to 2 13 5 B 5 5 6 B 8 13 7 B 9 22 8 B 7 29 9 C 6 6 10 C 8 14 11 C 3 17 12 C 2 19
คอลัมน์ใหม่ที่เรียกว่า cum_sales จะแสดงผลรวมยอด ขาย สะสม โดยจัดกลุ่มตาม ร้านค้า
ตัวอย่างที่ 2: คำนวณผลรวมสะสมต่อกลุ่มโดยใช้ dplyr
รหัสต่อไปนี้สาธิตวิธีการใช้ฟังก์ชันต่างๆ จากแพ็คเกจ dplyr ใน R เพื่อคำนวณผลรวมของ ยอดขาย ที่จัดกลุ่มตาม ร้านค้า :
library (dplyr) #add column to show cumulative sales by store df %>% group_by(store) %>% mutate(cum_sales = cumsum(sales)) #view updated data frame df # A tibble: 12 x 3 # Groups: store [3] store sales cum_sales 1 to 3 3 2 to 4 7 3 to 4 11 4 to 2 13 5 B 5 5 6 B 8 13 7 B 9 22 8 B 7 29 9 C 6 6 10 C 8 14 11 C 3 17 12 C 2 19
คอลัมน์ใหม่ที่เรียกว่า cum_sales จะแสดงผลรวมยอด ขาย สะสม โดยจัดกลุ่มตาม ร้านค้า
ตัวอย่างที่ 3: คำนวณผลรวมสะสมตามกลุ่มโดยใช้ data.table
รหัสต่อไปนี้สาธิตวิธีใช้ฟังก์ชันต่างๆ จากแพ็คเกจ data.table ใน R เพื่อคำนวณผลรวมยอด ขายสะสม โดยจัดกลุ่มตาม ร้านค้า :
library (data.table) #add column to show cumulative sales by store setDT(df)[, cum_sales := cumsum(sales), store] #view updated data frame df store sales cum_sales 1: A 3 3 2: A 4 7 3: A 4 11 4: A 2 13 5: B 5 5 6: B 8 13 7: B 9 22 8: B 7 29 9: C 6 6 10: C 8 14 11: C 3 17 12: C 2 19
คอลัมน์ใหม่ที่เรียกว่า cum_sales จะแสดงผลรวมยอด ขาย สะสม โดยจัดกลุ่มตาม ร้านค้า
หมายเหตุ : ทั้งสามวิธีให้ผลลัพธ์ที่เหมือนกัน อย่างไรก็ตาม เมธอด dplyr และ data.table มีแนวโน้มที่จะเร็วกว่าเมื่อทำงานกับเฟรมข้อมูลขนาดใหญ่มาก
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการคำนวณทั่วไปอื่นๆ ใน R:
วิธีคำนวณผลรวมตามกลุ่มใน R
วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R
วิธีการคำนวณค่าเบี่ยงเบนมาตรฐานตามกลุ่มใน R