Я хочу создать var3
с использованием лага (dplyr
пакет), но он должен соответствовать году и идентификатору. Я имею в виду, что лаг должен принадлежать соответствующему ID. Набор данных похож на несбалансированную панель.
YEAR ID VARS
2010 1 -
2011 1 -
2012 1 -
2010 2 -
2011 2 -
2012 2 -
2010 3 -
...
Моя проблема похожа на следующий вопрос / сообщение, но сгруппированы по двум категориям:
dplyr: lead () и лаг () неверно при использовании с group_by ()
Я безуспешно пытался расширить решение (получаю NA
s).
Попытка №1:
data %>%
group_by(YEAR,ID) %>%
summarise(var1 = ...
var2 = ...
var3 = var1 - dplyr::lag(var2))
)
Попытка №2:
data %>%
group_by(YEAR,ID) %>%
summarise(var1 = ...
var2 = ...
gr = sprintf(YEAR,ID)
var3 = var1 - dplyr::lag(var2, order_by = gr))
)
Минимальный пример:
MyData <-
data.frame(YEAR = rep(seq(2010,2014),5),
ID = rep(1:5, each=5),
var1 = rnorm(n=25,mean=10,sd=3),
var2 = rnorm(n=25,mean=1,sd=1)
)
MyData %>%
group_by(YEAR,ID) %>%
summarise(var3 = var1 - dplyr::lag(var2)
)
Заранее спасибо.