【问题标题】:Obtain most recent value by date for each group at observation level [duplicate]在观察级别按日期获取每个组的最新值[重复]
【发布时间】:2015-12-29 12:23:50
【问题描述】:

希望我可以解释这是一种易于理解的方式。我想在观察级别获得最近日期的特定产品的价格。这应该加班。例如,我的日期从 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 中执行此操作的任何建议?

【问题讨论】:

  • 如果您使用dplyr 标记此内容,您可以在此处使用lag,如df %>% arrange(as.Date(dates)) %>% group_by(group) %>% mutate(res = lag(price))。我敢肯定这个有很多骗子。

标签: r group-by dplyr plyr


【解决方案1】:

这可以通过以下 dplyr 函数的组合来实现

df %>% 
  group_by(group) %>% 
  arrange(dates)  %>% 
  mutate(answer = lag(price, 1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多