Cara menghitung offset per grup menggunakan dplyr


Anda dapat menggunakan sintaks berikut untuk menghitung nilai pergeseran grup di R menggunakan paket dplyr :

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

Catatan : Fungsi mutate() menambahkan variabel baru ke bingkai data yang berisi nilai tertunda.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Hitung nilai yang digeser berdasarkan grup menggunakan dplyr

Misalkan kita memiliki kerangka data berikut di R yang menunjukkan penjualan yang dilakukan oleh dua toko berbeda pada hari berbeda:

 #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

Kita dapat menggunakan kode berikut untuk membuat kolom baru yang menampilkan nilai penjualan tertinggal untuk setiap toko:

 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

Berikut cara menafsirkan hasilnya:

  • Nilai lag1_sales yang pertama adalah NA karena sebelumnya tidak ada nilai penjualan toko A.
  • Nilai lag1_sales yang kedua adalah NA karena sebelumnya tidak ada nilai penjualan toko B.
  • Nilai lag1_sales yang ketiga adalah 7 karena merupakan nilai penjualan toko A sebelumnya.
  • Nilai lag1_sales yang keempat adalah 12 karena merupakan nilai penjualan toko B sebelumnya.

Dan seterusnya.

Perhatikan bahwa Anda juga dapat mengubah jumlah lag yang digunakan dengan mengubah nilai n dalam fungsi lag() .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan penghitungan umum lainnya di R:

Cara menghitung jumlah berjalan menggunakan dplyr
Cara menghitung jumlah berdasarkan kelompok di R
Cara menghitung mean per grup di R

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *