По сути, у меня есть набор данных с переменными, указывающими группу, дату и значение переменной. Мне нужно взять разницу между значением и значением на конец прошлого года для каждой группы. Поскольку данные сбалансированы, я пытался сделать это с помощью 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