วิธีคำนวณผลรวมสะสมต่อกลุ่มใน 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

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

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