2013-07-21 111 views
0

我试图完全在R中计算w/w增长率。我可以使用excel或用ruby进行预处理,但这不是重点。R每日时间序列数据周上一周的增长率计算

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但有相同的有用的想法。

回答

0

更新:答案与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') 

任何更好的解决方案那里?