โดยพื้นฐานแล้ว ฉันมีชุดข้อมูลที่มีตัวแปรระบุกลุ่ม วันที่ และค่าของตัวแปร ฉันจำเป็นต้องหาผลต่างระหว่างมูลค่ากับมูลค่าสิ้นปีก่อนหน้าต่อกลุ่ม เนื่องจากข้อมูลมีความสมดุล ฉันจึงพยายามทำเช่นนั้นด้วย dplyr::lag
โดยแทรกความล่าช้าตามเดือนของการสังเกต:
x <- x %>% group_by(g) %>% mutate(y = v - lag(v, n=month(d))
อย่างไรก็ตามสิ่งนี้ไม่ได้ผล
ผลลัพธ์ควรเป็น:
ชุดข้อมูลจำลอง:
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))
ตัวแปรที่ต้องการ:
y <- c(NA,NA,-50,NA,NA,-250,-200,300,-100,0)
ชุดข้อมูลใหม่:
cbind(x,y)
year component of the date - 1
เพื่อรับปีก่อนหน้า และ 2) ใช้max()
เพื่อรับสิ้นปี - person FannieY   schedule 05.12.2019