【问题标题】:R growth rate calculation week over week on daily timeseries data基于每日时间序列数据的每周 R 增长率计算
【发布时间】:2013-07-21 20:48:10
【问题描述】:

我正在尝试完全在 R 中计算 w/w 增长率。我可以使用 excel,或者使用 ruby​​ 进行预处理,但这不是重点。

data.frame 示例

        date   gpv        type
1 2013-04-01 12900 back office
2 2013-04-02 16232 back office
3 2013-04-03  10035 back office

我想根据“类型”来执行此操作,并且需要将日期类型列包装成几周。然后计算每周增长。

我认为我需要 ddply 以按周分组 - 使用自定义函数确定日期是否在给定周内?

然后,在此之后,使用diff 并找到上周除以前一周的黑白增长。

然后我将绘制周/周增长,或使用 data.frame 将其导出。

这是closed,但也有同样有用的想法。

【问题讨论】:

    标签: r time-series plyr


    【解决方案1】:

    更新:用 ggplot 回答:

    下同,用这个代替plot

    ggplot(data.frame(week=seq(length(gr)), gr), aes(x=week,y=gr*100)) + geom_point() + geom_smooth(method='loess') + coord_cartesian(xlim = c(.95, 10.05)) + scale_x_discrete() + ggtitle('week over week growth rate, from Apr 1') + ylab('growth rate %')
    

    (旧的,正确的答案,但只使用情节)

    嗯,我想是这样的:

    df_net <- ddply(df_all, .(date), summarise, gpv=sum(gpv))  # df_all has my daily data.
    df_net$week_num <- strftime(df_net$date, "%U") #get the week # to 'group by' in ddply
    df_weekly <- ddply(df_net, .(week_num), summarize, gpv=sum(gov))
    
    gr <- diff(df_weekly$gpv)/df_weekly$gpv[-length(df_weekly$gpv)]  #seems correct, but this I don't understand via: http://stackoverflow.com/questions/15356121/how-to-identify-the-virality-growth-rate-in-time-series-data-using-r
    plot(gr, type='l', xlab='week #', ylab='growth rate percent', main='Week/Week Growth Rate')
    

    还有更好的解决方案吗?

    【讨论】:

      【解决方案2】:

      对于最后一部分,如果你想计算增长率,你可以取日志,然后使用 diff,默认参数 lag = 1(前一周),difference = 1(第一个差异):

      df_weekly_log <- log(df_weekly)
      gr <- diff(df_weekly_log , lag = 1, differences = 1)
      

      后者是近似值,适用于小的差异。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2021-08-07
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 2020-03-31
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多