R根据每日时间序列数据计算每周增长率

R根据每日时间序列数据计算每周增长率,r,time-series,plyr,R,Time Series,Plyr,我试图完全用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 我想按“类型”进行分解,我需要将日期类型列总结为周。然后计算每周的增长 我想我需要使用一个自定义函数来确定一个日期是否在给定的一

我试图完全用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
我想按“类型”进行分解,我需要将日期类型列总结为周。然后计算每周的增长

我想我需要使用一个自定义函数来确定一个日期是否在给定的一周内

然后,使用
diff
找到增长b/w周除以前一周

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


这是一个非常有用的想法。

更新:用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')

df_net对于最后一部分,如果您想计算增长率,可以获取日志,然后使用diff,默认参数为lag=1(previos week)和difference=1(first difference):

df\u每周日志
df_weekly_log <- log(df_weekly)
gr <- diff(df_weekly_log , lag = 1, differences = 1)