在R

时间:2019-07-16 16:53:54

标签: r dplyr time-series forecasting

如果我已经为多个地点(例如销售)设置了数据,并且知道它们每周都增加10%,那么我要如何扩展呢?比如说52个星期(显示每个星期的价值) ?

我以前会在Excel中使用公式执行此操作,以将日期增加7天,然后将每个位置的前一周增加10%。我在时间序列分析中有些猜测-我确实查看了tsibble和其他一些预测软件包-但找不到任何可以为每周设定的增量提供额外数据的东西。

我提供了一个示例,说明以下现有周的数据情况。

期望的结果将与下面的现有数据相同,但每个位置只需再延长52周,而不是3周。

library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.4.4
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(reprex)
#> Warning: package 'reprex' was built under R version 3.4.4

ex_data <- 
tibble::tribble(
  ~location,       ~date, ~sales,
         1L, "5/11/2019",     50,
         2L, "5/11/2019",     45,
         3L, "5/11/2019",     35,
         4L, "5/11/2019",     20,
         5L, "5/11/2019",     15,
         1L, "5/18/2019",     55,
         2L, "5/18/2019",   49.5,
         3L, "5/18/2019",   38.5,
         4L, "5/18/2019",     22,
         5L, "5/18/2019",   16.5,
         1L, "5/25/2019",   60.5,
         2L, "5/25/2019",  54.45,
         3L, "5/25/2019",  42.35,
         4L, "5/25/2019",   24.2,
         5L, "5/25/2019",  18.15
  )

1 个答案:

答案 0 :(得分:0)

使用dplyr,您可以首先使用expand.grid创建整个数据框,包括带有repseq的日期,然后计算预测值。

df <- expand.grid(location = c("a", "b", "c", "d"), 
                  week = seq(0, 51, 1)) %>%
  mutate(date = rep(seq(as.Date("5/11/2019", "%m/%d/%Y"), 
                        as.Date("5/06/2020", "%m/%d/%Y"), 
                        by = "1 week" ), each = 4)) %>%
  mutate(value = c(5, 10, 15, 20)) %>%
  mutate(fc_value = value*(1.1) ^ week)