Я пытаюсь создать две новые переменные, используя функции dplyr/tidyr, используя данные из предыдущих, но связанных строк. В моем примере у меня есть data.frame с данными для ID, YEAR и AMOUNT (см. Ниже).R dplyr/tidyr: «мутировать» новые столбцы с данными других наблюдений
ID YEAR AMOUNT
A 2000 4
B 2000 4
A 2001 2
B 2001 3
A 2002 3
B 2002 1
Я хочу создать последние два столбца динамически (см ниже) с использованием dplyr/tidyr (я нашел способ делать это регулярно, но мне было бы интересно узнать, как сделать это в последней версии в dplyr/tidyr).
ID YEAR AMOUNT YtY_VARIANCE Y_VARIANCE
A 2000 4 0 0
B 2000 4 0 0
A 2001 2 -2 -2
B 2001 3 -1 -1
A 2002 3 +1 -1
B 2002 1 -2 -3
Где YtY_VARIANCE получается путем вычитания суммы из предыдущего года и Y_VARIANCE получается путем вычитания суммы из первого года (всегда).
я ожидал бы такой код:
raw_data %>%
group_by(ID, YEAR) # Not even sure if that's required?!?
mutate(YtY_VARIANCE = xxx(), Y_VARIANCE = yyy())
Что должно быть ххх и ууу ?! Возможно ли это?
Любой может мне ответить или ответить?
Заранее благодарен!
plus один. Вы также можете сделать 'YtY_VARIANCE = pmax (AMOUNT-lag (AMOUNT), 0, na.rm = TRUE)' и 'Y_VARIANCE = AMOUNT-first (AMOUNT)'. –
@MatthewPlourde Спасибо, я попробовал строку 'pmax', но он дает' [1] 0 0 0 0 1 0' Я использую 'dplyr_0.4.1.9000' – akrun