วิธีการคำนวณออฟเซ็ตต่อกลุ่มโดยใช้ dplyr


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อคำนวณค่าที่เลื่อนกลุ่มใน R โดยใช้แพ็คเกจ dplyr :

 df %>%
  group_by(var1) %>%
  mutate(lag1_value = lag(var2, n= 1 , order_by=var1))

หมายเหตุ : ฟังก์ชัน mutate() จะเพิ่มตัวแปรใหม่ให้กับกรอบข้อมูลที่มีค่าล่าช้า

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

ตัวอย่าง: คำนวณค่าที่เลื่อนตามกลุ่มโดยใช้ dplyr

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ที่แสดงยอดขายของร้านค้าสองแห่งที่แตกต่างกันในแต่ละวัน:

 #create data frame
df <- data. frame (store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'),
                 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view data frame
df

  blind sales
1 to 7
2 B 12
3 to 10
4 B 9
5 to 9
6 B 11
7 to 18
8 B 23

เราสามารถใช้โค้ดต่อไปนี้เพื่อสร้างคอลัมน์ใหม่ที่แสดงมูลค่าการขายที่ล่าช้าสำหรับแต่ละร้านค้า:

 library (dplyr)

#calculate lagged sales by group
df %>%
  group_by(store) %>%
  mutate(lag1_sales = lag(sales, n= 1 , order_by=store))

# A tibble: 8 x 3
# Groups: store[2]
  store sales lag1_sales
1 to 7 NA
2 B 12 NA
3 to 10 7
4 B 9 12
5 to 9 10
6 B 11 9
7 to 18 9
8 B 23 11

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ค่าแรกของ lag1_sales คือ NA เนื่องจากไม่มีค่าก่อนหน้าสำหรับยอดขายของร้านค้า A
  • ค่าที่สองของ lag1_sales คือ NA เนื่องจากไม่มีค่าก่อนหน้าสำหรับยอดขายของร้านค้า B
  • ค่าที่สามของ lag1_sales คือ 7 เนื่องจากเป็นมูลค่าการขายก่อนหน้าของร้านค้า A
  • ค่าที่สี่ของ lag1_sales คือ 12 เนื่องจากเป็นมูลค่าการขายก่อนหน้าของร้านค้า B

และอื่นๆ

โปรดทราบว่าคุณยังสามารถเปลี่ยนจำนวนความล่าช้าที่ใช้ได้โดยการเปลี่ยนค่า n ในฟังก์ชัน lag()

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการคำนวณทั่วไปอื่นๆ ใน R:

วิธีการคำนวณผลรวมต่อเนื่องโดยใช้ dplyr
วิธีคำนวณผลรวมตามกลุ่มใน R
วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R

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

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