Pada dasarnya, saya memiliki kumpulan data dengan variabel yang menunjukkan grup, tanggal dan nilai variabel. Saya perlu mengambil selisih antara nilai dan nilai akhir tahun sebelumnya per kelompok. Karena datanya seimbang, saya mencoba melakukannya dengan dplyr::lag
, memasukkan lag berdasarkan bulan pengamatan:
x <- x %>% group_by(g) %>% mutate(y = v - lag(v, n=month(d))
Namun hal ini tidak berhasil.
Hasilnya seharusnya:
Kumpulan data tiruan:
x <- data.frame('g'=c('B','B','B','C','A','A','A','A','A','A'),'d'=c('2018-11-30', '2018-12-31','2019-01-31','2019-12-31','2016-12-31','2017-11-30','2017-12-31','2018-12-31','2019-01-31','2019-02-28'),'v'=c(300,200,250,100,400,150,200,500,400,500))
Variabel yang diinginkan:
y <- c(NA,NA,-50,NA,NA,-250,-200,300,-100,0)
Kumpulan data baru:
cbind(x,y)
year component of the date - 1
untuk mendapatkan tahun sebelumnya, dan 2) menggunakanmax()
untuk mendapatkan akhir tahun. - person FannieY   schedule 05.12.2019