2015-12-29 3 views
1

Надеюсь, я могу объяснить, что это способ, который легко понять. Я хочу получить цену на конкретный продукт за самую последнюю дату на уровне наблюдения. Это должно продолжаться сверхурочно. Например, у меня есть даты с 2014-2015 гг. ... «самая последняя цена» должна меняться день ото дня с течением времени.Получить последнее последнее значение по дате для каждой группы на уровне наблюдения

В качестве слов требуемый ответ всегда является самым последним значением, дата которого меньше даты текущего наблюдения.

df = data.frame(dates = c('2015-08-09','2015-08-10','2015-08-15','2015-07-31','2015-09-09','2015-09-12','2015-09-19'), group=c(rep("A",5),"B","B"), price=c(5,15,3,24,10,13,2), desired_answer = c(24,5,15,NA,3,NA,13)) 

Любые советы о том, как это сделать в R?

+0

Если помечено это с 'dplyr', вы можете просто использовать' lag' здесь, как и в 'ДФ%>% организовать (как . Дата (даты))%>% group_by (group)%>% mutate (res = lag (price)) '. Я уверен, что для этого есть много обманов. –

ответ

2

Это может быть достигнуто с помощью комбинации функций dplyr следующим

df %>% 
    group_by(group) %>% 
    arrange(dates) %>% 
    mutate(answer = lag(price, 1)) 
Смежные вопросы